Compatibilidad de FILESTREAM con otras características de SQL ServerFILESTREAM compatibility with other SQL Server features

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions)

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 ServerSQL Server:Because FILESTREAM data is in the file system, this topic provides some considerations, guidelines, and limitations for using FILESTREAM with the following features in SQL ServerSQL Server:

SQL Server Integration Services (SSIS)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.SQL Server Integration Services (SSIS) handles FILESTREAM data in the data flow like any other BLOB data by using the DT_IMAGE SSIS data type.

Puede utilizar la transformación Importar columna para cargar archivos del sistema de archivos en una columna FILESTREAM.You can use the Import Column transformation to load files from the file system into a FILESTREAM column. 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.You can also use the Export Column transformation to extract files from a FILESTREAM column to another location in the file system.

Consultas distribuidas y servidores vinculadosDistributed Queries and Linked Servers

Puede trabajar con datos de FILESTREAM a través de consultas distribuidas y servidores vinculados si los trata como datos varbinary(max) .You can work with FILESTREAM data through distributed queries and linked servers by treating it as varbinary(max) data. La función FILESTREAM PathName() no puede usar en consultas distribuidas en las que se usa un nombre de cuatro partes, aunque el nombre haga referencia al servidor local.You cannot use the FILESTREAM PathName() function in distributed queries that use a four-part name, even when the name refers to the local server. Pero puede usar PathName() en una consulta interna de una consulta de paso a través que use OPENQUERY() .However you can use PathName() in the inner query of a pass-through query that uses OPENQUERY().

CifradoEncryption

Los datos FILESTREAM no se cifran ni siquiera cuando está habilitado el cifrado de datos transparente.FILESTREAM data is not encrypted even when transparent data encryption is enabled.

Instantáneas de base de datosDatabase Snapshots

SQL ServerSQL Server no admite instantáneas de base de datos para grupos de archivos FILESTREAM.does not support database snapshots for FILESTREAM filegroups. 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.If a FILESTREAM filegroup is included in a CREATE DATABASE ON clause, the statement will fail and an error will be raised.

Cuando se utiliza FILESTREAM, pueden crearse instantáneas de la base de datos de grupos de archivos estándar (no FILESTREAM).When you are using FILESTREAM, you can create database snapshots of standard (non-FILESTREAM) filegroups. Los grupos de archivos FILESTREAM se marcan como sin conexión para esas instantáneas de la base de datos.The FILESTREAM filegroups are marked as offline for those database snapshots.

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:A SELECT statement that is executed on a FILESTREAM table in a database snapshot must not include a FILESTREAM column; otherwise, the following error message will be returned:

Could not continue scan with NOLOCK due to data movement.

ReplicationReplication

Una columna varbinary(max) que tiene el atributo FILESTREAM habilitado en el publicador puede replicarse en un suscriptor con o sin el atributo FILESTREAM.A varbinary(max) column that has the FILESTREAM attribute enabled at the Publisher can be replicated to a Subscriber with or without the FILESTREAM attribute. Para especificar la manera en la que se replica la columna, utilice el cuadro de diálogo Propiedades del artículo: <Article> o el parámetro @schema_option de sp_addarticle o sp_addmergearticle.To specify the way in which the column is replicated, use the Article Properties - <Article> dialog box or the @schema_option parameter of sp_addarticle or 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.Data that is replicated to a varbinary(max) column that does not have the FILESTREAM attribute must not exceed the 2-GB limit for that data type; otherwise, a run-time error is generated. Se recomienda que replique el atributo FILESTREAM, a menos que esté replicando datos a SQL Server 2005 (9.x)SQL Server 2005 (9.x).We recommend that you replicate the FILESTREAM attribute, unless you are replicating data to SQL Server 2005 (9.x)SQL Server 2005 (9.x). No se admite la replicación de tablas que incluyen columnas FILESTREAM en suscriptores de SQL Server 2000 (8.x)SQL Server 2000 (8.x) , independientemente opción de esquema especificada.Replicating tables that have FILESTREAM columns to SQL Server 2000 (8.x)SQL Server 2000 (8.x) Subscribers is not supported, regardless of the schema option that is specified.

Nota

La replicación de valores de datos de gran tamaño de SQL ServerSQL Server a suscriptores de SQL Server 2005 (9.x)SQL Server 2005 (9.x) está limitada a un máximo de 256 MB de valores de datos.Replicating large data values from SQL ServerSQL Server to SQL Server 2005 (9.x)SQL Server 2005 (9.x) Subscribers is limited to a maximum of 256 MB data values. Para obtener más información, vea Especificaciones de capacidad máxima.For more information, see Maximum Capacity Specifications.

