Compartir a través de


Acceso a datos FILESTREAM con Transact-SQL

En este tema se describe cómo usar las instrucciones INSERT, UPDATE y DELETE de Transact-SQL para administrar datos FILESTREAM.

Nota:

Los ejemplos de este tema requieren la base de datos y la tabla habilitadas para FILESTREAM que se crean en Crear una base de datos FILESTREAM-Enabled y Crear una tabla para almacenar datos FILESTREAM.

Inserción de una fila que contiene datos FILESTREAM

Para agregar una fila a una tabla que admita datos FILESTREAM, use la instrucción INSERT Transact-SQL. Al insertar datos en una columna FILESTREAM, puede insertar NULL o un varbinary(max) valor.

Inserción de NULL

En el ejemplo siguiente se muestra cómo insertar NULL. Cuando el valor FILESTREAM es NULL, el motor de base de datos no crea un archivo en el sistema de archivos.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 1, NULL);
GO

Insertar un registro de Zero-Length

En el ejemplo siguiente se muestra cómo usar INSERT para crear un registro de longitud cero. Esto es útil para cuando quiera obtener un identificador de archivo, pero manipulará el archivo mediante las API de Win32.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 2, 
      CAST ('' as varbinary(max)));
GO

Crear un archivo de datos

En el ejemplo siguiente se muestra cómo usar INSERT para crear un archivo que contenga datos. El motor de base de datos convierte la cadena Seismic Data en un varbinary(max) valor. FILESTREAM crea el archivo de Windows si aún no existe. A continuación, los datos se agregan al archivo de datos.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 3, 
      CAST ('Seismic Data' as varbinary(max)));
GO

Al seleccionar todos los datos del Archive. dbo.Records table, los resultados son similares a los resultados que se muestran en la siguiente tabla. Sin embargo, la Id columna contendrá GUIDs diferentes.

ID Número de serie Reanudar
C871B90F-D25E-47B3-A560-7CC0CA405DAC 1 NULL
F8F5C314-0559-4927-8FA9-1535EE0BDF50 2 0x
7F680840-B7A4-45D4-8CD5-527C44D35B3F 3 0x536569736D69632044617461

Actualización de datos FILESTREAM

Puede usar Transact-SQL para actualizar los datos en el archivo del sistema de archivos; Aunque es posible que no quiera hacerlo cuando tenga que transmitir grandes cantidades de datos a un archivo.

En el ejemplo siguiente se reemplaza cualquier texto del registro del archivo por el texto Xray 1.

UPDATE Archive.dbo.Records
SET [Chart] = CAST('Xray 1' as varbinary(max))
WHERE [SerialNumber] = 2;

Eliminación de datos FILESTREAM

Al eliminar una fila que contiene un campo FILESTREAM, también se eliminan sus archivos del sistema de archivos subyacentes. La única manera de eliminar una fila y, por tanto, el archivo es usar la instrucción DELETE de Transact-SQL.

En el ejemplo siguiente se muestra cómo eliminar una fila y sus archivos del sistema de archivos asociados.

DELETE Archive.dbo.Records
WHERE SerialNumber = 1;
GO

Al seleccionar todos los datos de la dbo.Archive tabla, la fila ha desaparecido. Ya no puede usar el archivo asociado.

Nota:

El recolector de elementos no utilizados de FILESTREAM quita los archivos subyacentes.

Véase también

Habilitar y configurar FILESTREAM
Evitar conflictos con operaciones de base de datos en aplicaciones FILESTREAM