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