Consideraciones acerca de la replicación transaccionalConsiderations for Transactional Replication

Si utiliza columnas FILESTREAM en tablas que se publican para la replicación transaccional, tenga en cuenta las consideraciones siguientes:If you use FILESTREAM columns in tables that are published for transactional replication, note the following considerations:

  • Si alguna de las tablas incluye columnas que tienen el atributo FILESTREAM, no puede usar valores de database snapshot ni database snapshot character para la propiedad @sync_method de sp_addpublication.If any tables include columns that have the FILESTREAM attribute, you cannot use values of database snapshot or database snapshot character for the @sync_method property of sp_addpublication.

  • La opción max text repl size especifica la cantidad máxima de datos que se pueden insertar en una columna que se publica para la replicación.The max text repl size option specifies the maximum amount of data that can be inserted into a column that is published for replication. Esta opción se puede utilizar para controlar el tamaño de los datos FILESTREAM que se replican.This option can be used to control the size of FILESTREAM data that is replicated.

  • 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.If you specify the schema option to replicate the FILESTREAM attribute, but you filter out the uniqueidentifier column that FILESTREAM requires or you specify not to replicate the UNIQUE constraint for the column, replication does not replicate the FILESTREAM attribute. La columna solo se replica como una columna varbinary(max) .The column is replicated only as a varbinary(max) column.

Consideraciones acerca de la replicación de mezclaConsiderations for Merge Replication

Si utiliza columnas FILESTREAM en tablas que se publican para la replicación de mezcla, tenga en cuenta las consideraciones siguientes:If you use FILESTREAM columns in tables that are published for merge replication, note the following considerations:

  • Tanto la replicación de mezcla como FILESTREAM requieren una columna del tipo de datos uniqueidentifier para identificar cada fila de una tabla.Both merge replication and FILESTREAM require a column of data type uniqueidentifier to identify each row in a table. La replicación de mezcla agrega una columna automáticamente si la tabla no la tiene.Merge replication automatically adds a column if the table does not have one. La replicación de mezcla requiere que la columna tenga establecida la propiedad ROWGUIDCOL y su valor predeterminado sea NEWID() o NEWSEQUENTIALID().Merge replication requires that the column have the ROWGUIDCOL property set and a default of NEWID() or NEWSEQUENTIALID(). Además de estos requisitos, FILESTREAM requiere que se defina una restricción UNIQUE para la columna.In addition to these requirements, FILESTREAM requires that a UNIQUE constraint be defined for the column. Estos requisitos tienen las consecuencias siguientes:These requirements have the following consequences:

    • 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.If you add a FILESTREAM column to a table that is already published for merge replication, make sure that the uniqueidentifier column has a UNIQUE constraint. Si no tiene una restricción UNIQUE, agregue una restricción con nombre a la tabla en la base de datos de publicación.If it does not have a UNIQUE constraint, add a named constraint to the table in the publication database. De forma predeterminada, la replicación de mezcla publicará este cambio del esquema y se aplicará a cada base de datos de suscripciones.By default, merge replication will publish this schema change, and it will be applied to each subscription database.

      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.If you add a UNIQUE constraint manually as described and you want to remove merge replication, you must first remove the UNIQUE constraint; otherwise, replication removal will fail.

    • De forma predeterminada, la replicación de mezcla utiliza NEWSEQUENTIALID() porque puede proporcionar un mejor rendimiento que NEWID().By default, merge replication uses NEWSEQUENTIALID() because it can provide better performance than NEWID(). Si agrega una columna uniqueidentifier a una tabla que se publicará para la replicación de mezcla, especifique NEWSEQUENTIALID() como valor predeterminado.If you add a uniqueidentifier column to a table that will be published for merge replication, specify NEWSEQUENTIALID() as the default.

  • La replicación de mezcla incluye una optimización para replicar tipos de objetos grandes.Merge replication includes an optimization for replicating large object types. Esta optimización la controla el parámetro @stream_blob_columns de sp_addmergearticle.This optimization is controlled by the @stream_blob_columns parameter of 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.If you set the schema option to replicate the FILESTREAM attribute, the @stream_blob_columns parameter value is set to true. Esta optimización se puede invalidar con sp_changemergearticle.This optimization can be overridden by using sp_changemergearticle. Este procedimiento almacenado le permite establecer @stream_blob_columns en false.This stored procedure enables you to set @stream_blob_columns to 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 por medio de sp_changemergearticle.If you add a FILESTREAM column to a table that is already published for merge replication, we recommend that you set the option to true by using 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.Enabling the schema option for FILESTREAM after an article is created can cause replication to fail if the data in a FILESTREAM column exceeds 2 GB and there is a conflict during replication. 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.If you expect this situation to arise, it is recommended that you drop and re-create the table article with the appropriate FILESTREAM schema option enabled at creation time.

  • La replicación de mezcla puede sincronizar datos FILESTREAM a través de una conexión HTTPS mediante la Sincronización web.Merge replication can synchronize FILESTREAM data over an HTTPS connection by using Web Synchronization. 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.This data cannot exceed the 50 MB limit for Web Synchronization; otherwise, a run-time error is generated.

