Banco de Dados - SQL Server
Utilizando FILETABLE no SQL Server 2012
O Artigo descreve como trabalhar com a nova Feature do SQL Server 2012, chamada de FileTable
por Cristiano JoaquimDando continuidade nas novidades que o SQL Server 2012 nos traz, vemos uma nova feature chamada: FileTable.
Mas o que isso significa?Uma nova feature construída sobre a tecnologia do FILESTREAM, permitindo que dados BLOB sejam armazenados como arquivos individuais, porém, separados dos arquivos de um banco de dados, onde podemos usa-los como uma tabela de banco de dados com quase todas as funções de uma tabela “convencional”.
Para ser mais objetivo, podemos armazenar arquivos e documentos em tabelas do SQL Server, além acessá-las de aplicações do Windows sendo que elas estão armazenadas no Sistema de arquivos, sem que para isso seja necessária alteração nos aplicativos.
Mas você deve estar se perguntando: “Qual o benefício de se usar isto?”.Seguem alguns:
- Armazenamento dos atributos do arquivo gerado, como a Data de criação, modificação e último acesso;
- Suporte para o gerenciamento de arquivos e de diretórios do Windows;
- Facilidade de mover esses arquivos de dados para servidores de arquivos, mantendo a compatibilidade das aplicações que trabalham com esses dados como arquivos no sistema de arquivos;
- Compatibilidade com outros recursos do SQL Server
No entanto, para configurar o FileTable na Instância do SQL Server, existem algumas etapas envolvidas no processo, como por exemplo a configuração do FileStream.
Para configurá-lo, e darmos andamento no processo, vamos seguir esta “receita de bolo”. Segue:
1. Abra o SQL Server Configuration Manager, conforme apresentado na imagem 1.

Imagem 1 - Selecione o SQL Server Configuration Manager
2. Navegue até o SQL Server Services, no painel esquerdo da janela aberta, conforme apresentado na imagem 2.

Imagem 2 - Selecionando o Serviço do SQL Server
3. No painel a direita, clique na instância do banco de dados sobre o qual você deve ativar o suporte do FILESTREAM e selecione a opção propriedades, conforme vemos na Imagem 3 abaixo.

Imagem 3 - Selecionando a opção Propriedades do Serviço da Instancia do Banco de dados
4. Será aberta as propriedades do SQL Server, que conterá as Abas onde poderemos configurar a opção FILESTREAM, habilitando o serviço.

Imagem 4 - Opção FileStream disponível para ser Habilitada
Com isso, habilite a Opção do FileStream, apresentado na imagem acima, para darmos andamento na utilização do FileTable.
Observação: Você pode também alterar o nome do compartilhamento do Windows. Contudo, vou deixa-lo no padrão, ou seja, o nome do exemplo.
Agora, um fato interessante que você pode notar e que o servidor disponibiliza um compartilhamento do Windows usando o nome da Instância do Banco de dados instalado no seu Micro. Para ver este compartilhamento, abra o Explorer do seu Sistema Operacional e digite o seguinte endereço: \\127.0.0.1 e veja a o resultado, conforme imagem 5 abaixo.

Imagem 5 - Verificando o compartilhamento do Windows ao habilitar o FileStream
Nota: Se você habilitou o acesso remoto na opção Enable FILESTREAM for file I/O streaming access, poderá acessar este compartilhamento, mas ele estará vazio neste momento.
Habilitando o SQL Server para usar o FileStreamVamos novamente seguir um passo-a-passo:
1. Abra o SQL Server Management Studio e cancele a tela de Login que será aberta.
2. Clique no botão New Query e se conecte na instância do SQL Server, a qual foi configurada nos passos anteriores.
3. Execute uma consulta com o seguinte Script:
exec sp_configure filestream_access_level, 2; reconfigure;

