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


Fájltáblák elérése Fájl Input-Output API-kkal

A következőkre vonatkozik:SQL Server

A fájlrendszer I/O-nak a FileTable-on való működését ismerteti.

Ismerkedés a FileTables fájl I/O API-kkal való használatának első lépéseivel

A FileTables elsődleges használata várhatóan a Windows fájlrendszeren és a fájl I/O API-kon keresztül történik. A FileTables támogatja a nem tranzakciós hozzáférést az elérhető fájl I/O API-k gazdag készletén keresztül.

  1. A fájl I/O API-hozzáférés általában a fájl vagy könyvtár logikai UNC-elérési útjának beszerzésével kezdődik. Az alkalmazások Transact-SQL utasítást használhatnak a GetFileNamespacePath (Transact-SQL) függvénnyel a fájl vagy könyvtár logikai elérési útjának lekéréséhez. További információ: Könyvtárak és elérési utak a Fájltáblákban.

  2. Ezután az alkalmazás ezzel a logikai elérési úttal szerez egy leírót a fájlhoz vagy könyvtárhoz, és valamit végez az objektummal. Az elérési út átadható bármely támogatott fájlrendszer API-függvénynek, például a CreateFile() vagy a CreateDirectory() függvénynek egy fájl létrehozásához vagy megnyitásához és egy leíró beszerzéséhez. A fogantyú ezután használható adatok továbbítására, könyvtárak felsorolására vagy rendszerezésére, fájlattribútumok beolvasására vagy beállítására, fájlok vagy könyvtárak törlésére stb.

Fájlok és könyvtárak létrehozása Fájltáblában

Fájl vagy könyvtár hozható létre a FileTable-ban olyan fájl I/O API-k meghívásával, mint a CreateFile vagy a CreateDirectory.

  • Minden létrehozási jelölő, megosztási mód és hozzáférési mód támogatott. Ez magában foglalja a fájlok létrehozását, törlését és helyben történő módosítását. A fájlnévtér frissítései is támogatottak, például címtárlétrehozási/törlési, átnevezési és áthelyezési műveletek.

  • Egy új fájl vagy könyvtár létrehozása megfelel egy új sor létrehozásának a mögöttes FileTable-ban.

  • Fájlok esetében a streamadatok a file_stream oszlopban lesznek tárolva; könyvtárak esetében ez az oszlop null értékű.

  • Fájlok esetén a is_directory oszlop hamistartalmaz. Könyvtárak esetében ez az oszlop igaztartalmaz.

  • A hozzáférés megosztását és egyidejűségét akkor kényszeríti a rendszer, ha több egyidejű fájl I/O-művelet vagy Transact-SQL művelet befolyásolja a hierarchia ugyanazon fájlját vagy könyvtárát.

Fájlok és könyvtárak olvasása fájltáblában

A Read Committed elkülönítés szemantikája az SQL Serverben megvalósul az összes fájl I/O-hozzáférési műveletnél, amely a stream- és attribútumadatokra irányul.

Fájlok és könyvtárak írása és frissítése fájltáblában

  • A FileTable összes fájl I/O-írási vagy frissítési művelete nem tranzakciós. Ez azt jelenti, hogy ezekhez a műveletekhez egyetlen SQL Server-tranzakció sem kötődik, és nincsenek acid-garanciák.

  • A FileTable minden fájl I/O-streamelési/helyszíni frissítése támogatott.

  • A FILESTREAM-adatok vagy -attribútumok fájl I/O API-kkal történő frissítése a FileTable megfelelő file_stream és fájlattribútum-oszlopainak frissítését eredményezi.

Fájlok és könyvtárak törlése fájltáblában

A rendszer minden Windows-fájl I/O API-szemantikáját kikényszeríti egy fájl vagy könyvtár törlésekor.

  • A címtár törlése sikertelen, ha a címtár fájlokat vagy alkönyvtárakat tartalmaz.

  • Ha töröl egy fájlt vagy könyvtárat, az eltávolítja a megfelelő sort a Fájltáblából. Ez egyenértékű a sor Transact-SQL műveleten keresztüli törlésével.

Támogatott fájlrendszer-műveletek

A FileTables az alábbi fájlrendszerműveletekhez kapcsolódó fájlrendszer API-kat támogatja:

  • Címtárkezelés

  • Fájlkezelés

A FileTables nem támogatja a következő műveleteket:

  • Lemezkezelés

  • Kötetkezelés

  • Tranzakciós NTFS

A FileTables fájl I/O-hozzáférésének további szempontjai

Virtuális hálózatnevek (VNN-ek) használata az Always On elérhetőségi csoportokkal

