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.
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 .
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í