Megosztás a következőn keresztül:


Könyvtárakkal és elérési utakkal végzett munka a FileTablesban

A következőkre vonatkozik:SQL Server

Azt a könyvtárstruktúrát ismerteti, amelyben a fájlokat a FileTables tárolja.

Hogyan dolgozzunk könyvtárakkal és elérési utakkal a FileTables használatával

A Következő három függvényt használhatja a FileTable-könyvtárak használatához a Transact-SQL-ben:

Az eredmény lekérése Használja ezt a függvényt
Szerezze be egy adott FileTable vagy az aktuális adatbázis gyökérszintű UNC elérési útját. FileTableRootPath (Transact-SQL)
Abszolút vagy relatív UNC-elérési út lekérése fájlhoz vagy könyvtárhoz a FileTable-ban. GetFileNamespacePath (Transact-SQL)
Az elérési út megadásával lekérheti a fájltáblában megadott fájl vagy könyvtár elérési útvonal-keresőazonosítóját. GetPathLocator (Transact-SQL)

Relatív elérési utak használata hordozható kódhoz

Ha a kódot és az alkalmazásokat függetleníteni szeretné az aktuális számítógépétől és adatbázisától, kerülje az abszolút fájlelérési utakra támaszkodó kód írását. Ehelyett a FileTableRootPath (Transact-SQL) és GetFileNamespacePath (Transact-SQL)) függvények együttes használatával szerezze be a fájlok teljes elérési útját a következő példában látható módon. Alapértelmezés szerint a GetFileNamespacePath függvény az adatbázis gyökérútvonala alatti fájl relatív elérési útját adja vissza.

USE database_name;

DECLARE @root NVARCHAR(100);
DECLARE @fullpath NVARCHAR(1000);

SELECT @root = FileTableRootPath();

SELECT @fullpath = @root + file_stream.GetFileNamespacePath()
FROM filetable_name
WHERE name = N'document_name';

PRINT @fullpath;
GO

Korlátozások

Nestszint

Fontos

A FileTable könyvtárban nem tárolhat több mint 15 alkönyvtárszintet. Ha 15 alkönyvtárszintet tárol, akkor a legalacsonyabb szint nem tartalmazhat fájlokat, mivel ezek a fájlok további szintet jelentenek.

A teljes elérési út nevének hossza

Fontos

Az NTFS fájlrendszer támogatja az olyan elérési útneveket, amelyek jóval hosszabbak, mint a Windows rendszerhéj és a legtöbb Windows API 260 karakteres korlátja. Ezért létrehozhat fájlokat a FileTable fájlhierarchiájában olyan Transact-SQL használatával, amelyeket nem tekinthet meg vagy nyithat meg a Windows Intézővel vagy sok más Windows-alkalmazással, mivel a teljes elérési út neve meghaladja a 260 karaktert. Azonban továbbra is elérheti ezeket a fájlokat a Transact-SQL használatával.

A FileTable-ban tárolt elem teljes elérési útja

A Fájltáblában tárolt fájl vagy könyvtár teljes elérési útja a következő elemekkel kezdődik:

  1. Az SQL Server-példány szintjén engedélyezett megosztás a FILESTREAM fájl I/O eléréséhez.

  2. A DIRECTORY_NAME az adatbázis szintjén van megadva.

  3. A Fájltábla szintjén meghatározott FILETABLE_DIRECTORY.

Az eredményként kapott hierarchia a következőképpen néz ki:

\\<machine>\<instance-level FILESTREAM share>\<database-level directory>\<FileTable directory>\

Ez a könyvtárhierarchia képezi a FileTable fájlnévterének gyökerét. Ebben a címtárhierarchiában a FileTable FILESTREAM-adatai fájlokként, valamint alkönyvtárakként lesznek tárolva, amelyek fájlokat és alkönyvtárakat is tartalmazhatnak.

Fontos szem előtt tartani, hogy a példányszintű FILESTREAM-megosztásban létrehozott címtárhierarchia egy virtuális könyvtárhierarchia. Ez a hierarchia az SQL Server-adatbázisban van tárolva, és fizikailag nem jelenik meg az NTFS fájlrendszerben. A FILESTREAM-megosztásban és a fájltáblákban lévő fájlokhoz és könyvtárakhoz hozzáférő összes műveletet elfogja és kezeli a fájlrendszerbe beágyazott SQL Server-összetevő.

A példány, adatbázis és FileTable szintek gyökérkönyvtárainak szemantikája

Ez a címtárhierarchia a következő szemantikát figyeli meg:

  • A példányszintű FILESTREAM-megosztást egy rendszergazda konfigurálja, és a kiszolgáló tulajdonságaként tárolja. Ezt a megosztást az SQL Server Configuration Managerrel nevezheti át. Az átnevezési művelet csak a kiszolgáló újraindítása után lép érvénybe.

  • Új adatbázis létrehozásakor az adatbázisszintű DIRECTORY_NAME alapértelmezés szerint null értékű. A rendszergazda a ALTER DATABASE utasítással állíthatja be vagy módosíthatja ezt a nevet. A névnek egyedinek kell lennie (kis- és nagybetűk megkülönböztetése esetén) az adott példányban.

  • A FILETABLE_DIRECTORY nevét általában a CREATE TABLE utasítás részeként adja meg a FileTable létrehozásakor. Ezt a nevet a ALTER TABLE paranccsal módosíthatja.

  • Ezeket a gyökérkönyvtárakat nem nevezheti át fájl I/O-műveleteken keresztül.

  • Ezeket a gyökérkönyvtárakat nem lehet kizárólagos fájlkezelőkkel megnyitni.

A FileTable séma is_directory oszlopa

Az alábbi táblázat a is_directory oszlop és a FileTable FILESTREAM-adatait tartalmazó file_stream oszlop közötti interakciót ismerteti.

az is_directory érték fájlfolyam érték Magatartás
FALSE NULL Ez egy érvénytelen kombináció, amelyet egy rendszer által meghatározott kényszer fog be.
FALSE <value> Az elem egy fájlt jelöl.
TRUE NULL Az elem egy könyvtárat jelöl.
TRUE <value> Ez egy érvénytelen kombináció, amelyet egy rendszer által meghatározott kényszer fog be.

Virtuális hálózatnevek (VNN-ek) használata Always On rendelkezésre állási csoportokkal

Ha a FILESTREAM- vagy FileTable-adatokat tartalmazó adatbázis egy rendelkezésre állási csoporthoz tartozik: