Compatibilidade do FILESTREAM com outros recursos do SQL ServerFILESTREAM Compatibility with Other SQL Server Features

Este tópico aplica-se a: Simdo SQL Serversembanco de dados do SQL AzuresemAzure SQL Data Warehouse sem Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Como dados FILESTREAM estão no sistema de arquivos, este tópico fornece algumas considerações, diretrizes e limitações para o uso de FILESTREAM com os seguintes recursos no 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)

O SQL Server Integration Services (SSIS) trata os dados FILESTREAM no fluxo de dados como quaisquer outros dados BLOB usando o tipo de dados DT_IMAGE 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.

Você pode usar a transformação Importar Coluna para carregar arquivos do sistema de arquivos em uma coluna FILESTREAM.You can use the Import Column transformation to load files from the file system into a FILESTREAM column. Você também pode usar a transformação Exportar Coluna para extrair arquivos de uma coluna FILESTREAM para outro local do sistema de arquivos.You can also use the Export Column transformation to extract files from a FILESTREAM column to another location in the file system.

Consultas distribuídas e servidores vinculadosDistributed Queries and Linked Servers

Você pode trabalhar com dados FILESTREAM em consultas distribuídas e servidores vinculados, tratando-os como dados varbinary(max) .You can work with FILESTREAM data through distributed queries and linked servers by treating it as varbinary(max) data. Não é possível usar a função PathName() de FILESTREAM em consultas distribuídas que usam um nome de quatro partes, mesmo quando o nome referencia o 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. Entretanto, você pode usar PathName() na consulta interna de uma consulta passagem que usa OPENQUERY().However you can use PathName() in the inner query of a pass-through query that uses OPENQUERY().

CriptografiaEncryption

Os dados de FILESTREAM não são criptografados mesmo quando a criptografia transparente de dados está habilitada.FILESTREAM data is not encrypted even when transparent data encryption is enabled.

Instantâneos do banco de dadosDatabase Snapshots

SQL ServerSQL Server não oferece suporte a database snapshots para grupos de arquivos FILESTREAM.does not support database snapshots for FILESTREAM filegroups. Se um grupo de arquivos FILESTREAM for incluído em uma cláusula CREATE DATABASE ON, a instrução falhará e um erro será gerado.If a FILESTREAM filegroup is included in a CREATE DATABASE ON clause, the statement will fail and an error will be raised.

Ao usar FILESTREAM, você pode criar instantâneos do banco de dados de grupos de arquivos padrão (não FILESTREAM).When you are using FILESTREAM, you can create database snapshots of standard (non-FILESTREAM) filegroups. Os grupos de arquivos FILESTREAM são marcados como offline para esses instantâneos do bancos de dados.The FILESTREAM filegroups are marked as offline for those database snapshots.

Uma instrução SELECT executada em uma tabela FILESTREAM em um instantâneo do banco de dados não deve incluir uma coluna FILESTREAM. Caso contrário, a mensagem de erro a seguir será retornada: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.

ReplicaçãoReplication

Uma coluna varbinary(max) que tem o atributo FILESTREAM habilitado no Publicador pode ser replicada para um Assinante com ou sem o 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 o modo de replicação da coluna, use a caixa de diálogo Propriedades do Artigo – <Artigo> ou o parâmetro @schema_option de sp_addarticle ou 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. Dados replicados para uma coluna varbinary(max) que não tenham o atributo FILESTREAM não devem exceder o limite de 2 GB daquele tipo de dados. Caso contrário, um erro em tempo de execução será gerado.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. Recomendamos replicar o atributo FILESTREAM, a menos que você esteja replicando dados para o SQL Server 2005SQL Server 2005.We recommend that you replicate the FILESTREAM attribute, unless you are replicating data to SQL Server 2005SQL Server 2005. A replicação de tabelas com colunas FILESTREAM para Assinantes do SQL Server 2000 (8.x)SQL Server 2000 (8.x) não tem suporte, independentemente de como essa opção de esquema é definida.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.

Observação

A replicação de valores de dados grandes do SQL Server 2017SQL Server 2017 para Assinantes do SQL Server 2005SQL Server 2005 é limitada a um máximo de 256 MB de valores de dados.Replicating large data values from SQL Server 2017SQL Server 2017 to SQL Server 2005SQL Server 2005 Subscribers is limited to a maximum of 256 MB data values. Para obter mais informações, consulte Especificações de capacidade máxima.For more information, see Maximum Capacity Specifications.

Considerações sobre replicação transacionalConsiderations for Transactional Replication

