Partilhar via


Usar FILESTREAM e FileTable com grupos de disponibilidade Always On

Aplica-se a: SQL Server em Windows

Este artigo contém informações sobre o uso dos recursos FILESTREAM e FileTable com grupos de disponibilidade Always On no SQL Server.

Todas as funcionalidades FILESTREAM são suportadas. Após um failover, os dados FILESTREAM ficam acessíveis em réplicas secundárias legíveis e na nova primária.

A funcionalidade FileTable é parcialmente suportada. Após um failover, os dados FileTable ficam acessíveis na réplica primária, mas os dados FileTable não são acessíveis em réplicas secundárias legíveis.

Pré-requisitos

Usar nomes de rede virtual (VNNs) para acesso a FILESTREAM e FileTable

Quando você habilita FILESTREAM em uma instância do SQL Server, um compartilhamento no 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>

No entanto, em um grupo de disponibilidade Always On, o nome do computador é virtualizado através de um Nome de Rede Virtual (VNN). Quando o computador é a réplica primária em um grupo de disponibilidade e os bancos de dados no grupo de disponibilidade contêm dados FILESTREAM, um compartilhamento com escopo VNN também é criado para fornecer acesso aos dados FILESTREAM. Isso não afeta o acesso Transact-SQL aos dados FILESTREAM. No entanto, os aplicativos que usam APIs do sistema de arquivos precisam usar o compartilhamento com escopo VNN, que tem um caminho no seguinte formato:

  • \\<VNN>\<filestream_share_name>

Esse compartilhamento com escopo VNN é criado quando ocorre um dos seguintes eventos.

  • Você adiciona um banco de dados que contém dados FILESTREAM a um grupo de disponibilidade Always On na réplica primária. Neste caso, a quota \\<computer_name>\<filestream_share_name> já existe. O compartilhamento \\<VNN>\<filestream_share_name> é criado.

  • Você habilita FILESTREAM para acesso de streaming de E/S de arquivo em uma réplica primária que tenha grupos de disponibilidade. Os seguintes compartilhamentos são criados:

    1. \\<computer_name>\<filestream_share_name>.
    2. \\<VNN1>\<filestream_share_name> para o grupo de disponibilidade 1.
    3. \\<VNN2>\<filestream_share_name> para o grupo de disponibilidade 2.

Esses compartilhamentos com escopo VNN também sã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 Always On:

  • As funções FILESTREAM e FileTable aceitam ou retornam nomes de rede virtual (VNNs) em vez de nomes de computador. Para obter mais informações sobre essas funções, consulte funções FILESTREAM e FileTable (Transact-SQL).

  • Todo o acesso a dados FILESTREAM ou FileTable através das APIs do sistema de arquivos deve usar VNNs em vez de nomes de computador.

Se seu aplicativo tentar acessar o compartilhamento usando o nome do computador no formato \\<computer_name>\<filestream_share_name> em que o banco de dados faz parte de um grupo de disponibilidade, um erro será gerado.

Se a sua aplicação tentar aceder à partilha usando um caminho delimitado por VNN quando o banco de dados não faça parte de um grupo de disponibilidade, o pedido pode ser bem-sucedido. Nesse caso, o nome da rede virtual é traduzido como o nome do computador. No entanto, esse uso é fortemente desencorajado, uma vez que o caminho com escopo VNN para de funcionar se o grupo de disponibilidade for eliminado.