Compartir a través de


Compatibilidad de FILESTREAM con otras características de SQL Server

Dado que los datos FILESTREAM están en el sistema de archivos, en este tema se proporcionan algunas consideraciones, directrices y limitaciones para usar FILESTREAM con las siguientes características de SQL Server:

SQL Server Integration Services (SSIS)

SQL Server Integration Services (SSIS) maneja los datos de FILESTREAM en el flujo de datos de la misma manera que cualquier otro dato BLOB, utilizando el tipo de datos DT_IMAGE de SSIS.

Puede usar la transformación Importar columna para cargar archivos del sistema de archivos en una columna FILESTREAM. También puede usar la transformación Exportar columna para extraer archivos desde una columna FILESTREAM a otra ubicación del sistema de archivos.

Consultas distribuidas y servidores vinculados

Puede trabajar con datos FILESTREAM a través de consultas distribuidas y servidores vinculados, tratándolos como varbinary(max) datos. No puede usar la función FILESTREAM PathName() en consultas distribuidas que usan un nombre de cuatro partes, incluso cuando el nombre hace referencia al servidor local. Sin embargo, puede usar PathName() en la consulta interna de una consulta de paso a través que usa OPENQUERY().

Encriptación

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

Instantáneas de base de datos

SQL Server no admite instantáneas de base de datos para grupos de archivos FILESTREAM. Si se incluye un grupo de archivos FILESTREAM en una cláusula CREATE DATABASE ON, se producirá un error en la instrucción y se generará un error.

Al usar FILESTREAM, puede crear instantáneas de base de datos de grupos de archivos estándar (no FILESTREAM). Los grupos de archivos FILESTREAM se marcan como sin conexión para esas instantáneas de base de datos.

Una instrucción SELECT que se ejecuta en una tabla FILESTREAM en una instantánea de base de datos no debe incluir una columna FILESTREAM; De lo contrario, se devolverá el siguiente mensaje de error:

Could not continue scan with NOLOCK due to data movement.

Replicación

Una varbinary(max) columna con el atributo FILESTREAM habilitado en el publicador se puede replicar en un suscriptor con o sin el atributo FILESTREAM. Para especificar la forma en que se replica la columna, use el cuadro de diálogo Propiedades del artículo : <artículo> o el @schema_option parámetro de sp_addarticle o sp_addmergearticle. Los datos que se replican en una varbinary(max) columna que no tiene el atributo FILESTREAM no deben superar el límite de 2 GB para ese tipo de datos; de lo contrario, se genera un error en tiempo de ejecución. Se recomienda replicar el atributo FILESTREAM, a menos que esté replicando datos en suscriptores de SQL Server 2000, lo cual no está soportado, independientemente de la opción de esquema especificada.

Nota:

La replicación de valores de datos de gran tamaño de SQL Server 2014 a suscriptores de SQL Server 2005 (9.x) se limita a un máximo de 256 MB de valores de datos. Para obtener más información, consulte Especificaciones de capacidad máxima.

Consideraciones para la replicación transaccional

Si usa columnas FILESTREAM en tablas publicadas para la replicación transaccional, tenga en cuenta las consideraciones siguientes:

  • Si alguna tabla incluye columnas que tienen el atributo FILESTREAM, no puede usar valores de instantánea de base de datos o carácter de instantánea de base de datos para la propiedad de @sync_methodsp_addpublication.

  • La opción 'tamaño máximo de texto de replicación' especifica la cantidad máxima de datos que se pueden insertar en una columna destinada a la replicación. Esta opción se puede usar para controlar el tamaño de los datos FILESTREAM que se replican.

  • Si especifica la opción de esquema para replicar el atributo FILESTREAM, pero filtra la uniqueidentifier columna que FILESTREAM requiere o especifica que no replique la restricción UNIQUE para la columna, la replicación no replica el atributo FILESTREAM. La columna solo se replica como una varbinary(max) columna.

Consideraciones para la replicación por combinación