Trasvase de registrosLog Shipping

El trasvase de registros es compatible con FILESTREAM.Log shipping supports FILESTREAM. Los servidores principal y secundario deben estar ejecutando SQL Server 2008SQL Server 2008o una versión posterior y deben tener FILESTREAM habilitado.Both the primary and secondary servers must be running SQL Server 2008SQL Server 2008, or a later version, and have FILESTREAM enabled.

Creación de reflejo de base de datosDatabase Mirroring

La creación de reflejo de la base de datos no es compatible con FILESTREAM.Database mirroring does not support FILESTREAM. No se puede crear un grupo de archivos FILESTREAM en el servidor principal.A FILESTREAM filegroup cannot be created on the principal server. La creación de reflejo de la base de datos no puede configurarse para una base de datos que contiene grupos de archivos FILESTREAM.Database mirroring cannot be configured for a database that contains FILESTREAM filegroups.

Indización de texto completoFull-Text Indexing

La indexación de texto completo funciona con una columna FILESTREAM del mismo modo que con una columna varbinary(max) .Full-text indexing works with a FILESTREAM column in the same way that it does with a varbinary(max) column. La tabla FILESTREAM debe tener una columna con la extensión de nombre de archivo para cada BLOB FILESTREAM.The FILESTREAM table must have a column that contains the file name extension for each FILESTREAM BLOB. 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).For more information, see Query with Full-Text Search, Configure and Manage Filters for Search, and sys.fulltext_document_types (Transact-SQL).

El motor de texto completo indiza el contenido de los BLOB FILESTREAM.The full-text engine indexes the contents of the FILESTREAM BLOBs. Indizar archivos como las imágenes podría no ser útil.Indexing files such as images might not be useful. Cuando se actualiza un BLOB FILESTREAM, vuelve a indizarse.When a FILESTREAM BLOB is updated it is reindexed.

Agrupación en clústeres de conmutación por errorFailover Clustering

Para la agrupación en clústeres de conmutación por error, los grupos de archivos FILESTREAM deben situarse en un disco compartido.For failover clustering, FILESTREAM filegroups must be put on a shared disk. Es preciso habilitar FILESTREAM en cada nodo del clúster que hospedará la instancia de FILESTREAM.FILESTREAM must be enabled on each node in the cluster that will host the FILESTREAM instance. Para obtener más información, vea Configurar FILESTREAM en un clúster de conmutación por error.For more information, see Set Up FILESTREAM on a Failover Cluster.

SQL Server ExpressSQL Server Express

SQL Server ExpressSQL Server Express es compatible con FILESTREAM.supports FILESTREAM. El límite de tamaño de base de datos de 10 GB no incluye el contenedor de datos de FILESTREAM.The 10-GB database size limit does not include the FILESTREAM data container.

Bases de datos independientesContained Databases

La característica FILESTREAM requiere cierta configuración fuera de la base de datos.The FILESTREAM feature requires some configuration outside of the database. Por consiguiente, una base de datos que utiliza FILESTREAM o FileTable no es totalmente contenida.Therefore a database that uses FILESTREAM or FileTable is not fully contained.

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.You can set database containment to PARTIAL if you want to use certain features of contained databases, such as contained users. 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.In this case, however, you must be aware that some of the database settings are not contained in the database and are not automatically moved when the database moves.

Consulte tambiénSee Also

Datos de objeto binario grande (Blob) (SQL Server)Binary Large Object (Blob) Data (SQL Server)