Se você usar colunas FILESTREAM em tabelas que são publicadas para replicação transacional, observe as seguintes considerações:If you use FILESTREAM columns in tables that are published for transactional replication, note the following considerations:

  • Se alguma tabela incluir colunas que tenham o atributo FILESTREAM, não será possível usar valores database snapshot ou database snapshot character para a propriedade @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.

  • A opção max text repl size especifica a quantidade máxima de dados que podem ser inseridos em uma coluna publicada para replicação.The max text repl size option specifies the maximum amount of data that can be inserted into a column that is published for replication. Essa opção pode ser usada para controlar o tamanho de dados FILESTREAM que são replicados.This option can be used to control the size of FILESTREAM data that is replicated.

  • Se você especificar a opção de esquema para replicar o atributo FILESTREAM, mas filtrar a coluna uniqueidentifier requerida pelo FILESTREAM ou se especificar não replicar a restrição UNIQUE da coluna, a replicação não replicará o 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. A coluna é replicada apenas como uma coluna varbinary(max) .The column is replicated only as a varbinary(max) column.

Considerações sobre replicação de mesclagemConsiderations for Merge Replication

Se você usar colunas FILESTREAM em tabelas que são publicadas para replicação de mesclagem, observe as seguintes considerações:If you use FILESTREAM columns in tables that are published for merge replication, note the following considerations:

  • A replicação de mesclagem e o FILESTREAM exigem uma coluna de tipo de dados uniqueidentifier para identificar cada linha em uma tabela.Both merge replication and FILESTREAM require a column of data type uniqueidentifier to identify each row in a table. A replicação de mesclagem adicionará uma coluna automaticamente se a tabela não tiver uma.Merge replication automatically adds a column if the table does not have one. A replicação de mesclagem requer que a coluna tenha a propriedade ROWGUIDCOL definida e um padrão de NEWID() ou de NEWSEQUENTIALID().Merge replication requires that the column have the ROWGUIDCOL property set and a default of NEWID() or NEWSEQUENTIALID(). Além desses requisitos, o FILESTREAM requer que uma restrição UNIQUE seja definida para a coluna.In addition to these requirements, FILESTREAM requires that a UNIQUE constraint be defined for the column. Esses requisitos têm as seguintes consequências:These requirements have the following consequences:

    • Se você adicionar uma coluna FILESTREAM a uma tabela já publicada para replicação de mesclagem, verifique se a coluna uniqueidentifier tem uma restrição 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. Se ela não tiver uma restrição UNIQUE, adicione uma restrição nomeada à tabela no banco de dados de publicação.If it does not have a UNIQUE constraint, add a named constraint to the table in the publication database. Por padrão, a replicação de mesclagem publicará essa alteração de esquema e ela será aplicada a cada banco de dados de assinatura.By default, merge replication will publish this schema change, and it will be applied to each subscription database.

      Se você adicionar uma restrição UNIQUE manualmente conforme descrito e desejar remover a replicação de mesclagem, deverá primeiro remover a restrição UNIQUE. Caso contrário, haverá falha na remoção da replicação.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.

    • Por padrão, a replicação de mesclagem usa NEWSEQUENTIALID() porque ele pode fornecer desempenho melhor que NEWID ().By default, merge replication uses NEWSEQUENTIALID() because it can provide better performance than NEWID(). Se você adicionar uma coluna uniqueidentifier a uma tabela que será publicada para replicação de mesclagem, especifique NEWSEQUENTIALID() como o padrão.If you add a uniqueidentifier column to a table that will be published for merge replication, specify NEWSEQUENTIALID() as the default.

  • A replicação de mesclagem inclui uma otimização para replicar tipos de objetos grandes.Merge replication includes an optimization for replicating large object types. Essa otimização é controlada pelo parâmetro @stream_blob_columns de sp_addmergearticle.This optimization is controlled by the @stream_blob_columns parameter of sp_addmergearticle. Se você definir a opção de esquema para replicar o atributo FILESTREAM, o valor do parâmetro @stream_blob_columns será definido como true.If you set the schema option to replicate the FILESTREAM attribute, the @stream_blob_columns parameter value is set to true. Essa otimização pode ser substituída com sp_changemergearticle.This optimization can be overridden by using sp_changemergearticle. Esse procedimento armazenado permite que você defina @stream_blob_columns como false.This stored procedure enables you to set @stream_blob_columns to false. Se você adicionar uma coluna FILESTREAM a uma tabela já publicada para replicação de mesclagem, recomendamos definir a opção como true usando 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.

  • A habilitação da opção de esquema para FILESTREAM após a criação de um artigo poderá provocar falha na replicação, se os dados em uma coluna FILESTREAM excederem 2 GB e houver um conflito durante a replicação.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. Se essa situação for esperada, é recomendável descartar e recriar o artigo de tabela com a opção de esquema FILESTREAM adequada habilitada na hora da criação.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.

  • A replicação de mesclagem pode sincronizar dados FILESTREAM sobre uma conexão HTTPS usando Sincronização da Web.Merge replication can synchronize FILESTREAM data over an HTTPS connection by using Web Synchronization. Esses dados não podem exceder o limite de 50 MB para Sincronização da Web. Caso contrário, um erro de tempo de execução será gerado.This data cannot exceed the 50 MB limit for Web Synchronization; otherwise, a run-time error is generated.

