Share via


Obtener acceso a datos FILESTREAM con 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 base de datos habilitada para FILESTREAM y la tabla que se crean en crear una base de datos habilitada para FILESTREAM y Crear una tabla para almacenar datos FILESTREAM.

En este tema

  • Insertar una fila que contiene datos FILESTREAM

  • Actualizar datos FILESTREAM

  • Eliminar datos FILESTREAM

Insertar una fila que contiene datos FILESTREAM

Para agregar una fila a una tabla que admite datos FILESTREAM, use 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.

Identificador

SerialNumber

Reanudar

C871B90F-D25E-47B3-A560-7CC0CA405DAC

1

NULL

F8F5C314-0559-4927-8FA9-1535EE0BDF50

2

0x

7F680840-B7A4-45D4-8CD5-527C44D35B3F

3

0x536569736D69632044617461

[ARRIBA]

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 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;

[ARRIBA]

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.

[ARRIBA]

Vea también

Conceptos

Habilitar y configurar FILESTREAM

Evitar conflictos con operaciones de base de datos en aplicaciones FILESTREAM