Partilhar via


FileTables (SQL Server)

Aplica-se a:SQL Server

A funcionalidade FileTable traz suporte para o namespace de ficheiros Windows e compatibilidade com aplicações Windows aos dados armazenados no SQL Server. O FileTable permite que uma aplicação integre os seus componentes de armazenamento e gestão de dados, e fornece serviços SQL Server integrados – incluindo pesquisa em texto completo e pesquisa semântica – sobre dados e metadados não estruturados.

Por outras palavras, pode armazenar ficheiros e documentos em tabelas especiais no SQL Server chamadas FileTables, mas aceder a eles a partir de aplicações Windows como se estivessem armazenados no sistema de ficheiros, sem fazer quaisquer alterações às suas aplicações clientes.

A funcionalidade FileTable baseia-se na tecnologia SQL Server FILESTREAM. Para saber mais sobre o FILESTREAM, veja FILESTREAM (SQL Server).

Vantagens da funcionalidade FileTable

Os objetivos da funcionalidade FileTable incluem o seguinte:

  • Compatibilidade com a API do Windows para dados de ficheiros armazenados numa base de dados SQL Server. A compatibilidade com a API do Windows inclui o seguinte:

    • Acesso em streaming não transacional e atualizações locais aos dados do FILESTREAM.

    • Um espaço de nomes hierárquico de diretórios e ficheiros.

    • Armazenamento de atributos do ficheiro, como data de criação e data de modificação.

    • Suporte para APIs de gestão de ficheiros e diretórios do Windows.

  • Compatibilidade com outras funcionalidades do SQL Server, incluindo ferramentas de gestão, serviços e capacidades de consulta relacional sobre FILESTREAM e dados de atributos de ficheiros.

Assim, as FileTables removem uma barreira significativa à utilização do SQL Server para o armazenamento e gestão de dados não estruturados que atualmente residem como ficheiros em servidores de ficheiros. As empresas podem transferir estes dados dos servidores de ficheiros para as Tabelas de Ficheiros para tirar partido da administração integrada e dos serviços fornecidos pelo SQL Server. Ao mesmo tempo, podem manter a compatibilidade com aplicações Windows para as suas aplicações Windows existentes que veem estes dados como ficheiros no sistema de ficheiros.

O que é uma FileTable?

O SQL Server fornece uma tabela especial de ficheiros, também referida como FileTable, para aplicações que necessitam de armazenamento de ficheiros e diretórios na base de dados, com compatibilidade com a API do Windows e acesso não transacional. Uma FileTable é uma tabela de utilizador especializada com um esquema pré-definido que armazena dados do FILESTREAM, bem como informações da hierarquia de ficheiros e diretórios e atributos do ficheiro.

Uma FileTable fornece a seguinte funcionalidade:

  • Uma FileTable representa uma hierarquia de diretórios e ficheiros. Armazena dados relacionados com todos os nós dessa hierarquia, tanto para os diretórios como para os ficheiros que contêm. Esta hierarquia começa a partir de um diretório raiz que especifica quando cria a FileTable.

  • Cada linha num FileTable representa um ficheiro ou diretório.

  • Cada linha contém os seguintes elementos. Para mais informações sobre o esquema de uma FileTable, consulte FileTable Schema.

    • Uma coluna para fluxo de dados de file_stream e um identificador stream_id (GUID). (A file_stream coluna é NULL para um diretório.)

    • Tanto as colunas path_locator como parent_path_locator são usadas para representar e manter o item atual (ficheiro ou diretório) e a hierarquia de diretórios.

    • 10 atributos de ficheiro, como data de criação e data de modificação, que são úteis com APIs de I/O de ficheiros.

    • Uma coluna de tipo que suporta pesquisa em texto completo e pesquisa semântica sobre ficheiros e documentos.

  • Uma FileTable impõe certas restrições definidas pelo sistema e aciona para manter a semântica do namespace dos ficheiros.

  • Quando a base de dados está configurada para acesso não transacional, a hierarquia de ficheiros e diretórios representada no FileTable é exposta na partilha FILESTREAM configurada para a instância do SQL Server. Isto proporciona acesso ao sistema de ficheiros para aplicações Windows.

Algumas características adicionais das FileTables

  • Os dados de ficheiros e diretórios armazenados numa FileTable são expostos através de uma partilha do Windows para acesso não transacional a ficheiros em aplicações baseadas na API do Windows. Para uma aplicação Windows, isto parece uma partilha normal com os seus ficheiros e diretórios. As aplicações podem usar um conjunto rico de APIs do Windows para gerir os ficheiros e diretórios sob esta partilha.

  • A hierarquia de diretórios que surge através da partilha é uma estrutura de diretórios puramente lógica que é mantida dentro da FileTable.

  • Chamadas para criar ou alterar um ficheiro ou diretório através da partilha do Windows são interceptadas por um componente do SQL Server e refletidas nos dados relacionais correspondentes na FileTable.

  • As operações da API do Windows são de natureza não transacional e não estão associadas às transações dos utilizadores. No entanto, o acesso transacional a dados FILESTREAM armazenados numa FileTable é totalmente suportado, tal como acontece com qualquer coluna FILESTREAM numa tabela regular. Se precisar de modificar ficheiros frequentemente a partir de múltiplas ligações e garantir a proteção adequada dos ficheiros, utilize o acesso transacional FILESTREAM via OpenSqlFilestream(), em vez de bloqueios exclusivos de ficheiros ao nível da API do Windows.

  • As FileTables também podem ser consultadas e atualizadas através de acesso normal Transact-SQL. Também estão integrados com ferramentas de gestão SQL Server e funcionalidades como backup.

  • Não pode enviar um pedido de email através do Database Mail e anexar um ficheiro localizado num diretório FILESTREAM (e, portanto, no FileTable). O controlador de filtro do sistema de ficheiros RsFx0420 inspeciona os pedidos de E/S que entram e saem da pasta FILESTREAM. Se o pedido não for tanto do executável SQLServer como do código FILESTREAM, são explicitamente proibidos.

Considerações adicionais para a utilização das FileTables

Considerações administrativas

Sobre FILESTREAM e FileTables

Configuras as FileTables separadamente do FILESTREAM. Assim, pode continuar a usar a funcionalidade FILESTREAM sem permitir acessos não transacionais ou criar FileTables.

Não existe acesso não transacional aos dados do FILESTREAM, exceto através de FileTables. Portanto, quando se ativa o acesso não transacional, o comportamento das colunas e aplicações FILESTREAM existentes não é afetado.

Sobre FileTables e acesso não transacional

Pode ativar ou desativar o acesso não transacional ao nível da base de dados.

Pode configurar ou ajustar finamente o acesso não transacional ao nível da base de dados, desligando-o, ou ativando o acesso apenas leitura ou leitura/escrita total.

As FileTables não suportam ficheiros mapeados em memória

As FileTables não suportam ficheiros mapeados em memória. Notepad e Paint são dois exemplos comuns de aplicações que utilizam ficheiros mapeados em memória. Não podes usar estas aplicações no mesmo computador que o SQL Server para abrir ficheiros que estão armazenados numa FileTable. No entanto, pode usar estas aplicações a partir de um computador remoto para abrir ficheiros que são armazenados numa FileTable, porque nestas circunstâncias a funcionalidade de mapeamento de memória não é utilizada.