Si usa columnas FILESTREAM en tablas publicadas para la replicación por combinación, tenga en cuenta las siguientes consideraciones:

  • Tanto la replicación de mezcla como FILESTREAM requieren una columna de datos de tipo uniqueidentifier para identificar cada fila de una tabla. La replicación de mezcla agrega automáticamente una columna si la tabla no tiene una. La replicación de mezcla requiere que la columna tenga establecida la propiedad ROWGUIDCOL y un valor predeterminado de NEWID() o NEWSEQUENTIALID(). Además de estos requisitos, FILESTREAM requiere que se defina una restricción UNIQUE para la columna. Estos requisitos tienen las siguientes consecuencias:

    • Si agrega una columna FILESTREAM a una tabla que ya está publicada para la replicación de mezcla, asegúrese de que la columna uniqueidentifier tenga una restricción UNIQUE. Si no tiene una restricción UNIQUE, agregue una restricción con nombre a la tabla de la base de datos de publicación. De forma predeterminada, la replicación de mezcla publicará este cambio de esquema y se aplicará a cada base de datos de suscripciones.

      Si agrega manualmente una restricción UNIQUE como se describe y desea quitar la replicación de mezcla, primero debe quitar la restricción UNIQUE; de lo contrario, fallará la eliminación de la replicación.

    • De forma predeterminada, la replicación de mezcla usa NEWSEQUENTIALID() porque puede proporcionar un mejor rendimiento que NEWID(). Si agrega una uniqueidentifier columna a una tabla que se publicará para la replicación de mezcla, especifique NEWSEQUENTIALID() como valor predeterminado.

  • La replicación mediante mezcla incluye una optimización para replicar objetos de gran tamaño. Esta optimización se controla mediante el @stream_blob_columns parámetro de sp_addmergearticle. Si establece la opción de esquema para replicar el atributo FILESTREAM, el valor del @stream_blob_columns parámetro se establece en true. Esta optimización se puede invalidar mediante sp_changemergearticle. Este procedimiento almacenado permite establecer @stream_blob_columns en false. Si agrega una columna FILESTREAM a una tabla que ya está publicada para la replicación por mezcla, te recomendamos que establezcas la opción en true mediante sp_changemergearticle.

  • La habilitación de la opción de esquema para FILESTREAM después de crear un artículo puede provocar un error en la replicación si los datos de una columna FILESTREAM superan los 2 GB y hay un conflicto durante la replicación. Si espera que se produzca esta situación, se recomienda quitar y volver a crear el artículo de tabla con la opción de esquema FILESTREAM adecuada habilitada en el momento de la creación.

  • La replicación de mezcla puede sincronizar datos FILESTREAM a través de una conexión HTTPS mediante la sincronización web. Estos datos no pueden superar el límite de 50 MB para la sincronización web; De lo contrario, se genera un error en tiempo de ejecución.

Trasvase de registros

El trasvase de registros admite FILESTREAM. Los servidores primarios y secundarios deben ejecutar SQL Server 2008 o una versión posterior y tener HABILITADO FILESTREAM.

Reflejo de la base de datos

El reflejo de la base de datos no admite FILESTREAM. No se puede crear un grupo de archivos FILESTREAM en el servidor principal. No puede configurarse el reflejo de la base de datos para una base de datos que contenga grupos de archivos FILESTREAM.

Indexación de Full-Text

La indexación de texto completo funciona con una columna FILESTREAM de la misma manera que con una varbinary(max) columna. La tabla FILESTREAM debe tener una columna que contenga la extensión de nombre de archivo para cada BLOB DE FILESTREAM. Para obtener más información, consulte Consulta con Full-Text Search, Configure and Manage Filters for Search y sys.fulltext_document_types (Transact-SQL).

El motor de texto completo indexa el contenido de los BLOB de FILESTREAM. Es posible que la indexación de archivos como imágenes no sea útil. Cuando se actualiza un BLOB FILESTREAM, se vuelve a indexar.

Clústeres de conmutación por error

Para los clústeres de conmutación por error, los grupos de archivos FILESTREAM deben ubicarse en un disco compartido. FILESTREAM debe estar habilitado en cada nodo del clúster que hospedará la instancia de FILESTREAM. Para obtener más información, consulte Configuración de FILESTREAM en un clúster de conmutación por error.

SQL Server Express

SQL Server Express admite FILESTREAM. El límite de tamaño de base de datos de 10 GB no incluye el contenedor de datos FILESTREAM.

Bases de datos independientes

La característica FILESTREAM requiere alguna configuración fuera de la base de datos. Por lo tanto, una base de datos que usa FILESTREAM o FileTable no está totalmente contenida.

Puede establecer la contención de la base de datos en PARTIAL si desea usar determinadas características de bases de datos independientes, como los usuarios contenidos. Sin embargo, en este caso, debe tener en cuenta que algunas de las opciones de configuración de la base de datos no están contenidas en la base de datos y no se mueven automáticamente cuando se mueve la base de datos.

Véase también

Datos de objeto binario grande (blob) (SQL Server)