Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Descreve como criar uma nova FileTable ou alterar ou soltar uma FileTable existente.
Criar uma FileTable
Uma FileTable é uma tabela de usuário especializada que tem um esquema predefinido e fixo. Esse esquema armazena dados FILESTREAM, informações de arquivo e diretório e atributos de arquivo. Para obter informações sobre o esquema FileTable, consulte FileTable Schema.
Você pode criar uma nova FileTable usando o Transact-SQL ou o SQL Server Management Studio. Como uma FileTable tem um esquema fixo, não é necessário especificar uma lista de colunas. A sintaxe simples para criar uma FileTable permite especificar:
Um nome de diretório. Na hierarquia de pastas FileTable, esse diretório de nível de tabela torna-se filho do diretório de banco de dados especificado no nível de banco de dados e pai dos arquivos ou diretórios armazenados na tabela.
O nome do agrupamento a ser usado para nomes de arquivo na
Namecoluna da FileTable.Os nomes a serem usados para as 3 chaves primárias e restrições exclusivas que são criadas automaticamente.
Criar uma FileTable com Transact-SQL
Crie uma FileTable chamando a instrução CREATE TABLE com a AS FILETABLE opção. Como uma FileTable tem um esquema fixo, não é necessário especificar uma lista de colunas. Você pode especificar as seguintes configurações para a nova FileTable:
FILETABLE_DIRECTORY. Especifica o diretório que serve como o diretório raiz para todos os arquivos e diretórios armazenados na FileTable. Esse nome deve ser exclusivo entre todos os nomes de diretório FileTable no banco de dados. A comparação para exclusividade não diferencia maiúsculas de minúsculas, independentemente das configurações de ordenação atuais.Esse valor tem um tipo de dados de nvarchar(255) e usa um agrupamento fixo de
Latin1_General_CI_AS_KS_WS.O nome do diretório fornecido deve estar em conformidade com os requisitos do sistema de arquivos para um nome de diretório válido.
Esse nome deve ser exclusivo entre todos os nomes de diretório FileTable no banco de dados. A comparação para unicidade não distingue maiúsculas de minúsculas, independentemente das configurações de agrupamento atuais.
Se você não fornecer um nome de diretório ao criar a FileTable, o nome da própria FileTable será usado como o nome do diretório.
FILETABLE_COLLATE_FILENAME. Especifica o nome da ordenação a ser aplicada na colunaNameda FileTable.A ordenação especificada deve não diferenciar maiúsculas de minúsculas para estar em conformidade com a semântica de nomenclatura de arquivos do Windows.
Se você não fornecer um valor para
FILETABLE_COLLATE_FILENAME, ou especificardatabase_default, a coluna herdará o agrupamento do banco de dados atual. Se o agrupamento de banco de dados atual for sensível a maiúsculas e minúsculas, será gerado um erro e a operaçãoCREATE TABLEfalhará.
Você também pode especificar os nomes a serem usados para as 3 chaves primárias e restrições exclusivas que são criadas automaticamente. Se você não fornecer nomes, o sistema gerará nomes conforme descrito mais adiante neste artigo.
FILETABLE_PRIMARY_KEY_CONSTRAINT_NAMEFILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAMEFILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME
Examples
O exemplo a seguir cria uma nova FileTable e especifica valores definidos pelo usuário para FILETABLE_DIRECTORY e FILETABLE_COLLATE_FILENAME.
CREATE TABLE DocumentStore AS FILETABLE
WITH (
FILETABLE_DIRECTORY = 'DocumentTable',
FILETABLE_COLLATE_FILENAME = database_default
);
GO
O exemplo a seguir também cria um novo FileTable. Como os valores definidos pelo usuário não são especificados, o valor de FILETABLE_DIRECTORY torna-se o nome da FileTable, o valor de FILETABLE_COLLATE_FILENAME torna-se database_default e a chave primária e as restrições exclusivas recebem nomes gerados pelo sistema.
CREATE TABLE DocumentStore AS FILETABLE;
GO
Criar uma FileTable com o SQL Server Management Studio
No Pesquisador de Objetos, expanda os objetos no banco de dados selecionado, clique com o botão direito do mouse na pasta Tabelas e selecione Nova Tabela de Arquivos.
Esta opção abre uma nova janela de script, que contém um modelo de script Transact-SQL que você pode personalizar e executar para criar uma FileTable. Use a opção Especificar valores para parâmetros de modelo no menu Consulta para personalizar o script facilmente.
Requisitos e restrições para criar uma FileTable
Não é possível alterar uma tabela existente para convertê-la em uma FileTable.
O diretório pai especificado anteriormente no nível do banco de dados deve ter um valor não nulo. Para obter informações sobre como especificar o diretório no nível de banco de dados, consulte Habilitar os pré-requisitos para FileTable.
Uma FileTable requer um grupo de arquivos FILESTREAM válido, uma vez que uma FileTable contém uma coluna FILESTREAM. Opcionalmente, você pode especificar um grupo de arquivos FILESTREAM válido como parte do
CREATE TABLEcomando para criar uma FileTable. Se você não especificar um grupo de arquivos, a FileTable usará o grupo de arquivos FILESTREAM padrão para o banco de dados. Se o banco de dados não tiver um grupo de arquivos FILESTREAM, um erro será gerado.Não é possível criar uma restrição de tabela como parte de uma
CREATE TABLEAS FILETABLEinstrução. No entanto, você pode adicionar a restrição posteriormente usando umaALTER TABLEinstrução.Não é possível criar uma FileTable no
tempdbbanco de dados ou em qualquer outro banco de dados do sistema.Não é possível criar uma FileTable como uma tabela temporária.
Alterar uma FileTable
Como uma FileTable tem um esquema predefinido e fixo, não é possível adicionar ou alterar suas colunas. No entanto, você pode adicionar índices personalizados, gatilhos, restrições e outras opções a uma FileTable.
Para obter informações sobre como usar a ALTER TABLE instrução para habilitar ou desabilitar o namespace FileTable, incluindo as restrições definidas pelo sistema, consulte Manage FileTables.
Alterar o diretório de uma FileTable usando Transact-SQL
Execute a instrução ALTER TABLE e forneça um valor novo e válido para a opção SET de FILETABLE_DIRECTORY.
Example
ALTER TABLE filetable_name SET (FILETABLE_DIRECTORY = N'directory_name');
GO
Alterar o diretório de uma FileTable usando o SQL Server Management Studio
No Pesquisador de Objetos, clique com o botão direito do mouse na FileTable e selecione Propriedades para abrir a caixa de diálogo Propriedades da Tabela . Na página FileTable , insira um novo valor para FileTable directory name.
Requisitos e restrições para alterar uma FileTable
Não é possível alterar o valor de
FILETABLE_COLLATE_FILENAME.Não é possível alterar, descartar ou desabilitar as colunas definidas pelo sistema de uma FileTable.
Não é possível adicionar novas colunas de usuário, colunas computadas ou colunas computadas persistentes a uma FileTable.
Eliminar uma FileTable
Você pode eliminar um FileTable utilizando a sintaxe comum para a instrução DROP TABLE.
Quando elimina uma FileTable, os seguintes objetos também são eliminados:
Todas as colunas da FileTable e todos os objetos associados à tabela, como índices, restrições e gatilhos, também são descartados.
O diretório FileTable e os subdiretórios que ele continha desaparecem do arquivo FILESTREAM e da hierarquia de diretórios do banco de dados.
O DROP TABLE comando falhará se houver identificadores de arquivo abertos no namespace de arquivo da FileTable. Para obter informações sobre como fechar identificadores abertos, consulte Manage FileTables.
Outros objetos de banco de dados são criados quando você cria uma FileTable
Quando você cria uma nova FileTable, alguns índices e restrições definidos pelo sistema também são criados. Você não pode alterar ou soltar esses objetos; eles desaparecem somente quando a própria FileTable é descartada. Para ver a lista desses objetos, consulte a vista de catálogo sys.filetable_system_defined_objects.
--View all objects for all filetables, unsorted
SELECT *
FROM sys.filetable_system_defined_objects;
GO
--View sorted list with friendly names
SELECT OBJECT_NAME(parent_object_id) AS 'FileTable',
OBJECT_NAME(object_id) AS 'System-defined Object'
FROM sys.filetable_system_defined_objects
ORDER BY FileTable, 'System-defined Object';
GO
Índices que são criados quando você cria uma nova FileTable
Quando você cria uma nova FileTable, os seguintes índices definidos pelo sistema também são criados:
| Columns | Tipo de índice | Clustered |
|---|---|---|
[path_locator] ASC |
Chave primária | Não |
[parent_path_locator] ASC, [name] ASC |
Unique | Não |
[stream_id] ASC |
Unique | Não |
Restrições que são criadas quando você cria uma nova FileTable
Quando você cria uma nova FileTable, as seguintes restrições definidas pelo sistema também são criadas:
| Constraints | Impõe |
|---|---|
Restrições padrão nas seguintes colunas:creation_timeis_archiveis_directoryis_hiddenis_offlineis_readonlyis_systemis_temporarylast_access_timelast_write_timepath_locatorstream_id |
As restrições padrão definidas pelo sistema impõem valores padrão para as colunas especificadas. |
| Verificar restrições | As restrições de verificação definidas pelo sistema impõem os seguintes requisitos: Nomes de ficheiros válidos. Atributos de arquivo válidos. O objeto pai deve ser um diretório. A hierarquia de namespace é bloqueada durante a manipulação de arquivos. |
Convenção de nomenclatura para as restrições definidas pelo sistema
As restrições definidas pelo sistema descritas anteriormente são nomeadas no formato <constraintType>_<tablename>[_<columnname>]_<uniquifier> em que:
'<constraint_type> é CK (restrição de verificação), DF (restrição padrão), FK (chave estrangeira), PK (chave primária) ou UQ (restrição exclusiva).
<uniquifier>é uma cadeia de caracteres gerada pelo sistema para tornar o nome exclusivo. Essa cadeia de caracteres pode conter o nome FileTable e um identificador exclusivo.