Compartilhar via


Habilitar os pré-requisitos para FileTable

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

Habilitando os pré-requisitos para FileTable

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

Habilitando FILESTREAM no nível da instância

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

Como habilitar FILESTREAM no nível da instância

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

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

Como permitir FILESTREAM por meio do Firewall

Para obter informações sobre como permitir FILESTREAM por meio do firewall, consulte Configurar um Firewall para acesso FILESTREAM.

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

Antes de criar FileTables em um banco de dados, o banco de dados deve ter um grupo de arquivos FILESTREAM. Para obter mais informações sobre esse pré-requisito, consulte Criar um banco de dados FILESTREAM-Enabled.

Habilitando o acesso não transacional no nível do banco de dados

As FileTables permitem que os aplicativos do Windows obtenham um identificador de arquivo do Windows para dados FILESTREAM sem a necessidade de uma transação. Para permitir esse acesso não transacional aos arquivos armazenados no SQL Server, você precisa especificar o nível desejado de acesso não transacional no nível do 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

Pesquise 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  

Como habilitar o acesso não transacional no nível do 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 o Transact-SQL

```sql  
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 NON_TRANSACTED_ACCESS FILESTREAM.

    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 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).

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

Ao habilitar o acesso não transacional aos arquivos no nível do banco de dados, você pode, opcionalmente, 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 mais tarde antes de criar FileTables no banco de dados.

Na hierarquia da pasta FileTable, esse diretório no nível do banco de dados torna-se o filho do nome de compartilhamento especificado para FILESTREAM no nível da 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 do banco de dados

O nome que você especificar deve ser exclusivo em toda a instância para diretórios no nível do banco de dados.

Especificar um diretório para FileTables usando Transact-SQL

```sql  
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 DIRECTORY_NAME FILESTREAM. Quando você usa essas opções para alterar o nome do diretório, o banco de dados deve ser bloqueado exclusivamente, sem identificadores de arquivo 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 (SQL Server Transact-SQL) com a opção FOR ATTACH e com a opção DIRECTORY_NAME FILESTREAM.

    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 DIRECTORY_NAME FILESTREAM.

    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).

Como visualizar nomes de diretório existentes para a instância

Para exibir a lista de nomes de diretório 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  

Requisitos e restrições para o diretório Database-Level

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

  • O nome do diretório que você fornece deve estar em conformidade com os 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 o DIRECTORY_NAME de volta para um valor nulo.

  • Quando você anexa ou restaura um banco de dados, a operação falha se o novo banco de dados tiver um valor para DIRECTORY_NAME que já existe na instância de destino. Especifique um valor exclusivo para DIRECTORY_NAME ao chamar CREATE DATABASE FOR ATTACH ou RESTORE DATABASE.

  • Quando você atualiza um banco de dados existente para o SQL Server 2014, o valor de DIRECTORY_NAME é nulo.

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

  • Quando você exclui um banco de dados habilitado para FileTables, o diretório no nível do banco de dados e todas as estruturas de diretório de todas as FileTables sob ele são removidos.