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
- nyissa meg az SQL Configuration manager alkalmazást:
- győződjön meg arról, hogy a következő jelölőnégyzetek be vannak jelölve:
II FÁJLFOLYAM engedélyezése SQL példány szinten:
- az SQL Server Management Studio alkalmazásban kattintson az Új lekérdezés elemre a Lekérdezésszerkesztő megjelenítéséhez.
- a Lekérdezésszerkesztőben írja be a következő Transact-SQL kódot:
EXEC sp_configure filestream_access_level, 2
újrakonfigurálás
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:
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.
a Filegroups database tulajdonságoldal most megjeleníti a FILESTREAMFS fájlfolyamot a FILESERVER adatbázishoz:
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:
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
“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
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
itt van az “SQL” fájlmegosztás, amelyet a felhasználók most használhatnak fájljaik és mappáik tárolására:
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