Share via


Habilitar os pré-requisitos para FileTable

Descreve como habilitar os pré-requisitos para criar e usar FileTables.

Neste tópico

Desejo...

  • Habilitar os pré-requisitos para FileTable

  • Habilitar o FILESTREAM no nível de instância

    • Como habilitar o FILESTREAM no nível de instância

    • Como permitir o FILESTREAM através do Firewall

  • Fornecer um grupo de arquivos FILESTREAM

  • Habilitar o acesso não transacional no nível de banco de dados

    • Como verificar se o acesso não transacional está habilitado em bancos de dados

    • Como habilitar o acesso não transacional no nível de banco de dados

  • Especifique um diretório para FileTables no nível de banco de dados

    • Como especificar um diretório para FileTables no nível de banco de dados

    • Como exibir nomes de diretórios existentes para a instância

    • Requisitos e restrições para o diretório em nível de banco de dados

Habilitando os pré-requisitos para FileTable

Para habilitar os pré-requisitos para criar e usar FileTables, habilite os seguintes itens:

  • No nível de instância:

    • Habilitar o FILESTREAM no nível de instância
  • No nível de banco de dados:

    • Forneça um grupo de arquivos FILESTREAM no nível de banco de dados

    • Habilitar o acesso não transacional no nível de banco de dados

    • Especifique um diretório para FileTables no nível de banco de dados

[TOP]

Habilitando o FILESTREAM no nível de instância

As FileTables ampliam os recursos de FILESTREAM do SQL Server. Portanto, você precisa habilitar o FILESTREAM para acesso de E/S de arquivo no nível do Windows e na instância do SQL Server para que possa criar e usar FileTables.

Como habilitar FILESTREAM no nível de instância

Para obter informações sobre como habilitar FILESTREAM, consulte Habilitar e configurar FILESTREAM.

Quando você chama o sp_configure para habilitar o FILESTREAM no nível de instância, precisa definir a opção filestream_access_level como 2. Para obter mais informações, consulte Opção de configuração de servidor filestream access level.

[TOP]

Como permitir o FILESTREAM através do Firewall

Para obter informações sobre como permitir o FILESTREAM através do firewall, consulte Configurar um firewall para acesso ao FILESTREAM.

[TOP]

Fornecendo um grupo de arquivos FILESTREAM no nível de banco de dados

Antes de você poder criar FileTables em um banco de dados, o banco de dados deve ter um grupo de arquivos FILESTREAM. Para obter mais informações sobre este pré-requisito, consulte Criar um banco de dados habilitado para FILESTREAM.

[TOP]

Habilitando o acesso não transacional em nível de banco de dados

As FileTables permitem que os aplicativos do Windows obtenham um identificador de arquivo do Windows para dados de FILESTREAM sem precisar de uma transação. Para permitir esse acesso não transacional a arquivos armazenados no SQL Server, você deve especificar o nível desejado de acesso não transacional no nível de banco de dados para cada banco de dados que conterá FileTables.

Como verificar se o acesso não transacional está habilitado em bancos de dados

Consulte a exibição do catálogo sys.database_filestream_options (Transact-SQL) e verifique as colunas non_transacted_access e non_transacted_access_desc.

SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
    FROM sys.database_filestream_options;
GO

[TOP]

Como habilitar o acesso não transacional no nível de banco de dados

Os níveis disponíveis de acesso não transacional são FULL, READ_ONLY e OFF.

  • Especificar o nível de acesso não transacional usando Transact-SQL

    • Ao criar um novo banco de dados, chame a instrução CREATE DATABASE (Transact-SQL) com a opção FILESTREAM NON_TRANSACTED_ACCESS.

      CREATE DATABASE database_name
          WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' )
      
    • Ao alterar um banco de dados existente, chame a instrução ALTER DATABASE (Transact-SQL) com a opção FILESTREAM NON_TRANSACTED_ACCESS.

      ALTER DATABASE database_name
          SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' )
      
  • Especificar o nível de acesso não transacional usando o SQL Server Management Studio
    Você pode especificar o nível de acesso não transacional no campo Acesso Não Transacionado a FILESTREAM da página Opções da caixa de diálogo Propriedades do Banco de dados. Para obter mais informações sobre essa caixa de diálogo, consulte Propriedades do Banco de dados (página Opções).

