Compatibilidad de FILESTREAM con otras características de SQL Server
Dado que los datos FILESTREAM están en el sistema de archivos, este tema proporciona algunas consideraciones, directrices y limitaciones para usar FILESTREAM con las siguientes características de SQL Server:
SQL Server Integration Services (SSIS)
Consultas distribuidas y servidores vinculados
Cifrado
Instantáneas de base de datos
Replicación
Trasvase de registros
Reflejo de base de datos
Indización de texto completo
Clústeres de conmutación por error
SQL Server Express
Bases de datos independientes
SQL Server Integration Services (SSIS)
SQL Server Integration Services (SSIS) administra los datos FILESTREAM en el flujo de datos como otros datos BLOB utilizando el tipo de datos DT_IMAGE de SSIS.
Puede utilizar 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 de una columna FILESTREAM a otra ubicación en el sistema de archivos.
Consultas distribuidas y servidores vinculados
Puede trabajar con datos FILESTREAM a través de consultas distribuidas y servidores vinculados si los trata como datos varbinary(max). No puede usar la función FILESTREAM PathName() en las consultas distribuidas que utilizan un nombre de cuatro partes, aunque el nombre haga referencia al servidor local. No obstante, puede usar PathName() en una consulta interna de una consulta de paso a través que utilice OPENQUERY().
Cifrado
Los datos FILESTREAM no se cifran ni siquiera 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á el mensaje correspondiente.
Cuando se utiliza FILESTREAM, pueden crearse instantáneas de la 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 la base de datos.
Una instrucción SELECT que se ejecuta en una tabla FILESTREAM de una instantánea de base de datos no debe incluir una columna FILESTREAM; de lo contrario, se devolverá el mensaje de error siguiente:
Could not continue scan with NOLOCK due to data movement.
Replicación
Una columna varbinary(max) que tiene el atributo FILESTREAM habilitado en el publicador puede replicarse en un suscriptor con o sin el atributo FILESTREAM. Para especificar la manera en la que se replica la columna, utilice el cuadro de diálogo Propiedades del artículo: <artículo> o el parámetro @schema\_option de sp_addarticle o sp_addmergearticle. Los datos que se replican en una columna varbinary(max) 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 se estén replicando datos en SQL Server 2005. La replicación de tablas que incluyen columnas FILESTREAM en suscriptores de SQL Server 2000 no se admite, independientemente de la opción de esquema especificada.
[!NOTA]
La replicación de valores de datos de gran tamaño de SQL Server 2012 a suscriptores de SQL Server 2005 está limitada a un máximo de 256 MB de valores de datos. Para obtener más información, vea Especificaciones de capacidad máxima.
Consideraciones acerca de la replicación transaccional
Si utiliza columnas FILESTREAM en tablas que se publican para la replicación transaccional, tenga en cuenta las consideraciones siguientes:
Si cualquiera de las tablas incluye columnas que tienen el atributo FILESTREAM, no puede utilizar valores de database snapshot o database snapshot character para la propiedad @sync\_method de sp_addpublication.
La opción max text repl size especifica la cantidad máxima de datos que se pueden insertar en una columna publicada para su replicación. Esta opción se puede utilizar 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 columna uniqueidentifier que FILESTREAM necesita o especifica que no se replique la restricción UNIQUE para la columna, la replicación no replica el atributo FILESTREAM. La columna solo se replica como una columna varbinary(max).
Consideraciones acerca de la replicación de mezcla
Si utiliza columnas FILESTREAM en tablas que se publican para la replicación de mezcla, tenga en cuenta las consideraciones siguientes:
Tanto la replicación de mezcla como FILESTREAM requieren una columna del tipo de datos uniqueidentifier para identificar cada fila de una tabla. La replicación de mezcla agrega una columna automáticamente si la tabla no la tiene. La replicación de mezcla requiere que la columna tenga establecida la propiedad ROWGUIDCOL y su valor predeterminado sea NEWID() o NEWSEQUENTIALID(). Además de estos requisitos, FILESTREAM requiere que se defina una restricción UNIQUE para la columna. Estos requisitos tienen las consecuencias siguientes:
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 tiene una restricción UNIQUE. Si no tiene una restricción UNIQUE, agregue una restricción con nombre a la tabla en la base de datos de publicación. De forma predeterminada, la replicación de mezcla publicará este cambio del esquema y se aplicará a cada base de datos de suscripciones.
Si agrega manualmente una restricción UNIQUE tal como se ha descrito y desea quitar la replicación de mezcla, primero debe quitar la restricción UNIQUE; de lo contrario, se producirá un error en la eliminación de la replicación.
De forma predeterminada, la replicación de mezcla utiliza NEWSEQUENTIALID() porque puede proporcionar un mejor rendimiento que NEWID(). Si agrega una columna uniqueidentifier a una tabla que se publicará para la replicación de mezcla, especifique NEWSEQUENTIALID() como valor predeterminado.
La replicación de mezcla incluye una optimización para replicar tipos de objetos grandes. Esta optimización la controla el parámetro @stream\_blob\_columns de sp_addmergearticle. Si establece la opción de esquema para replicar el atributo FILESTREAM, el valor del parámetro @stream\_blob\_columns se establece en true. Esta optimización se puede invalidar con sp_changemergearticle. Este procedimiento almacenado le permite establecer @stream\_blob\_columns en false. Si agrega una columna FILESTREAM a una tabla que ya está publicada para la replicación de mezcla, se recomienda establecer la opción en true mediante sp_changemergearticle.
Si se habilita la opción de esquema para FILESTREAM una vez creado un artículo, puede producirse 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 que quite y vuelva a crear el artículo de la tabla con la opción de esquema FILESTREAM adecuada habilitada durante 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 generará un error en tiempo de ejecución.
Trasvase de registros
El trasvase de registros es compatible con FILESTREAM. Los servidores principal y secundario deben estar ejecutando SQL Server 2008 o una versión posterior y deben tener FILESTREAM habilitado.
Creación de reflejo de la base de datos
La creación de reflejo de la base de datos no es compatible con FILESTREAM. No se puede crear un grupo de archivos FILESTREAM en el servidor principal. La creación de reflejo de la base de datos no puede configurarse para una base de datos que contiene grupos de archivos FILESTREAM.
Indización de texto completo
La indización de texto completo funciona con una columna FILESTREAM del mismo modo que con una columna varbinary(max). La tabla FILESTREAM debe tener una columna con la extensión de nombre de archivo para cada BLOB FILESTREAM. Para obtener más información, vea Consultar con búsqueda de texto completo, Configurar y administrar filtros para búsquedas y sys.fulltext_document_types (Transact-SQL).
El motor de texto completo indiza el contenido de los BLOB FILESTREAM. Indizar archivos como las imágenes podría no ser útil. Cuando se actualiza un BLOB FILESTREAM, vuelve a indizarse.
Agrupación en clústeres de conmutación por error
Para la agrupación en clústeres de conmutación por error, los grupos de archivos FILESTREAM deben situarse en un disco compartido. Es preciso habilitar FILESTREAM en cada nodo del clúster que hospedará la instancia de FILESTREAM. Para obtener más información, vea Configurar FILESTREAM en un clúster de conmutación por error.
SQL Server Express
SQL Server Express es compatible con FILESTREAM. El límite de tamaño de base de datos de 10 GB no incluye el contenedor de datos de FILESTREAM.
Bases de datos independientes
La característica FILESTREAM requiere cierta configuración fuera de la base de datos. Por consiguiente, una base de datos que utiliza FILESTREAM o FileTable no es totalmente contenida.
Puede establecer la contención de la base de datos en PARTIAL si desea utilizar algunas características de bases de datos contenidas, como usuarios contenidos. Sin embargo, en este caso, debe tener en cuenta que algunas de las opciones de base de datos no están contenidas en la base de datos y no se mueven automáticamente cuando lo hace la base de datos.