Exportar (0) Imprimir
Expandir todo

Información general de FILESTREAM

Muchos datos no están estructurados, como documentos de texto, imágenes y vídeos. Estos datos no estructurados a menudo se almacenan fuera de la base de datos, independientemente de sus datos estructurados. Esta separación puede producir complejidades en la administración de datos. O bien, si los datos están asociados a almacenamiento estructurado, se pueden limitar las capacidades de transmisión por secuencias de archivo y rendimiento.

FILESTREAM integra el SQL Server Database Engine (Motor de base de datos de SQL Server) con un sistema de archivos NTFS almacenando los datos de objeto binario grande (BLOB) varbinary(max) como archivos en el sistema de archivos. Las instrucciones de Transact-SQL pueden insertar, actualizar, consultar, buscar y realizar copias de seguridad de los datos FILESTREAM. Las interfaces del sistema de archivos de Win32 proporcionan el acceso de la transmisión por secuencias a los datos.

FILESTREAM usa la memoria caché del sistema NT para almacenar en memoria caché los datos de archivos. Esto ayuda a reducir cualquier efecto que los datos FILESTREAM podrían tener en el rendimiento de Motor de base de datos. No se usa el grupo de búferes de SQL Server; por consiguiente, esta memoria está disponible para el procesamiento de consultas.

NotaNota

Los datos FILESTREAM no se cifran ni siquiera cuando está habilitado el cifrado de datos transparente.

Para un tutorial que muestra cómo usar FILESTREAM, vea Introducción al almacenamiento mediante FILESTREAM .

En SQL Server, BLOB pueden ser datos de varbinary(max) estándar que almacena los datos en tablas u objetos FILESTREAM varbinary(max) que almacenan los datos en el sistema de archivos. El tamaño y el uso de los datos determinan si debería usar el almacenamiento de base de datos o el almacenamiento del sistema de archivos. Si las condiciones siguientes son verdaderas, debería pensar en usar FILESTREAM:

  • Los objetos que se están almacenando son, por término medio, mayores de 1 MB.

  • El acceso de lectura rápido es importante.

  • Está desarrollando aplicaciones que usan un nivel intermedio para la lógica de la aplicación.

Para objetos más pequeños, el almacenamiento de BLOB varbinary(max) en la base de datos a menudo proporciona un mejor rendimiento de la transmisión por secuencias.

El almacenamiento de FILESTREAM se implementa como una columna varbinary(max) en la que los datos están almacenados como BLOB en el sistema de archivos. Los tamaños de los BLOB están limitados solo por el tamaño del volumen del sistema de archivos. La limitación varbinary(max) estándar de tamaños de archivo de 2 GB no se aplica a BLOB que están almacenados en el sistema de archivos.

Para especificar que una columna debería almacenar datos en el sistema de archivos, especifique el atributo FILESTREAM en una columna varbinary(max). Esto hace que Motor de base de datos almacene todos los datos para esa columna en el sistema de archivos pero no en el archivo de base de datos.

Los datos de FILESTREAM deben estar almacenados en los grupos de archivos FILESTREAM. Un grupo de archivos FILESTREAM es un grupo de archivos especial que contiene los directorios de sistema de archivos en lugar de los propios archivos. Estos directorios del sistema de archivos se denominan contenedores de datos. Los contenedores de datos son la interfaz entre el almacenamiento del Motor de base de datos y el almacenamiento del sistema de archivos. 

Cuando use el almacenamiento FILESTREAM, piense en lo siguiente:

  • Cuando una tabla contiene una columna FILESTREAM, cada fila debe tener un identificador de fila único distinto de NULL.

  • Los contenedores de datos FILESTREAM no pueden estar anidados.

  • Al estar usando la agrupación en clústeres de conmutación por error, los grupos de archivos FILESTREAM deben estar en recursos de disco compartido.

  • Los grupos de archivos FILESTREAM pueden estar en volúmenes comprimidos.

Seguridad integrada

En SQL Server, los datos de FILESTREAM se protegen de la misma manera que los demás datos: concediendo permisos en el nivel de tabla o columna. Si un usuario tiene permiso para la columna FILESTREAM de una tabla, el usuario puede abrir los archivos asociados.

NotaNota

El cifrado no se admite en los datos FILESTREAM.

Solo a la cuenta con la que la cuenta de servicio de SQL Server se ejecuta se permiten los permisos NTFS al contenedor FILESTREAM. Recomendamos que a ninguna otra cuenta se le concedan los permisos concedidos para el contenedor de datos.

Administración integrada

Debido a que FILESTREAM se implementa como una columna varbinary(max) y se integra directamente en el Motor de base de datos, la mayoría de las funciones y las herramientas de administración de SQL Server funcionan sin la modificación de los datos FILESTREAM. Por ejemplo, puede usar todos los modelos de recuperación y copia de seguridad con datos FILESTREAM y se realizan copias de seguridad de los datos FILESTREAM con los datos estructurados de la base de datos. Si no desea realizar una copia de seguridad de los datos FILESTREAM con datos relacionales, puede usar una copia de seguridad parcial para excluir los grupos de archivos FILESTREAM.

