Administrar datos FILESTREAM usando Transact-SQL
En este tema se describe cómo utilizar las instrucciones INSERT, DELETE y UPDATE de Transact-SQL para administrar los datos de FILESTREAM.
Nota
Los ejemplos de este tema requieren la tabla y la base de datos habilitada para FILESTREAM que se crean en Cómo crear una base de datos habilitada para FILESTREAM y Cómo crear una tabla para almacenar datos FILESTREAM.
Insertar una fila que contiene datos FILESTREAM
Para agregar una fila a una tabla que admite datos FILESTREAM, utilice la instrucción de Transact-SQL INSERT. Al insertar datos en una columna FILESTREAM, se puede insertar NULL o un valor varbinary(max).
Insertar NULL
El ejemplo siguiente muestra la forma de utilizar el valor NULL. Cuando el valor FILESTREAM es NULL, 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 longitud cero
En el siguiente ejemplo se muestra cómo utilizar INSERT para crear un registro de longitud cero. Esto es útil cuando se desea obtener un identificador de archivo, pero el archivo se va a tratar con las API de Win32.
INSERT INTO Archive.dbo.Records
VALUES (newid (), 2,
CAST ('' as varbinary(max)));
GO
Crear un archivo de datos
En el siguiente ejemplo se muestra cómo utilizar INSERT para crear un archivo que contiene datos. Motor de base de datos convierte la cadena Seismic Data en un valor varbinary(max). 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
Cuando selecciona todos los datos de la tabla Archive.dbo.Records, los resultados son similares a los que se muestran en la tabla siguiente. Sin embargo, la columna Id contendrá GUID diferentes.
Id. |
SerialNumber |
Resume |
---|---|---|
C871B90F-D25E-47B3-A560-7CC0CA405DAC |
1 |
NULL |
F8F5C314-0559-4927-8FA9-1535EE0BDF50 |
2 |
0x |
7F680840-B7A4-45D4-8CD5-527C44D35B3F |
3 |
0x536569736D69632044617461 |
Actualizar datos FILESTREAM
Puede usar Transact-SQL para actualizar los datos del archivo del sistema de archivos; sin embargo, puede no ser conveniente si hay que transmitir por secuencias 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;
Eliminar datos FILESTREAM
Al eliminar una fila que contiene un campo FILESTREAM, también elimina sus archivos de sistema de archivos subyacentes. La única manera de eliminar una fila y por consiguiente el archivo, es utilizar la instrucción Transact-SQL DELETE.
El ejemplo siguiente muestra cómo eliminar una fila y sus archivos de sistema de archivo asociados.
DELETE Archive.dbo.Records
WHERE SerialNumber = 1;
GO
Al seleccionar todos los datos de la tabla dbo.Archive, la fila ya no está. Ya no puede utilizar el archivo asociado.
Nota
El recolector de elementos no utilizados de FILESTREAM quita los archivos subyacentes.