Ha a FILESTREAM- vagy FileTable-adatokat tartalmazó adatbázis egy Always On rendelkezésre állási csoporthoz tartozik, akkor a fájlrendszer API-jain keresztül a FILESTREAM- vagy FileTable-adatokhoz való minden hozzáférésnek VNN-eket kell használnia a számítógépnevek helyett. További információ: FILESTREAM és FileTable az Always On rendelkezésre állási csoportokkal (SQL Server).

Részleges frissítések

A FileTable FÁJLSTREAM-adataihoz a GetFileNamespacePath (Transact-SQL) függvény használatával beszerzett írható leíró, segítségével helyben, részlegesen frissíthető a FILESTREAM-tartalom. Ez a viselkedés eltér a tranzakciós FILESTREAM-hozzáféréstől, amelyet egy OpenSQLFILESTREAM() meghívásával és egy explicit tranzakciós környezet átadásával kapott leíró használatával valósítanak meg.

Tranzakciós szemantikák

Ha fájl I/O API-k használatával fér hozzá a FileTable fájljaihoz, ezek a műveletek nincsenek felhasználói tranzakciókhoz társítva, és az alábbi további jellemzőkkel rendelkeznek:

  • Mivel a FileTable-ban a FILESTREAM-adatokhoz való nem tranzakciós hozzáférés nincs társítva semmilyen tranzakcióhoz, nincs külön elkülönítési szemantikája. Az SQL Server azonban belső tranzakciók használatával kényszerítheti a zárolási vagy egyidejűségi szemantikát a FileTable-adatokon. Minden ilyen típusú belső tranzakció olvasási elkülönítéssel történik.

  • Ezekre a filestream-adatokon végzett nem tranzakciós műveletekre nincs ACID-garancia. A konzisztencia garanciái hasonlóak a fájlrendszerbeli alkalmazások által végzett fájlfrissítésekhez.

  • Ezek a módosítások nem állíthatók vissza.

A FileTable FILESTREAM oszlopa azonban tranzakciós FILESTREAM-hozzáféréssel is elérhető OpenSqlFileStream()meghívásával. Ez a fajta hozzáférés teljes mértékben tranzakciós lehet, és tiszteletben tartja a jelenleg támogatott tranzakciós szinteket.

Egyidejűség-vezérlés

Az SQL Server kényszeríti az egyidejűség-vezérlést a FileTable-hozzáféréshez a fájlrendszeralkalmazások, valamint a fájlrendszeralkalmazások és Transact-SQL alkalmazások között. Ez az egyidejűség-vezérlés a FileTable-sorok megfelelő zárolásával érhető el.

Eseményindítók

Fájlok vagy könyvtárak vagy attribútumaik fájlrendszeren keresztüli létrehozása, módosítása vagy törlése megfelelő beszúrási, frissítési vagy törlési műveleteket eredményez a FileTable-ban. Ezen műveletek részeként minden társított Transact-SQL DML-eseményindító aktiválódik.

A FileTables szolgáltatásban támogatott fájlrendszer-funkciók

Képesség Támogatott Megjegyzések
Oplocks Igen A 2. szint, az 1. szint, a Batch és a Szűrő oplockok támogatottak.
kiterjesztett attribútumok Nem
Újraparszolási pontok Nem
állandó ACL-ek Nem
Névvel ellátott adatfolyamok Nem
Ritka fájlok Igen A ritkaság csak fájlokon állítható be, és hatással van az adatfolyam tárolására. Mivel a FILESTREAM-adatok NTFS-köteteken tárolódnak, a FileTable funkció támogatja a ritka fájlokat a kérések NTFS fájlrendszerbe való továbbításával.
tömörítési Igen
titkosítás Igen
TxF Nem
fájlazonosítók Nem
objektumazonosítók Nem
szimbolikus hivatkozások Nem
Kemény hivatkozások Nem
Rövid nevek Nem
címtárváltoztatási értesítések Nem
Bájttartomány-zárolás Igen A bájttartomány-zárolási kérelmeket a rendszer átadja az NTFS fájlrendszernek.
Memóriatérképezett fájlok Nem
I/O-művelet megszakítása Igen
biztonság Nem A rendszer érvényesíti a Windows megosztási szintű biztonsági intézkedéseket, valamint az SQL Server tábla- és oszlopszintű biztonságot.
USN-napló Nem A Fájltábla fájljainak és könyvtárainak metaadatain bekövetkező változások DML-műveletek egy SQL Server adatbázisban. Ezért a rendszer a megfelelő adatbázis naplófájljában naplózza őket. A rendszer azonban nem naplózza őket az NTFS USN-naplóban (a méretváltozások kivételével).

Az SQL Server változáskövetési képességei hasonló információk rögzítésére használhatók.

Lásd még:

Fájlok betöltése a FileTables
Munka könyvtárakkal és elérési utakkal a FileTables-ben
Hozzáférés a FileTables segítségével Transact-SQL
FileTable DDL, függvények, tárolt eljárások és nézetek