v-ați gândit vreodată că SQL server poate lucra ca un server de fișiere? Șansele sunt că nu-nici nu am făcut-o până când am încercat o caracteristică FileTable introdus pentru prima dată în SQL Server 2012. Caracteristica FileTable este următorul pas în tehnologia FILESTREAM care vă permite să stocați fișiere și foldere în tabelele speciale, dar să le accesați folosind protocolul tradițional Windows SMB – utilizatorii pot crea/citi/modifica/șterge fișiere dintr-o partajare generică de fișiere fără a fi conștienți de comenzile SQL subiacente. Cu alte cuvinte, FileTables să ne utilizeze tabele SQL pentru acces non-tranzacționale.
în opinia mea, unul dintre cele mai mari beneficii ale caracteristicii FileTables este stocarea atributelor de fișiere (cum ar fi Last-WriteTime, last_accesstime etc.) care permite administratorilor să auditeze operațiunile de acces la fișiere folosind coloanele corespunzătoare din FileTables. În acest articol aș dori să vă arăt cum SQL Server 2012-2016 poate fi utilizat pentru stocarea fișierelor și ce mecanisme de audit pot fi utilizate pentru fișierele și folderele care locuiesc în partajările de fișiere SQL. Unele condiții prealabile trebuie îndeplinite înainte ca tabelele de Fișiere să poată fi create într-o bază de date și vom parcurge toți pașii necesari pentru pregătirea tabelelor de fișiere, apoi vom crea mai multe tabele și vom vedea cum putem lucra cu ele.
să începem de la activarea fluxului de fișiere pentru instanța SQL 2012 și crearea unei noi baze de date FILESTREAM:
https://msdn.microsoft.com/en-us/library/gg509097%28v=sql.120%29.aspx
activez fluxul de fișiere la nivelul Windows
- Open SQL Configuration manager:
- asigurați-vă că sunt selectate următoarele casete de selectare:
II activați fluxul de fișiere la nivelul instanței SQL:
- În SQL Server Management Studio, faceți clic pe Interogare nouă pentru a afișa editorul de interogări.
- în Query Editor, introduceți următorul cod Transact-SQL:
EXEC sp_configure filestream_access_level, 2
reconfigurare
III furnizați un grup de fișiere FILESTREAM la nivelul bazei de date
înainte de a putea crea FileTables într-o bază de date, Baza de date trebuie să aibă un FILESTREAM filegroup. Pentru mai multe informații despre această condiție prealabilă, consultați Crearea unei baze de date cu FILESTREAM activat.
din moment ce am de gând pentru a crea o nouă bază de date voi crea mai întâi un folder care să conțină FileTables:
și apoi defini un FILESTREAM filegroup în acest cod:
crearea bazei de date FILESERVER
pe
primar (NAME=FS,
FILENAME = ‘c:\FILESERVER\FSdat.mdf’),
FILEGROUP FileStreamFS conține FILESTREAM (NAME = FSgr,
FILENAME = ‘c:\FILESERVER\fs1’)
LOG on (nume = FSlog, Nume fișier = ‘ c:\ FILESERVER \FSlog.LDF’)
Du-te
atenție! După cum spune MS: „Pentru un FILESTREAM filegroup, numele fișierului se referă la o cale. Calea până la ultimul folder trebuie să existe, iar ultimul folder nu trebuie să existe.”În codul precedent, c:\FILESERVER trebuie să existe, dar fs1 nu trebuie în momentul în care executați instrucțiunea Creare bază de date.
pagina proprietății bazei de date Filegroups afișează acum FileStreamFS filestream pentru baza de date FILESERVER:
IV activați accesul non-tranzacțional la nivelul bazei de date
odată ce am creat baza de date, ultimul pas în pregătirea acesteia pentru FileTables este de a permite accesul non-tranzacțional la nivelul bazei de date.
FileTables permite aplicațiilor Windows să obțină un mâner de fișier Windows pentru datele FILESTREAM fără a necesita o tranzacție. Pentru a permite acest acces non-tranzacțional la fișierele stocate în SQL Server, trebuie să specificați nivelul dorit de acces non-tranzacțional la nivelul bazei de date pentru fiecare bază de date care va conține FileTables. Dacă executăm următorul cod –
selectați DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
din sys.database_filestream_options;
Du-te
…vom vedea că nici o bază de date nu au acces non-tranzacțional activat:
pentru a permite accesul non – tranzacțional la fișiere la nivel de bază de date (pentru baza de date FILESERVER în acest caz) trebuie specificată încă o opțiune – un director pentru FileTables: este directorul pe articolul-c:\FILESERVER, dar numele directorului ar trebui să fie tastat fără litera de unitate și simbolul „\”:
ALTER DATABASE FILESERVER
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = n’ fileserver’)
Du-te
„în ierarhia folderului FileTable, acest director la nivel de bază de date devine copil al numelui de partajare specificat pentru FILESTREAM la nivel de instanță și părintele filetab les creat în baza de date” – înseamnă că FILESERVER va fi subfolderul MSSQLSERVER share, deoarece nu l-am schimbat în pasul I-2. Pentru mai multe informații, consultați Lucrul cu directoarele și căile din FileTables
executarea din nou a acestui cod va arăta că accesul non-tranzacțional a fost activat cu succes:
selectați DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
din sys.database_filestream_options;
Du-te
următorul cod afișează numele directorului pentru serverul de fișiere databse:
selectați DB_NAME ( database_id), directy_name
din sys.database_filestream_options;
GO
Iată partajarea de fișiere „SQL” pe care utilizatorii o pot folosi acum pentru stocarea fișierelor și folderelor lor:
dacă a redenumit cota implicită MSSQLSERVER în ceva de genul share1 în pasul i-2 nu ar fi existat nici o indicație de orice sql server implicat – din perspectiva utilizatorului ar fi doar o cotă de fișier obișnuit.
toate premisele pentru crearea FileTables sunt îndeplinite acum și putem trece la crearea FileTables.
lucrul cu tabelele de fișiere SQL Server-partea 2