Envio de logLog Shipping

OEnvio de log oferece suporte a FILESTREAM.Log shipping supports FILESTREAM. Os servidores primário e secundário devem estar executando o SQL Server 2008SQL Server 2008ou uma versão posterior e ter o FILESTREAM habilitado.Both the primary and secondary servers must be running SQL Server 2008SQL Server 2008, or a later version, and have FILESTREAM enabled.

Espelhamento de Banco de DadosDatabase Mirroring

O espelhamento de banco de dados não oferece suporte a FILESTREAM.Database mirroring does not support FILESTREAM. Um grupo de arquivos FILESTREAM não pode ser criado no servidor principal.A FILESTREAM filegroup cannot be created on the principal server. O espelhamento de banco de dados não pode ser configurado para um banco de dados que contenha grupos de arquivos FILESTREAM.Database mirroring cannot be configured for a database that contains FILESTREAM filegroups.

Indexação de texto completoFull-Text Indexing

Aindexação de texto completo funciona com uma coluna FILESTREAM da mesma maneira como funciona com uma coluna varbinary(max) .Full-text indexing works with a FILESTREAM column in the same way that it does with a varbinary(max) column. A tabela FILESTREAM deve ter uma coluna que contenha a extensão do nome do arquivo para cada BLOB FILESTREAM.The FILESTREAM table must have a column that contains the file name extension for each FILESTREAM BLOB. Para obter mais informações, veja Consultar com a pesquisa de texto completo, Configurar e gerenciar filtros para pesquisa, e 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).

O mecanismo de texto completo indexa o conteúdo dos BLOBs FILESTREAM.The full-text engine indexes the contents of the FILESTREAM BLOBs. Arquivos de indexação como imagens podem não ser úteis.Indexing files such as images might not be useful. Quando um BLOB FILESTREAM é atualizado, ele é reindexado.When a FILESTREAM BLOB is updated it is reindexed.

Clustering de failoverFailover Clustering

Para clustering de failover, os grupos de arquivos FILESTREAM devem ser colocados em um disco compartilhado.For failover clustering, FILESTREAM filegroups must be put on a shared disk. O FILESTREAM deve ser habilitado em cada nó do cluster que hospedará a instância FILESTREAM.FILESTREAM must be enabled on each node in the cluster that will host the FILESTREAM instance. Para obter mais informações, veja Configurar o FILESTREAM em um cluster de failover.For more information, see Set Up FILESTREAM on a Failover Cluster.

SQL Server ExpressSQL Server Express

SQL Server ExpressSQL Server Express oferece suporte a FILESTREAM.supports FILESTREAM. O limite de tamanho do banco de dados do 10 GB não inclui o contêiner de dados FILESTREAM.The 10-GB database size limit does not include the FILESTREAM data container.

Bancos de dados independentesContained Databases

O recurso FILESTREAM exige alguma configuração fora do banco de dados.The FILESTREAM feature requires some configuration outside of the database. Portanto, um banco de dados que usa FILESTREAM ou FileTable não é contido completamente.Therefore a database that uses FILESTREAM or FileTable is not fully contained.

Você poderá definir a retenção de banco de dados como PARTIAL se desejar usar determinados recursos de bancos de dados contidos, como usuários contidos.You can set database containment to PARTIAL if you want to use certain features of contained databases, such as contained users. Neste caso, no entanto, você deve estar atento que algumas das configurações de banco de dados não estão contidas no banco de dados e não são movidos automaticamente quando o banco de dados é movido.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 TambémSee Also

Objeto binário grande (Blob) Dados (SQL Server)Binary Large Object (Blob) Data (SQL Server)