Después de almacenar los datos en una columna FILESTREAM, puede tener acceso a los archivos usando las transacciones de Transact-SQL o usando las API de Win32.

Acceso a Transact-SQL

Usando Transact-SQL, puede insertar, actualizar y eliminar los datos de FILESTREAM: 

  • Puede usar una operación de inserción para rellenar previamente un campo FILESTREAM con un valor nulo, un valor vacío o un dato insertado relativamente corto. Sin embargo, se envía una gran cantidad de datos de manera más eficaz en un archivo que usa interfaces de Win32.

  • Al actualizar un campo FILESTREAM, modifica los datos de BLOB subyacentes en el sistema de archivos. Cuando un campo FILESTREAM está establecido en NULL, se eliminan los datos de BLOB asociados al campo. No puede usar ninguna actualización fragmentada de Transact-SQL, implementada como UPDATE.Write (), para realizar actualizaciones parciales en los datos.

  • Al eliminar una fila, o eliminar o truncar una tabla que contiene datos FILESTREAM, elimina los datos de BLOB subyacentes del sistema de archivos.

Acceso a la transmisión por secuencias del sistema de archivos

La compatibilidad de transmisión por secuencias de Win32 funciona en el contexto de una transacción de SQL Server. Dentro de una transacción, puede usar las funciones FILESTREAM para obtener una ruta de acceso al sistema de archivos de UNC lógica de un archivo. A continuación, use la API de OpenSqlFilestream para obtener un identificador de archivos. Después, este identificador lo pueden usar las interfaces de transmisión por secuencias de archivo de Win32, como ReadFile() y WriteFile(), para obtener acceso y actualizar el archivo mediante el sistema de archivos. 

Dado que las operaciones de archivo son transaccionales, no puede eliminar ni cambiar el nombre de los archivos FILESTREAM a través del sistema de archivos.

Modelo de la instrucción

El acceso del sistema de archivos de FILESTREAM modela una instrucción de Transact-SQL usando la apertura y el cierre de archivo. La instrucción se inicia cuando un identificador de archivos se abre y finaliza cuando se cierra el identificador. Por ejemplo, cuando se cierra un identificador de escritura, cualquier posible desencadenador de AFTER que esté registrado en la tabla se desencadena como si la instrucción UPDATE estuviera completada.

Espacio de nombres de almacenamiento

En FILESTREAM, el Motor de base de datos controla el espacio de nombres del sistema de archivos físico de BLOB. Una nueva función intrínseca, PathName, proporciona la ruta UNC lógica del BLOB que se corresponde con cada celda de FILESTREAM de la tabla. La aplicación usa esta ruta de acceso lógica para obtener el identificador de Win32 y funcionar en los datos de BLOB usando las interfaces del sistema de archivos de Win32 normales. La función devuelve NULL si el valor de la columna FILESTREAM es NULL.

Acceso al sistema de archivos transaccionales

Una nueva función intrínseca, GET_FILESTREAM_TRANSACTION_CONTEXT (), proporciona el token que representa la transacción actual a la que la sesión está asociada. Se debe haber iniciado la transacción y no haberse abortado ni confirmado todavía. Al obtener un token, la aplicación enlaza las operaciones de transmisión por secuencias del sistema de archivos FILESTREAM con una transacción iniciada. La función devuelve NULL en caso de no haber ninguna transacción explícitamente iniciada.

Se deben cerrar todos los identificadores de archivo antes de que la transacción se confirme o se anule. Si un identificador se deja abierto más allá del ámbito de transacción, las lecturas adicionales frente al identificador producirán un error; las escrituras adicionales frente al identificador tendrán éxito pero los datos reales no se escribirán en el disco. De igual forma, si la base de datos o la instancia del Motor de base de datos se cierra, se invalidan todos los identificadores abiertos.

Durabilidad transaccional

Con FILESTREAM, al confirmar la transacción, el Motor de base de datos asegura la durabilidad de la transacción para los datos de BLOB FILESTREAM que se modifican del acceso a la transmisión por secuencias del sistema de archivos.

Escritura continua desde clientes remotos

El acceso al sistema de archivos remoto a los datos de FILESTREAM está habilitado por el protocolo Bloque de mensajes de servidor (SMB). Si el cliente es remoto, no se almacena en caché ninguna operación de escritura del lado cliente. Las operaciones de escritura siempre se enviarán al servidor. Los datos pueden se pueden almacenar en memoria caché en el servidor. Recomendamos que las aplicaciones que se están ejecutando en clientes remotos consoliden pequeñas operaciones de escritura para realizar menos operaciones de escritura mediante un tamaño de datos mayor.

No se admite la creación de vistas asignadas de memoria (E/S asignada de memoria) usando un identificador FILESTREAM. Si la asignación de memoria se usa para los datos FILESTREAM, el Motor de base de datos no puede garantizar la coherencia y la durabilidad de los datos o la integridad de la base de datos.

Certificación del logotipo de Windows

El controlador de FILESTREAM RsFx está certificado para Windows Server 2008 R2. Para obtener más información y descargar el archivo de catálogo, vea Certificación del logotipo de Windows del controlador para SQL Server 2008 R2 RTM FileStream en el Centro de descarga de Microsoft.

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft