FileTables (SQL Server)

Aplica-se a:SQL Server

O recurso FileTable oferece suporte para o namespace de arquivo do Windows e compatibilidade de aplicativos do Windows para os dados de arquivo armazenados no SQL Server. O FileTable permite que um aplicativo integre seus componentes de armazenamento e gerenciamento de dados e forneça serviços integrados do SQL Server, inclusive pesquisa de texto completo e pesquisa semântica, em dados não estruturados e metadados.

Em outras palavras, você pode armazenar arquivos e documentos em tabelas especiais no SQL Server, denominadas FileTables, mas acessá-los a partir de aplicativos do Windows como se eles estivessem armazenados no sistema de arquivos, sem fazer alterações nos seus aplicativos cliente.

O recurso FileTable se baseia na tecnologia FILESTREAM do SQL Server. Para saber mais sobre o FILESTREAM, veja FILESTREAM (SQL Server).

Benefícios do recurso FileTable

Os objetivos do recurso FileTable incluem o seguinte:

  • Compatibilidade com APIs do Windows para dados de arquivos armazenados em um banco de dados do SQL Server. A compatibilidade com APIs do Windows inclui o seguinte:

    • Acesso de streaming não transacional e atualizações in loco para dados FILESTREAM.

    • Um namespace hierárquico de diretórios e arquivos.

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

    • Suporte para APIs de gerenciamento de arquivos e diretórios do Windows.

  • Compatibilidade com outros recursos do SQL Server que incluem ferramentas de gerenciamento, serviços e recursos de consulta relacional em dados de atributo de arquivo e FILESTREAM.

Com isso, as FileTables removem uma barreira significativa ao uso do SQL Server para o armazenamento e gerenciamento de dados não estruturados que residem atualmente como arquivos em servidores de arquivos. As empresas podem mover esses dados de servidores de arquivos para FileTables para aproveitar a administração integrada e os serviços fornecidos pelo SQL Server. Ao mesmo tempo, podem manter a compatibilidade de aplicativos do Windows para seus aplicativos do Windows existentes que consultam esses dados como arquivos no sistema de arquivos.

O que é uma FileTable?

O SQL Server oferece uma tabela de arquivosespecial, também chamada de FileTable, para aplicativos que exigem o armazenamento de arquivos e diretório no banco de dados, com a compatibilidade de API do Windows e o acesso não transacional. Uma FileTable é uma tabela de usuário especializada com um esquema predefinido que armazena dados FILESTREAM, além de informações sobre a hierarquia de arquivos e diretórios e atributos de arquivos.

Uma FileTable fornece a seguinte funcionalidade:

  • Uma FileTable representa uma hierarquia de diretórios e arquivos. Armazena dados relacionados a todos os nós dessa hierarquia, tanto aos diretórios quanto aos arquivos que contêm. Essa hierarquia começa em um diretório raiz que você especifica ao criar a FileTable.

  • Cada linha de uma FileTable representa um arquivo ou um diretório.

  • Cada linha contém os seguintes itens: Para obter mais informações sobre o esquema de uma FileTable, veja Esquema de FileTable.

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

    • As colunas path_locator e parent_path_locator para representar e manter a hierarquia do item atual (arquivo ou diretório) e dos diretórios.

    • 10 atributos de arquivo, como a data de criação e a data de modificação que são úteis com APIs de E/S de arquivo.

    • Uma coluna de tipo que oferece suporte à pesquisa de texto completo e à pesquisa semântica em arquivos e documentos.

  • Uma FileTable impõe determinados gatilhos e restrições definidos pelo sistema para manter a semântica de namespace de arquivo.

  • Quando o banco de dados é configurado para acesso não transacional, a hierarquia de arquivos e diretórios representada no FileTable é exposta no compartilhamento FILESTREAM configurado para a instância do SQL Server. Isso oferece ao sistema de arquivos acesso para aplicativos Windows.

Algumas características adicionais de FileTables

  • Os dados de arquivos e diretórios armazenados em uma FileTable são expostos através de um compartilhamento do Windows para acesso não transacional a arquivos para aplicativos baseados em APIs do Windows. Para um aplicativo do Windows, isto parece um compartilhamento normal com seus arquivos e diretórios. Aplicativos podem usar um conjunto sofisticado de APIs do Windows para gerenciar os arquivos e diretórios neste compartilhamento.

  • A hierarquia de diretórios exposta por meio do compartilhamento é uma estrutura de diretórios puramente lógica que é mantida dentro da FileTable.

  • As chamadas para criar ou alterar um arquivo ou um diretório por meio do compartilhamento Windows são interceptadas por um componente do SQL Server e refletidas nos dados relacionais correspondentes na FileTable.

  • As operações de API do Windows são não transacionais por natureza, e não são associadas a transações de usuário. Entretanto, o acesso transacional a dados FILESTREAM armazenados em uma FileTable tem suporte total, como é o caso para qualquer coluna FILESTREAM em uma tabela normal. Se precisar modificar arquivos com frequência a partir de várias conexões e garantir a proteção adequada dos arquivos, use o acesso transacional FILESTREAM via OpenSqlFilestream(), em vez de bloqueios exclusivos de arquivos no nível da API do Windows.

  • FileTables também podem ser consultadas e atualizadas através do acesso Transact-SQL normal. Elas também são integradas a ferramentas de gerenciamento e recursos do SQL Server, como o backup.

  • Você não pode enviar uma solicitação de email usando Database Mail e anexar um arquivo localizado em um diretório FILESTREAM (e, portanto, FileTable). O driver de filtro do sistema de arquivos RsFx0420 inspeciona as solicitações de E/S que entram e saem da pasta FILESTREAM. Se a solicitação não for do executável do SQL Server e do código de FILESTREAM, ela será explicitamente não permitida.

Considerações adicionais para usar FileTables

Considerações administrativas

Sobre FILESTREAM e FileTables

Você configura FileTables separadamente de FILESTREAM. Portanto, você pode continuar a usar o recurso FILESTREAM sem habilitar o acesso não transacional ou criar FileTables.

Não existe acesso não transacional a dados FILESTREAM, exceto por meio de FileTables. Portanto, quando você habilita acesso não transacional, o comportamento de colunas FILESTREAM e dos aplicativos existentes não é afetado.

Sobre FileTables e acesso não transacional

É possível habilitar ou desabilitar o acesso não transacional no nível de banco de dados.

Você pode configurar ou ajustar o acesso não transacional no nível de banco de dados desativando-o, ou habilitando o acesso somente leitura ou leitura/gravação completa.

FileTables não dão suporte a arquivos mapeados por memória

FileTables não dão suporte a arquivos mapeados por memória. Bloco de Notas e Paint são dois exemplos comuns de aplicativos que usam arquivos mapeados por memória. Você não pode usar esses aplicativos no mesmo computador que o SQL Server para abrir arquivos que estão armazenados em um FileTable. Porém, você pode usar estes aplicativos de um computador remoto para abrir arquivos que estão armazenados em um FileTable, porque, nessas circunstâncias, o recurso do mapeamento de memória não é usado.