Imagem 6 - Tela do Management Studio com o Script inserido
Bom, com o FileStream configurado na Instância, podemos começar a configurar o nosso exemplo de armazenamento de banco de dados de FileStream.
Para isso, na mesma tela aberta no SQL Server, abra uma New Query e execute o Script abaixo:
CREATE DATABASE FileTableSample GO

Imagem 7 - Executando o Script de criação da base de dados
Nessa mesma janela, execute o script abaixo:
ALTER DATABASE FileTableSample ADD FILEGROUP FileStreamG1 CONTAINS FILESTREAM;

Imagem 8 - Executando o Script de Alteração do Database e adicionando um grupo de arquivos FileStream para o banco de dados
Nessa mesma janela, execute o próximo script abaixo para dar andamento no processo:
ALTER DATABASE FileTableSample ADD FILE ( NAME = FileStream01, FILENAME = 'C:\Temp\FileStreamGroup1' ) TO FILEGROUP FileStreamG1;

Imagem 9 - Executando o script que cria o arquivo FileTable em um respectivo diretório e definindo o armazenamento associado com o grupo de arquivos FileStream adicionado anteriormente
Nesta última etapa será necessária um comentário: Percebam que o caminho de armazenamento do FileStream é identificado conforme o nome do arquivo de configuração, sendo o mesmo um caminho válido no Sistema Operacional, ou seja, o Diretório C:\Temp deve existir e estar disponível para uso. Entretanto, a pasta FileStreamGroup1 não será preciso ser criada, pois o próprio SQL Server se encarregará de cria-la no momento da execução do Script.
Bom, com o banco de dados ajustado, precisamos configurar a forma como o banco vai apresentar e controle as iterações com os dados do FileStream.
Para isso, vamos seguir os passos abaixo:
1. Necessitamos agora definir o nome da subpasta compartilhada através do qual o FileStream irá associar o banco de dados. Para isso, necessitamos executar o script abaixo:
ALTER DATABASE FileTableSample SET FILESTREAM ( DIRECTORY_NAME = 'FileTableSample' );

Imagem 10 - Definindo o nome da subpasta compartilhada
2. O próximo passo será habilitar o acesso de leitura e escrita de dados no FileStream, de acordo com o script e imagem abaixo:
ALTER DATABASE FileTableSample SET FILESTREAM ( non_transacted_access = full );

Imagem 11 - Liberando acesso a leitura e escrito de dados no FileStream
Para terminarmos, vamos criar uma tabela neste banco de dados criado. Para tanto, segue mais um Script:
use FileTableSample GO CREATE TABLE TBL_FileTable AS FILETABLE GO
Enfim, conforme verão na imagem abaixo, temos agora a tabela criada e disponível para acesso.

Imagem 12 - Tabela FileTable criada com sucesso
Abaixo, temos em outra imagem como ficou a estrutura de arquivos dentro do Diretório que utilizamos para armazenar arquivos com o FIleStrem.

Figura 13 - Apresentando a estrutura de arquivos criados
Bom, com isso terminamos nosso exemplo.
Vemos que com um FileTable, possuímos definido no banco de dados uma tabela, sendo que a configuração da estrutura permitirá acesso não-transacional para esta estrutura de pastas, onde poderemos arrastar e soltar arquivos dentro da pasta e até mesmo criar subpastas, sendo que tudo isso se reflete na table MyFileTable, isso quando interagímos usando Transact SQL.
Da mesma forma, quando utilizamos Transact SQL para realizar o “CRUD”, essas alterações serão refletidas na pasta associada no compartilhamento do Windows.
Bons estudos,
Cristiano Joaquim- Representando dados em XML no SQL ServerSQL Server
- NHibernate com o Delphi Prism: Acessando um Banco de Dados SQL ServerVisual Studio
- Instalando o SCOM 2007 R2 em um único servidorSQL Server
- Aumentando a perfomance no LinqToSqlADO.NET
- Criando um formulário para entrada de dados de produtos com php e htmlSQL Server