Sdílet prostřednictvím


Přístup k FileTables pomocí API File Input-Output

platí pro:SQL Server

Popisuje fungování vstupně-výstupních operací systému souborů v tabulce FileTable.

Začněte používat API pro vstupně-výstupní operace se soubory s funkcí FileTables

Očekává se, že primární využití FileTables bude prostřednictvím systému souborů Windows a rozhraní API pro vstupně-výstupní operace souborů. FileTables podporují netransakční přístup prostřednictvím bohaté sady dostupných API I/O operací se soubory.

  1. Přístup k rozhraní API vstupně-výstupních operací souborů obvykle začíná získáním logické cesty UNC pro soubor nebo adresář. Aplikace mohou použít příkaz Transact-SQL s funkcí GetFileNamespacePath (Transact-SQL) k získání logické cesty k souboru nebo adresáři. Další informace najdete v tématu Práce s adresáři a cestami vFileTables .

  2. Aplikace pak pomocí této logické cesty získá popisovač souboru nebo adresáře a provede něco s objektem. Cestu lze předat jakékoli podporované funkci rozhraní API systému souborů, například CreateFile() nebo CreateDirectory(), k vytvoření nebo otevření souboru a získání popisovače. Popisovač se pak dá použít ke streamování dat, k vytvoření výčtu nebo uspořádání adresářů, k získání nebo nastavení atributů souboru, k odstranění souborů nebo adresářů atd.

Vytváření souborů a adresářů v tabulce FileTable

Soubor nebo adresář lze vytvořit v FileTable voláním rozhraní API pro vstupně-výstupní operace souboru, jako je CreateFile nebo CreateDirectory.

  • Všechny příznaky dispozice vytváření, režimy sdílení a režimy přístupu jsou podporovány. To zahrnuje vytváření, odstraňování a místní úpravy souborů. Také jsou podporovány aktualizace oboru názvů souborů, tj. vytvoření/odstranění adresáře, přejmenování a přesun operací.

  • Vytvoření nového souboru nebo adresáře odpovídá vytvoření nového řádku v podkladové tabulce FileTable.

  • U souborů jsou streamová data uložena ve sloupci file_stream; pro adresáře má tento sloupec hodnotu null.

  • Ve sloupci is_directory je u souborů uvedeno false. Pro adresáře obsahuje tento sloupec true.

  • Sdílení a souběžnost přístupu se vynucuje, když více souběžných vstupně-výstupních operací nebo operací Transact-SQL ovlivní stejný soubor nebo adresář v hierarchii.

Čtení souborů a adresářů v tabulce FileTable

V SQL Serveru se vynucuje sémantika izolace Read Committed pro všechny operace vstupně-výstupního přístupu k souborům na datech datových proudů a atributech.

Zápis a aktualizace souborů a adresářů v tabulce FileTable

  • Všechny vstupně-výstupní operace zápisu nebo aktualizace souborů v tabulce FileTable nejsou transakční. To znamená, že k těmto operacím není vázána žádná transakce SYSTÉMU SQL Server a nejsou poskytovány žádné záruky ACID.

  • Všechny operace souborového vstupu/výstupu, včetně streamování a místních aktualizací, jsou podporovány pro FileTable.

  • Aktualizace dat NEBO atributů FILESTREAM prostřednictvím vstupně-výstupních rozhraní API souborů vedou k aktualizacím odpovídajících sloupců file_stream a atributů souborů v FileTable.

Odstranění souborů a adresářů v tabulce FileTable

Při odstranění souboru nebo adresáře jsou dodržovány všechny sémantiky API pro vstupně-výstupní operace systému Windows.

  • Odstranění adresáře selže, pokud adresář obsahuje nějaké soubory nebo podadresáře.

  • Odstraněním souboru nebo adresáře odeberete odpovídající řádek z tabulky FileTable. To je ekvivalentem odstranění řádku prostřednictvím operace Transact-SQL.

Podporované operace se systémem souborů

FileTables podporují rozhraní API systému souborů související s následujícími operacemi systému souborů:

  • Správa adresářů

  • Správa souborů

FileTables nepodporují následující operace:

  • Správa disků

  • Správa svazků

  • Transakční SYSTÉM SOUBORŮ NTFS

Další úvahy o přístupu k tabulkám FileTables pro vstup/výstup souborů

Použití názvů virtuálních sítí (VNN) se skupinami dostupnosti AlwaysOn

