Usando o FILESTREAM com outros recursos do SQL Server
Como dados FILESTREAM estão no sistema de arquivos, este tópico fornece algumas considerações, diretrizes e limitações para uso de FILESTREAM com os seguintes recursos no SQL Server:
Instantâneos do banco de dados
Replicação
Envio de log
Espelhamento de banco de dados
Texto completo
Clustering de failover
SQL Server Express
Instantâneos do banco de dados
O SQL Server não oferece suporte a instantâneos do banco de dados para grupos de arquivos FILESTREAM. 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.
Ao usar FILESTREAM, você pode criar instantâneos do banco de dados de grupos de arquivos padrão (não-FILESTREAM). Os grupos de arquivos FILESTREAM são marcados como offline para esses instantâneos do bancos de dados.
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:
Não foi possível continuar a verificação com NOLOCK devido ao movimento de dados.
Replicação
Uma coluna varbinary(max) que tem o atributo FILESTREAM ativado no Publicador pode ser replicada para um Assinante com ou sem o atributo FILESTREAM. 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. Para obter mais informações sobre como definir opções de esquema, consulte Como especificar opções de esquema (SQL Server Management Studio) e Como especificar opções de esquema (Programação Transact-SQL de replicação). 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 de tempo de execução será gerado. Recomendamos replicar o atributo FILESTREAM, a menos que você esteja replicando dados para o SQL Server 2005. A replicação de tabelas com colunas FILESTREAM para Assinantes do SQL Server 2000 não tem suporte, independentemente de como essa opção de esquema é definida. Para obter mais informações sobre como replicar dados para versões anteriores do SQL Server, consulte Usando várias versões do SQL Server em uma topologia de replicação.
Observação |
---|
A replicação de valores de dados grandes do SQL Server 2008 para Assinantes do SQL Server 2005 é limitada a um máximo de 256 MB de valores de dados. Para obter mais informações, consulte Especificações de capacidade máxima. |
Considerações sobre replicação transacional
Se você usar colunas FILESTREAM em tabelas que são publicadas para replicação transacional, observe as seguintes considerações:
Se alguma tabela incluir colunas que tenham o atributo FILESTREAM, você não poderá usar valores de database snapshot ou database snapshot character para a propriedade @sync\_method de 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. Essa opção pode ser usada para controlar o tamanho de dados FILESTREAM que são replicados. Para obter mais informações, consulte Opção max text repl size.
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. A coluna é replicada apenas como uma coluna varbinary(max).
Considerações sobre replicação de mesclagem
Se você usar colunas FILESTREAM em tabelas que são publicadas para replicação de mesclagem, observe as seguintes considerações:
A replicação de mesclagem e o FILESTREAM exigem uma coluna de tipo de dados uniqueidentifier para identificar cada linha em uma tabela. A replicação de mesclagem adicionará uma coluna automaticamente se a tabela não tiver uma. A replicação de mesclagem requer que a coluna tenha a propriedade ROWGUIDCOL definida e um padrão de NEWID() ou de NEWSEQUENTIALID(). Além desses requisitos, o FILESTREAM requer que uma restrição UNIQUE seja definida para a coluna. Esses requisitos têm as seguintes conseqüências:
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. Se ela não tiver uma restrição UNIQUE, adicione uma restrição nomeada à tabela no banco de dados de publicação. 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. Para obter mais informações sobre alterações de esquema, consulte Fazendo alterações de esquema em bancos de dados de publicação.
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.
Por padrão, a replicação de mesclagem usa NEWSEQUENTIALID() porque ele pode fornecer desempenho melhor que NEWID (). Se você adicionar uma coluna uniqueidentifier a uma tabela que será publicada para replicação de mesclagem, especifique NEWSEQUENTIALID() como o padrão.
A replicação de mesclagem inclui uma otimização para replicar tipos de objetos grandes. Essa otimização é controlada pelo parâmetro @stream\_blob\_columns de sp_addmergearticle. Se você definir a opção de esquema para replicar o atributo FILESTREAM, o parâmetro @stream\_blob\_columns será definido como true. Essa otimização pode ser substituída usando sp_changemergearticle. Esse procedimento armazenado permite definir @stream\_blob\_columns como 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.
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. 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.
A replicação de mesclagem pode sincronizar dados FILESTREAM sobre uma conexão HTTPS usando Sincronização da Web. 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.
Envio de log
O Envio de log oferece suporte a FILESTREAM. Os servidores primário e secundário devem estar executando o SQL Server 2008 ou uma versão posterior e ter o FILESTREAM habilitado.
Espelhamento de banco de dados
O espelhamento de banco de dados não oferece suporte a FILESTREAM. Um grupo de arquivos FILESTREAM não pode ser criado no servidor principal. O espelhamento de banco de dados não pode ser configurado para um banco de dados que contém grupos de arquivos FILESTREAM.
Indexação de texto completo
A Indexação de texto completo funciona com uma coluna FILESTREAM da mesma maneira como com uma coluna varbinary(max). A tabela FILESTREAM deve ter uma coluna que contenha a extensão do nome do arquivo para cada BLOB FILESTREAM. Para obter mais informações, consulte Consultando colunas varbinary(max) e xml (Pesquisa de Texto Completo), Filtros da pesquisa de texto completo,Indexação de texto completo e processo de consulta e sys.fulltext_document_types (Transact-SQL).
O mecanismo de texto completo indexa o conteúdo dos BLOBs FILESTREAM. Arquivos de indexação como imagens podem não ser úteis. Quando um BLOB FILESTREAM é atualizado, ele é reindexado.
Clustering de failover
Para clustering de failover, os grupos de arquivos FILESTREAM devem ser colocados em um disco compartilhado. O FILESTREAM deve ser habilitado em cada nó do cluster que hospedará a instância FILESTREAM. Para obter mais informações, consulte Como configurar FILESTREAM em um cluster de failover.
SQL Server Express
O SQL Server Express oferece suporte a FILESTREAM. O limite de tamanho do banco de dados do 4 GB não inclui o contêiner de dados FILESTREAM.