Habilitar os pré-requisitos para FileTable
Aplica-se a: SQL Server
Descreve como habilitar os pré-requisitos para criar e usar FileTables.
Habilitando pré-requisitos para FileTable
Para habilitar os pré-requisitos para criar e usar FileTables, habilite os seguintes itens:
No nível de instância:
No nível de banco de dados:
Habilitando FILESTREAM no nível da instância
FileTables ampliam os recursos de FILESTREAM do SQL Server. Você precisa habilitar FILESTREAM para acesso de E/S a arquivo no nível do Windows e na instância do SQL Server para poder criar e usar FileTables.
Habilitar FILESTREAM no nível da instância
Para obter informações sobre como habilitar o FILESTREAM, veja Habilitar e configurar o FILESTREAM.
Quando você chama sp_configure
para habilitar FILESTREAM no nível da instância, precisa definir a opção filestream_access_level
como 2
. Veja mais informações em Opção de configuração de servidor no nível de acesso FILESTREAM (opção de configuração do servidor).
Permitir FILESTREAM através do firewall
Para obter informações sobre como permitir o FILESTREAM através do firewall, consulte Configure a Firewall for FILESTREAM Access.
Fornecer um grupo de arquivos FILESTREAM no nível do 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 esses pré-requisitos, veja Criar um banco de dados habilitado para FILESTREAM.
Habilitar 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 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 do banco de dados para cada banco de dados que conterá FileTables.
Verificar se acesso não transacional está habilitado em bancos de dados
Consulte a exibições 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
Habilitar 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 Transact-SQL
Quando você criar um novo banco de dados, chame a instrução CREATE DATABASE (Transact-SQL do QL Server) com a opção FILESTREAM de NON_TRANSACTED_ACCESS
.
CREATE DATABASE database_name
WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
Quando você alterar um banco de dados existente, chame a instrução ALTER DATABASE (Transact-SQL) com a opção de 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 de banco de dados (página Opções).
Especificar um diretório para FileTables no nível do banco de dados
Quando habilita acesso não transacional a arquivos no nível do banco de dados, você tem a opção de fornecer um nome de diretório ao mesmo tempo que a opção DIRECTORY_NAME
. Se você não fornecer um nome de diretório quando habilitar acesso não transacional, terá que fornecê-lo posteriormente para poder 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 Work with Directories and Paths in FileTables.
Especificar um diretório para FileTables no nível do 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
Quando você criar um novo banco de dados, chame a instrução CREATE DATABASE (Transact-SQL do QL Server) com a opção FILESTREAM de DIRECTORY_NAME
.
CREATE DATABASE database_name
WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
GO
Quando você alterar um banco de dados existente, chame a instrução ALTER DATABASE (Transact-SQL) com a opção de 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
Quando você 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 FILESTREAM de DIRECTORY_NAME
.
CREATE DATABASE database_name
FOR ATTACH WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO
Quando você restaurar um banco de dados, chame a instrução RESTORE (Transact-SQL) com a opção FILESTREAM de DIRECTORY_NAME
.
RESTORE DATABASE database_name
WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO
Especificar um diretório para FileTables com 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 de banco de dados (página Opções).
Ver os nomes de diretórios existentes para a instância
Para ver 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
Requisitos e restrições para o diretório no nível do banco de dados
A configuração do
DIRECTORY_NAME
é opcional quando você chamaCREATE DATABASE
ouALTER DATABASE
. Se você não especificar um valor paraDIRECTORY_NAME
, o nome de diretório permanecerá nulo. Entretanto, você só pode criar FileTables no banco de dados até especificar um valor paraDIRECTORY_NAME
no nível do 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, não é possível redefinir
DIRECTORY_NAME
como um valor nulo.Quando você anexa ou restaura um banco de dados, a operação falhará se o novo banco de dados tiver um valor para
DIRECTORY_NAME
que já existe na instância de destino. Especifique um valor exclusivo paraDIRECTORY_NAME
quando você chamarCREATE DATABASE FOR ATTACH
ouRESTORE DATABASE
.Quando você atualiza um banco de dados existente, o valor de
DIRECTORY_NAME
é nulo.Quando você habilita ou desabilita 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 e 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.