Pagine

mercoledì 23 novembre 2011

SQL Server 2012 FileTable

Ciao a tutti !!!
In diretta dalla WPC2011 ecco a voi un piccolo esempio di cosa si potrebbe implementare con la nuova edizione di SQL Server 2012.
In SQL Server 2008 e 2008R2 è stato introdotto il concetto di Filestream che consente di coniugare la potenza dell'Engine di SQL server nella ricerche sui dati e la flessibilità del Filesystem nella gestione dei file. Sull'infrastruttura del filestream in SQL server 2012 hanno implementato un nuovo tipo di tabelle definite FileTable. Queste tabelle sono direttamente "connesse" alla cartella a loro associata e riescono ad interagire con le subfolder ed i file in esse contenuti.

Vediamo come crearle.

Passo 1:
Se ancora non l'abbiamo fatto è necessario abilitare il filestream dell'istanza ad un livello Full_access :
Use Master
Go
exec sp_configure Filestream_Access_level, 2
reconfigure
GO

Passo 2:
Dobbiamo creare un DB con un Filegroup gestore del Filestream
CREATE DATABASE FileTableDB
ON
PRIMARY
(
    NAME = FileTableDB,
    FILENAME = 'C:\SQL Server DENALI\User Databases\FileTableDb\FileTableDB_Data.mdf'
),
FILEGROUP FileTableDBFS CONTAINS FILESTREAM
(
    NAME = FileTableDBFS,
    FILENAME = 'C:\SQL Server DENALI\User Databases\FileTableDb\FileTableDbFileStream'
)
LOG ON
(
    NAME = FileTableDBLog,
    FILENAME = 'C:\SQL Server DENALI\User Databases\FileTableDb\FileTableDB_Log.ldf'
)
GO

Passo 3:
Settiamo l'opzione NON_TRANSACTED_ACCESS del DB a FULL altrimenti non possiamo far funzionare il giochino.
ALTER DATABASE FileTableDB
    SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'FileTableDbFileStream')
GO

Passo 4:
Creiamo ora la tabella.
USE FileTableDB
GO

CREATE TABLE tblFileTableTest AS FileTable
WITH
(
        FileTable_Directory = 'DirtblFileTableTest',
        FileTable_Collate_Filename = database_default
)
GO

Come potete vedere della tabella "tblFileTableTest" non ne definisco la strutura. Perchè ? Perchè la struttura è definita dall'engine ed è fissa ed immutabile.
Non devo far altro che specificare il nome della directory che conterrà i file gestiti e la collate con cui effettuare confronti etc....
La cartella "DirtblFileTableTest" sarà posizionata nella stessa cartella del Filestream specificata nella configurazione dell'istanza.

Passo 5:
Verifichiamo il contenuto della nostra tabella, ovviamente sarà vuota, non abbiamo creato ne copiato file.... ;-)
Select * from tblFileTableTest

Passo 6:
Facciamo Drag & Drop di un file testuale all'interno della nostra cartella e poi rieseguiamo la select del Passo 5.
Cosa troveremo ?
Troveremo una riga nella nostra filetable che effettivamente rappresenta tutti gli attributi del nostro file.

Ora dall'interno della tabella possiamo effettuare ogni operazione possibile sui dati.....
Select, Delete, Update, delete.....
Possiamo anche creare dei trigger e sfruttare la tab Inserted per impedire l'inserimento di file con estensione non consentita dalle nostre policy aziendali.
Veramente potente e semplice da utilizzare !!!

Qui trovate il link alla documentazione...

Ciao a tutti....

Nessun commento:

Posta un commento