SQL Server 2012 – FileTable

Continuando os posts sobre SQL Server 2012, neste, irei comentar sobre um recurso chamado FileTable, que utiliza o recurso FileStream, ja existente em versões anteriores do SQL Server (Como o 2008….).

Bom, o que é este novo recurso? O mesmo foi introduzido com a função de faciliar o acesso a arquivos atraz de aplicações, de forma que seja automatico o mapeamento do arquivo pelo SQL Server, com apenas a simples ação de se colocar o arquivo em uma pasta.

Vale a pena comentar que aqui estou abstraindo o fato de habilitar o FileStream e sua configuração, aonde uma pasta de rede sera criada, muito provavelmente com o nome da propria instancia, no meu caso \\FABRIZZIO-PC\FABRIZZIO12ENT.

Todo o processo consiste em pequenos e simples passos, que são exemplificados a seguir:

– Criação de uma base de dados com um FileGroup com FileStream habilitado

--CRIAR BASE COM FILEGROUP DE FILESTREAM
CREATE DATABASE BlogFileTable
ON
PRIMARY ( NAME = Arch1,
    FILENAME = 'd:\SQL_Server\2012\Data\BlogFileTable.mdf'),
FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM( NAME = Arch3,
    FILENAME = 'd:\SQL_Server\2012\Data\filestream')
LOG ON  ( NAME = Archlog1,
    FILENAME = 'd:\SQL_Server\2012\Log\BlogFileTable.ldf')
GO

– Alteração da base, ou seja, criação da pasta, dentro do FileStream para a utilização da FileTable

--ALTERA PARA ACESSO NÃO TRANSACIONAL
ALTER DATABASE BlogFileTable SET FILESTREAM( NON_TRANSACTED_ACCESS = FULL, 
DIRECTORY_NAME = 'BlogFileTable') WITH NO_WAIT
GO

Aqui,voce ja deve poder visualisar se o acesso FileStream esta habilitado em sua base de dados, vide select:

--SELECT DE ACESSO NÃO TRANSACIONAL
SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
FROM sys.database_filestream_options;

Todos os arquivos que iremos visualizar estara contido em uma tabela, obviamente, portanto, devemos criar esta tabela, que possui uma sintaxe curiosa, e um pouco diferente de um CREATE TABLE regular…

CREATE TABLE Documentos AS FileTable
    WITH ( 
          FileTable_Directory = 'BlogFileTable',
          FileTable_Collate_Filename = database_default
         );
GO

Agora, basta voce copiar e colar os arquivos no caminho especificado, que no meu caso, para o exemplo acima é: \\FABRIZZIO-PC\fabrizzio12ent\BlogFileTable\BlogFileTable

Caso voce não esteja conseguindo abrir a pasta, execute:

--VERIFICAÇÃO DA PASTA
SELECT FileTableRootPath ('Documentos', 2)

Ou seja, trocando “Documentos” pelo nome da sua tabela FileTable

O select nesta tabela pode e deve ser feito normalmente:

SELECT *
FROM Documentos

Aonde sera possivel encontrar N informações sobre o arquivo.

Outra curiosidade é a possibilidade de se criar diretorios, ou seja, alem de automatico, sua arquivos tambem pode ficar organizados!

Anúncios
Post a comment or leave a trackback: Trackback URL.

Comentários

  • Camila Lira  On 02/04/2012 at 09:00

    Esse post está otimo!

    Parabéns Fabrizzio, vc vai longe !

    ^^

  • Alexandre.  On 02/04/2012 at 15:33

    Nossa, recurso interessante pra gerenciamento de arquivos.

    Baixei a versão do SQL 2012 e assim que der vou instalar pra começar a conhecer.

    Obrigado pelas dicas.

Deixe um comentário

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: