Michael Firsov

gondoltál már arra, hogy az SQL server fájlkiszolgálóként működhet? Az esély az, hogy nem – én sem, amíg nem próbáltam egy FileTable funkció először bevezetett SQL Server 2012. A FileTable funkció a FILESTREAM technológia következő lépése, amely lehetővé teszi fájlok és mappák tárolását a speciális táblákban, de a hagyományos Windows SMB protokoll használatával érheti el őket – a felhasználók létrehozhatnak/olvashatnak/módosíthatnak/törölhetnek fájlokat egy általános fájlmegosztásból anélkül, hogy tisztában lennének az alapul szolgáló SQL parancsokkal. Más szavakkal, a FileTables SQL táblákat használ a nem tranzakciós hozzáféréshez.

véleményem szerint a FileTables szolgáltatás egyik legnagyobb előnye a fájlattribútumok tárolása (például Last-WriteTime, Last_AccessTime stb.), amely lehetővé teszi a rendszergazdák számára a fájlhozzáférési műveletek ellenőrzését a FileTables megfelelő oszlopai segítségével. Ebben a cikkben szeretném bemutatni, hogy az SQL Server 2012-2016 hogyan használható a fájltároláshoz, és milyen ellenőrzési mechanizmusokat lehet igénybe venni az SQL fájlmegosztásokban található fájlok és mappák számára. Néhány előfeltételnek teljesülnie kell, mielőtt a Fájltáblákat létre lehet hozni egy adatbázisban, és áttekintjük a Fájltáblák előkészítéséhez szükséges összes lépést, majd létrehozunk több táblát, és megnézzük, hogyan tudunk velük dolgozni.

kezdjük azzal, hogy engedélyezzük a FÁJLFOLYAMOT az SQL 2012 példányhoz, és hozzunk létre egy új FÁJLFOLYAM-adatbázist:

https://msdn.microsoft.com/en-us/library/gg509097%28v=sql.120%29.aspx

engedélyezem a FÁJLFOLYAMOT Windows szinten

  1. nyissa meg az SQL Configuration manager alkalmazást:
    02
  2. győződjön meg arról, hogy a következő jelölőnégyzetek be vannak jelölve:
    03

II FÁJLFOLYAM engedélyezése SQL példány szinten:

  1. az SQL Server Management Studio alkalmazásban kattintson az Új lekérdezés elemre a Lekérdezésszerkesztő megjelenítéséhez.
  2. a Lekérdezésszerkesztőben írja be a következő Transact-SQL kódot:
    EXEC sp_configure filestream_access_level, 2
    újrakonfigurálás04

III adjon meg egy FILESTREAM Filegroup-ot az adatbázis szintjén

mielőtt létrehoznánk FileTables-t egy adatbázisban, az adatbázisnak rendelkeznie kell egy FILESTREAM filegroup-tal. További információ erről az előfeltételről, lásd: hozzon létre egy FILESTREAM-kompatibilis adatbázist.
mivel megyek, hogy hozzon létre egy új adatbázist én először hozzon létre egy mappát tartalmazó FileTables:
01
majd meg egy Filestream filegroup ebben a kódban:

adatbázis létrehozása FILESERVER
ON
elsődleges (NAME = FS,
FILENAME = ‘c:\FILESERVER\FSdat.mdf’),
FILEGROUP FileStreamFS tartalmazza FILESTREAM (NAME = FSgr,
FILENAME = ‘c:\FILESERVER\fs1’)
bejelentkezés (NAME = FSlog, FILENAME = ‘ c: \ FILESERVER \ FSlog.ldf’)
GO

figyelem! Ahogy MS mondja: “A FILESTREAM filegroup esetében a FILENAME egy elérési útra utal. Az utolsó mappa elérési útjának léteznie kell, az utolsó mappa pedig nem létezhet.”Az előző kódexben, c:\FILESERVER léteznie kell, de az fs1-nek nem szabad az adatbázis létrehozása utasítás végrehajtásakor.

05

10

a Filegroups database tulajdonságoldal most megjeleníti a FILESTREAMFS fájlfolyamot a FILESERVER adatbázishoz:
07

IV nem tranzakciós Hozzáférés engedélyezése az adatbázis szintjén

miután létrehoztuk az adatbázist, a FileTables előkészítésének utolsó lépése a nem tranzakciós hozzáférés engedélyezése az adatbázis szintjén.

a FileTables lehetővé teszi a Windows Alkalmazások számára, hogy tranzakció nélkül megszerezzék a Windows fájlkezelőt a FILESTREAM adatokhoz. Annak érdekében, hogy ez a nem tranzakciós hozzáférés az SQL Server-ben tárolt fájlokhoz, meg kell adnia a nem tranzakciós hozzáférés kívánt szintjét az adatbázis szintjén minden olyan adatbázishoz, amely FileTables-t tartalmaz. Ha végrehajtjuk a következő kódot –

válassza ki a db_name(database_id), non_transacted_access, non_transacted_access_desc
a sys-ből.database_filestream_options;
GO

…látni fogjuk, hogy egyetlen adatbázis sem rendelkezik nem tranzakciós hozzáféréssel:
08

az adatbázis szintjén lévő fájlok nem tranzakciós hozzáférésének engedélyezéséhez (ebben az esetben a FILESERVER adatbázis számára) még egy lehetőséget kell megadni-egy könyvtárat a FileTables számára: ez a könyvtár, amelyet az adatbázis elején hoztam létre a cikk-c:

Alter DATABASE FILESERVER
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N’ FileServer’)
GO

09

“a FileTable mappák hierarchiájában ez az adatbázis szintű könyvtár lesz a gyermek”-ez azt jelenti, hogy a fileserver az mssqlserver megosztás almappája lesz, mivel az I – 2 lépésben nem változtattam meg. További információkért lásd: könyvtárakkal és elérési utakkal való munka a fájlokban

a kód ismételt végrehajtása megmutatja, hogy a nem tranzakciós hozzáférés sikeresen engedélyezve van:

válassza ki a DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
a sys-ből.database_filestream_options;
GO

09-1

a következő kód megjeleníti a fájlszerver databse könyvtár nevét:

válassza ki a DB_NAME ( database_id), direcory_name
a sys-ből.database_filestream_options;
GO

11

itt van az “SQL” fájlmegosztás, amelyet a felhasználók most használhatnak fájljaik és mappáik tárolására:10-1110-12

Ha a fájljaimmal rendelkeztem volna, akkor a következő fájlmegosztást használhatom: átnevezte az alapértelmezett mssqlserver megosztást valami hasonlóra share1 az i-2 lépésben nem lett volna utalás az érintett SQL szerverre – a felhasználó szempontjából ez csak egy közönséges fájlmegosztás lenne.

a FileTables létrehozásának minden előfeltétele teljesül, és folytathatjuk a FileTables létrehozását.

munka az SQL Server Fájltáblákkal-2. rész

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.