[TOP]

Especificando um diretório para FileTables no nível de banco de dados

Quando você habilita o acesso não transacional a arquivos no nível de banco de dados, tem como opção fornecer um nome de diretório ao mesmo tempo usando a opção DIRECTORY_NAME. Se você não fornecer um nome de diretório ao habilitar o acesso não transacional, deverá fornecê-lo posteriormente para que possa criar FileTables no banco de dados.

Na hierarquia de pastas de FileTable, esse diretório em nível de banco de dados se torna o filho do nome de compartilhamento especificado para FILESTREAM no nível de instância, e o pai das FileTables criadas no banco de dados. Para obter mais informações, consulte Trabalhar com diretórios e caminhos em FileTables.

Como especificar um diretório para FileTables no nível de banco de dados

O nome que você especifica deve estar exclusivo na instância para diretórios em nível de banco de dados.

  • Especificar um diretório para FileTables usando Transact-SQL

    • Ao criar um novo banco de dados, chame a instrução CREATE DATABASE (Transact-SQL) com a opção FILESTREAM DIRECTORY_NAME.

      CREATE DATABASE database_name
          WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
      GO
      
    • Ao alterar um banco de dados existente, chame a instrução ALTER DATABASE (Transact-SQL) com a opção FILESTREAM DIRECTORY_NAME. Quando você usa estas opções para alterar o nome do diretório, o banco de dados deve ser bloqueado de forma exclusiva, sem identificadores de arquivos abertos.

      ALTER DATABASE database_name
          SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
      GO
      
    • Ao anexar um banco de dados, chame a instrução CREATE DATABASE (Transact-SQL) com a opção FOR ATTACH e com a opção FILESTREAM DIRECTORY_NAME.

      CREATE DATABASE database_name
          FOR ATTACH WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
      GO
      
    • Ao restaurar um banco de dados, chame a instrução RESTORE (Transact-SQL) com a opção FILESTREAM DIRECTORY_NAME.

      RESTORE DATABASE database_name
          WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
      GO
      
  • Especificar um diretório para FileTables usando o SQL Server Management Studio
    Você pode especificar um nome de diretório no campo Nome do Diretório FILESTREAM da página Opções da caixa de diálogo Propriedades do Banco de dados. Para obter mais informações sobre essa caixa de diálogo, consulte Propriedades do Banco de dados (página Opções).

[TOP]

Como exibir nomes de diretórios existentes para a instância

Para exibir a lista de nomes de diretórios existentes para a instância, consulte a exibição do catálogo sys.database_filestream_options (Transact-SQL) e verifique a coluna filestream_database_directory_name.

SELECT DB_NAME ( database_id ), directory_name
    FROM sys.database_filestream_options;
GO

[TOP]

Requisitos e restrições para o diretório em nível de banco de dados

  • Definir DIRECTORY_NAME é opcional quando você chama CREATE DATABASE ou ALTER DATABASE. Se você não especificar um valor para DIRECTORY_NAME, o nome de diretório permanecerá nulo. Entretanto, você não poderá criar FileTables no banco de dados até especificar um valor para DIRECTORY_NAME no nível de banco de dados.

  • O nome de diretório que você fornece deve atender aos requisitos do sistema de arquivos para um nome de diretório válido.

  • Quando o banco de dados contém FileTables, você não pode definir DIRECTORY_NAME como um valor nulo.

  • Quando você anexar ou restaurar um banco de dados, a operação falhará se o novo banco de dados tiver um valor para DIRECTORY_NAME já existente na instância de destino. Especifique um valor exclusivo para DIRECTORY_NAME quando chamar CREATE DATABASE FOR ATTACH ou RESTORE DATABASE.

  • Quando você atualizar um banco de dados existente para SQL Server 2012, o valor de DIRECTORY_NAME será nulo.

  • Quando você habilita ou desabilita o acesso não transacional no nível de banco de dados, a operação não verifica se o nome de diretório foi especificado ou se é exclusivo.

  • Quando você remove um banco de dados que foi habilitado para FileTables, o diretório no nível de banco de dados e todas as estruturas de diretórios de todos os FileTables contidos nele serão removidos.

[TOP]