Pokud databáze obsahující data FILESTREAM nebo FileTable patří do skupiny dostupnosti AlwaysOn, veškerý přístup k datům FILESTREAM nebo FileTable prostřednictvím rozhraní API systému souborů by měl místo názvů počítačů používat sítě VN. Další informace najdete v tématu FILESTREAM a FileTable se skupinami dostupnosti AlwaysOn (SQL Server).

Částečné aktualizace

Zapisovatelný popisovač získaný pro data FILESTREAM v FileTable pomocí funkce GetFileNamespacePath (Transact-SQL ) lze použít k provedení místních a částečných aktualizací obsahu FILESTREAM. Toto chování se liší od transakčního přístupu FILESTREAM pomocí handle získaného voláním OpenSQLFILESTREAM() a předáním explicitního kontextu transakce.

Transakční sémantika

Při přístupu k souborům v FileTable pomocí rozhraní API vstupně-výstupních operací souborů nejsou tyto operace přidruženy k žádným uživatelským transakcím a mají následující další vlastnosti:

  • Vzhledem k tomu, že neprovedený přístup k datům FILESTREAM v FileTable není přidružen k žádné transakci, nemá žádnou specifickou sémantiku izolace. SQL Server však může použít interní transakce k vynucení uzamčení nebo souběžnosti sémantiky na datech FileTable. Interní transakce tohoto typu se provádějí s izolací čtením potvrzenou.

  • Pro tyto neprovedené operace s daty FILESTREAM neexistují žádné záruky ACID. Záruky konzistence jsou podobné zárukám pro aktualizace souborů provedené aplikacemi v systému souborů.

  • Tyto změny nelze vrátit zpět.

Ke sloupci FILESTREAM v FileTable však lze přistupovat také pomocí transakčního přístupu FILESTREAM voláním OpenSqlFileStream(). Tento typ přístupu může být plně transakční a bude respektovat všechny úrovně transakční konzistentně, které jsou aktuálně podporovány.

Řízení souběžnosti

SQL Server vynucuje řízení souběžnosti pro přístup k FileTable mezi aplikacemi systému souborů a mezi aplikacemi systému souborů a Transact-SQL aplikacemi. Ovládání souběžnosti je dosaženo přijetím odpovídajících zámků na řádcích FileTable.

Spouštěče

Vytvoření, úprava nebo odstranění souborů nebo adresářů nebo jejich atributů prostřednictvím systému souborů vede k odpovídajícím operacím vložení, aktualizace nebo odstranění v tabulce FileTable. Všechny přidružené Transact-SQL triggery DML se aktivují v rámci těchto operací.

Funkce systému souborů podporované v tabulkách FileTables

Schopnost Podporovaný Komentáře
oplocks Ano Pro oplocky úrovně 2, úrovně 1, Batch a Filter existuje podpora.
Rozšířené atributy Ne
spojovacích bodů Ne
trvalé seznamy ACL Ne
pojmenované toky Ne
zhuštěné soubory Ano Zhuštěnost se dá nastavit jenom u souborů a ovlivňuje ukládání datového streamu. Vzhledem k tomu, že data FILESTREAM jsou uložena na svazcích NTFS, funkce FileTable podporuje řídké soubory předáváním požadavků do systému souborů NTFS.
komprese Ano
šifrování Ano
TxF Ne
ID souborů Ne
ID objektů Ne
symbolické odkazy Ne
pevné odkazy Ne
Krátké názvy Ne
oznámení o změnách adresáře Ne
uzamčení rozsahu bajtů Ano Požadavky na uzamčení rozsahu bajtů se předají systému souborů NTFS.
pamětí mapované soubory Ne
Zrušit I/O Ano
zabezpečení Ne Vynucují se zabezpečení na úrovni sdílené složky Windows a zabezpečení na úrovni sloupců a tabulky SQL Serveru.
deníku USN Ne Změny metadat souborů a adresářů v FileTable jsou operace DML v databázi SQL Serveru. Proto jsou zaznamenávány do odpovídajícího databázového souboru protokolů. Nejsou však zaprotokolovány v deníku USN systému souborů NTFS (s výjimkou změn velikosti).

Funkce sledování změn SQL Serveru lze použít k zachycení podobných informací.

Viz také

Načíst soubory do FileTables
pracovat s adresáři a cestami v FileTables
Přístup k FileTables s využitím jazyka Transact-SQL
DDL tabulky FileTable, funkce, uložené procedury a zobrazení