Usar FILESTREAM e FileTable com grupos de disponibilidade Always On
Aplica-se a: SQL Server – Somente Windows
Este artigo contém informações sobre como o usar os recursos FILESTREAM e FileTable com o grupos de disponibilidade AlwaysOn no SQL Server.
Todas as funcionalidades FILESTREAM têm suporte. Depois de um failover, os dados de FILESTREAM podem ser acessados em ambas as réplicas secundárias legíveis e no novo primário.
A funcionalidade FileTable tem suporte parcial. Depois de um failover, os dados de FileTable estarão acessíveis na réplica primária, mas os dados de FileTable não estarão acessíveis em réplicas secundárias legíveis.
Pré-requisitos
- Antes de adicionar um banco de dados que usa FILESTREAM, com ou sem FileTable, a um grupo de disponibilidade, verifique se o FILESTREAM está habilitado em toda instância de servidor que hospeda uma réplica de disponibilidade do grupo de disponibilidade. Para obter mais informações, consulte Enable and Configure FILESTREAM.
- Em um cluster de failover baseado em Windows Server 2012, você deve aplicar o hotfix discutido no artigo Não é possível acessar o compartilhamento FILESTREAM de VNN ao usar os recursos FILESTREAM e FileTable em um cluster de failover baseado no Windows Server 2012 para acessar o compartilhamento de arquivo usando VNN (Nome de Rede Virtual). Esse hotfix também está disponível no Catálogo do Microsoft Update.
Usar VNNs (nomes de rede virtual) para acesso FILESTREAM e FileTable
Ao habilitar o FILESTREAM em uma instância do SQL Server, um compartilhamento de nível de instância é criado para fornecer acesso aos dados FILESTREAM. Você acessa esse compartilhamento usando o nome do computador no seguinte formato:
\\<computer_name>\<filestream_share_name>
Em um grupo de disponibilidade AlwaysOn, porém, o nome do computador é virtualizado usando um nome de rede virtual ou VNN. Quando o computador for a réplica primária em um grupo de disponibilidade, e os bancos de dados do grupo de disponibilidade contiverem dados FILESTREAM, um compartilhamento de escopo definido por VNN também será criado para fornecer acesso aos dados FILESTREAM. Isso não afeta o acesso do Transact-SQL aos dados FILESTREAM. No entanto, os aplicativos que usam as APIs do sistema de arquivos têm de usar o compartilhamento de escopo definido por VNN, que tem um caminho no seguinte formato:
\\<VNN>\<filestream_share_name>
Esse compartilhamento de escopo definido por VNN é criado quando ocorre um dos eventos a seguir.
Você adiciona um banco de dados que contém dados FILESTREAM a um grupo de disponibilidade AlwaysOn na réplica primária. Nesse caso, o compartilhamento
\\<computer_name>\<filestream_share_name>
já existe. O compartilhamento\\<VNN>\<filestream_share_name>
será criado.Você habilita o FILESTREAM para acesso de transmissão de E/S de arquivos em uma réplica primária com grupos de disponibilidade. Os seguintes compartilhamentos serão criados:
\\<computer_name>\<filestream_share_name>
.\\<VNN1>\<filestream_share_name>
para o grupo de disponibilidade 1.\\<VNN2>\<filestream_share_name>
para o grupo de disponibilidade 2.
Esses compartilhamentos de escopo definido por VNN também serão propagados para todas as réplicas secundárias.
Quando o banco de dados que contém dados FILESTREAM ou FileTable pertence a um grupo de disponibilidade AlwaysOn:
As funções FILESTREAM e FileTable aceitam ou retornam VNNs (nomes de rede virtual) em vez de nomes de computadores. veja mais informações sobre essas funções em FILESTREAM e FileTable (Transact-SQL).
Todo o acesso aos dados FILESTREAM ou FileTable pelas APIs do sistema de arquivos deve usar VNNs em vez de nomes de computadores.
Se seu aplicativo tentar acessar o compartilhamento usando o nome do computador no formato \\<computer_name>\<filestream_share_name>
quando o banco de dados fizer parte de um grupo de disponibilidade, ocorrerá um erro.
Se seu aplicativo tentar acessar o compartilhamento usando o caminho de escopo definido por VNN quando o banco de dados não fizer parte de um grupo de disponibilidade, a solicitação poderá ser bem-sucedida. Nesse caso, o nome de rede virtual será resolvido como nome do computador. No entanto, esse uso não é recomendado, pois o caminho de escopo definido por VNN deixa de funcionar quando o grupo de disponibilidade é descartado.