SQL Server 2012 File Table

Olá Pessoal,

Hoje vamos falar sobre uma nova feature presente no SQL Server 2012 chamada File Table. Vamos pegar a definição do BOL.

“The FileTable feature brings support for the Windows file namespace and compatibility with Windows applications to the file data stored in SQL Server. FileTable lets an application integrate its storage and data management components, and provides integrated SQL Server services – including full-text search and semantic search – over unstructured data and metadata.

In other words, you can store files and documents in special tables in SQL Server called FileTables, but access them from Windows applications as if they were stored in the file system, without making any changes to your client applications.”

Deixando de uma forma mais clara, o File Table nada mais é do que uma técnica nova para armazenamento de arquivos não estruturados diretamente no file system, quem trabalha com Sharepoint já conhece algo parecido com isso, a vantagem dessa nova funcionalidade é que podemos indexar documentos para acesso no file system assim como no SharePoint além é claro de uma serie de outros métodos que podem ser trabalhados.

Vamos conhecer como habilitar e trabalhar com File Table?

Passo 1: Criação de uma database e habilitação do File Table e Filestream. Isso que você esta vendo o File Table necessita do Filestream para funcionar. Como de costume não vou me atentar em mostrar o filestream e nem como configurar, mas mostrarei diretamente como funciona o File Table.

Via Interface Gráfica

Habilitando

Via T-SQL

CREATE DATABASE [FileTableDatabase] ON  PRIMARY
( NAME = N’FileTableDatabase’, FILENAME = N’E:\Program Files\Bases\FileTableDatabase.mdf’ , SIZE = 3072KB , FILEGROWTH = 1024KB ),
FILEGROUP [FileTable_FG] CONTAINS FILESTREAM
( NAME = N’FileTableFile’, FILENAME = N’E:\Program Files\Bases\FileTableFile’ )
LOG ON
( NAME = N’FileTableDatabase_log’, FILENAME = N’E:\Program Files\Bases\FileTableDatabase_log.ldf’ , SIZE = 2048KB , FILEGROWTH = 10%)
GO
ALTER DATABASE FileTableDatabase SET FILESTREAM(NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = ‘FileTable’)
GO

Passo 2: Criação da tabela que sera do tipo File Table. Vale lembrar que a opção de criação da tabela do tipo File Table não esta disponível via Interface Grafica.

Via T-SQL

USE FileTableDatabase
GO
CREATE TABLE FileTableTest AS FileTable
WITH
(FileTable_Directory = ‘FileTable’,
FileTable_Collate_Filename = database_default)

As tabelas do tipo FileTable dentro de uma pasta chamada FileTables que fica dentro da pasta Tables na estrutura da base de dados.

Visualizando

Após a criação da tabela File Table é criada uma unidade de rede compartilhada no servidor do SQL Server, para sabermos onde essa pasta esta configurada basta clicarmos com o direito na tabela e selecionar a opção Explore FileTable Directory.

Passo 3: Uma das coisas que eu achei mais interessante é a forma de inserção de dados em uma File Table. Como relatamos acima uma file table armazena os dados no file system do Windows e então para realizar a inserção de dados basta no diretório do file table colocamos os arquivos desejados. Como podemos verificar na imagem abaixo, foi criada uma unidade compartilhada onde não possuímos nenhum arquivo.

UnidadeMapeada

Realizamos uma consulta na tabela e nada é retornado.

Consulta

Vamos inserir agora alguns arquivos na unidade.

InserindoArquivos

Vamos realizar uma nova consulta.

select * from FileTableTest

Resultado

Como podemos analisar a tabela armazena os metadados dos arquivos que colocamos na unidade compartilhada como: nome do arquivo, extensão, se é diretorio, se é arquivo, ultima vez escrito, ultima vez lido entre outras propriedades.

No proximo post vou mostrar algumas funções de manipulação dos arquivos do File Table.

Espero que tenham gostado desse post.

Abraços,
Marcos Freccia
[MCTS|MCITP|MCT SQL Server 2008]

Sobre Marcos Freccia

MVP em SQL Server (Data Plataform) , especialista em SQL Server, e atualmente trabalhando com Microsoft Azure!

Publicado em fevereiro 27, 2012, em Administração, Denali, SQL Server 2012, SQL Server Denali, VirtualPass e marcado como , , , . Adicione o link aos favoritos. 3 Comentários.

  1. Olá Marcos, parabéns pelo artigo. Estou com dificuldade em criar uma aplicação web em asp.net que lê o diretório compartilhado, criado no SQL 2012 FileStream, e mostre as imagens ou outros arquivos do diretório na aplicação.

    Vc já fez algo parecido?

    Abraços

    Vilela

    • Olá Vilela,

      Você está utilizando o conceito de FileTables como está vendo aqui on Blog, certo? Se você fizer uma consulta nessa tabela os dados são retornados? Nesse conceito, você integra o FileTable + FullText Search para pesquisar os textos nos documentos. Agora, uma imagem nada mais é do que um arquivo binário, então você precisa de API’s para ler esses dados de imagem por exemplo. Eu particularmente nunca fiz o desenvolvimento utilizando ASP.NET, mas acredito que a própria Microsoft deva ter algo de documentação nesse sentido. Você ja pesquisou algo diretamente nas documentações da Microsoft?

      Qualquer dúvida é só ir respondendo aqui, que vou tentando lhe ajudar.

      Abs,
      Marcos Freccia

  1. Pingback: Full Text Search e Semantic Search no SQL Server 2012 « Freccia's Blog

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: