Blog do Cristiano

Porque criar Sistemas também é Arte.

Utilizando FILETABLE no SQL Server 2012

Deixe um comentário

Dando 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;

  1. Suporte para o gerenciamento de arquivos e de diretórios do Windows;
  2. 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;
  3. 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:

  • Abra o SQL Server Configuration Manager, conforme apresentado na imagem 1.

                       

Imagem 1 – Selecione o SQL Server Configuration Manager

  • 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

  • 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

  • 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 FileStream

Vamos 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

  1. 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

Autor: Cristiano Joaquim

Graduado em Ciência da Computação pela Universidade de Guarulhos (UnG) e Pós-graduado em BI pela Faculdade Veris IBTA. Trabalha há 13 anos com Tecnologia Microsoft.

Deixe um comentário