Správa tabulek souborů
platí pro:SQL Server
Popisuje běžné úlohy správy pro správu FileTables.
Postupy: Získání seznamu tabulek souborů a souvisejících objektů
Pokud chcete získat seznam FileTables, zadejte dotaz na jedno z následujících zobrazení katalogu:
sys.tables (Transact-SQL) (Zkontrolujte hodnotu sloupce is_filetable.)
SELECT * FROM sys.filetables;
GO
SELECT * FROM sys.tables WHERE is_filetable = 1;
GO
Pokud chcete získat seznam objektů definovaných systémem, které byly vytvořeny při vytváření přidružených FileTables, zadejte dotaz na zobrazení katalogu sys.filetable_system_defined_objects (Transact-SQL).
SELECT object_id, OBJECT_NAME(object_id) AS 'Object Name'
FROM sys.filetable_system_defined_objects;
GO
Zakázání a opětovné povolení netransakčního přístupu na úrovni databáze
Pokud chcete získat výhradní přístup, který je nutný pro určité úlohy správy, možná budete muset dočasně zakázat neakční přístup.
Chování příkazu ALTER DATABASE při změně úrovně neakčního přístupu
Pokud nastavíte ne-transakční přístup na READ_ONLY nebo VYPNUTO, příkaz ALTER DATABASE nevrátí řízení uživateli, dokud existují otevřené popisovače souborů, se kterými je požadovaná operace v konfliktu. Mezi popisovače, které jsou v konfliktu s touto operací, patří následující:
Když nastavujete přístup na NONE, ovlivní to všechny otevřené popisovače souborů.
Když nastavujete přístup k READ_ONLY, všechny popisovače souborů otevřené pro přístup k zápisu.
Informace o zabíjení otevřených popisovačů souborů naleznete v tématu Killing Open File Handles Associated with a FileTable v tomto tématu.
Pokud je příkaz ALTER DATABASE zrušen nebo končí vypršením časového limitu, úroveň transakčního přístupu se nezmění.
Pokud zavoláte příkaz ALTER DATABASE s klauzulí <ukončení> (VRÁCENÍ ZPĚT PO integer [ SEKUNDÁCH ] | VRÁCENÍ ZPĚT OKAMŽITĚ | BEZ ČEKÁNÍ), všechny otevřené ne-transakční popisovače souborů se ukončí.
Varování
Zabití otevřených popisovačů souborů může uživatelům způsobit ztrátu neuložených dat. Toto chování je konzistentní s chováním samotného systému souborů.
účinky zakázání nekonakčního přístupu
Změna úrovně ne-transakčního přístupu na úrovni databáze má následující účinky na adresáře FileTable v rámci adresáře této databáze:
Když nastavíte přístup na NONE, nebudou už všechny adresáře FileTable a jejich obsah přístupné ani viditelné.
Když nastavíte přístup na READ_ONLY, pak jsou všechny adresáře FileTable a jejich obsah také jen pro čtení.
Zakázání FILESTREAM na úrovni instance má následující účinky na adresáře na úrovni databáze na dané instanci a adresáře FileTable v těchto adresářích:
- Žádné adresáře na úrovni databáze v instanci nejsou viditelné, pokud je fileSTREAM zakázán na úrovni instance.
Jak na to: Zakázání a opětovné povolení ne-transakčního přístupu na úrovni databáze
Další informace naleznete v tématu ALTER DATABASE SET Options (Transact-SQL).
Zakázání úplného nekonakčního přístupu
Volejte příkaz ALTER DATABASE a nastavte hodnotu NON_TRANSACTED_ACCESS na READ_ONLY nebo OFF.
-- Disable write access.
ALTER DATABASE database_name
SET FILESTREAM ( NON_TRANSACTED_ACCESS = READ_ONLY );
GO
-- Disable non-transactional access.
ALTER DATABASE database_name
SET FILESTREAM ( NON_TRANSACTED_ACCESS = OFF );
GO
Opětovné povolení úplného nekonakčního přístupu
Zavolejte příkaz ALTER DATABASE a nastavte hodnotu NON_TRANSACTED_ACCESS na FULL.
ALTER DATABASE database_name
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL );
GO
Postupy: Zajištění viditelnosti tabulek souborů v databázi
Adresář na úrovni databáze a adresáře FileTable v ní jsou viditelné, pokud jsou splněny všechny tyto podmínky:
FILESTREAM je povolen na úrovni instance.
Na úrovni databáze je povolený netransakční přístup.
Platný adresář byl zadán na úrovni databáze.
Zakázání a opětovné povolení oboru názvů FileTable na úrovni tabulky
Zakázání oboru názvů FileTable zakáže všechna systémově definovaná omezení a triggery vytvořené pomocí FileTable. To je užitečné v případech, kdy musí být tabulka FileTable reorganizována ve velkém měřítku pomocí Transact-SQL operací bez nutnosti vynucování sémantiky FileTable. Tyto operace však mohou ponechat FileTable v nekonzistentním stavu a mohou zabránit opětovnému povolení oboru názvů FileTable.
Zakázání oboru názvů FileTable má následující výsledky:
Sloupce a data FileTable nejsou fyzicky vyřazeny z tabulky.
Adresář FileTable a soubory a adresáře, které obsahuje, zmizí ze systému souborů a nejsou k dispozici pro vstupně-výstupní přístup k souborům.
Sloupce filetable definované systémem nelze vynechat a znovu vytvořit; jinak se ale chovají jako běžné sloupce pro operace DML.
Otevřené popisovače souborů brání zakázání omezení FileTable, protože tato operace vyžaduje zámek schématu na tabulce.
Vynucení všech sémantiek FileTable, včetně systémově definovaných omezení a triggerů, se zastaví po zakázání oboru názvů FileTable.
Opětovné povolení oboru názvů FileTable má následující výsledky:
Tabulka FileTable je kontrolována pro konzistenci. Pokud jsou nalezeny nekonzistence, dojde k chybě a FileTable zůstane zakázaná; v opačném případě je souborová tabulka znovu povolena.
Obnovení vynucení sémantiky FileTable, včetně systémově definovaných omezení a triggerů, je obnoveno.
Adresář FileTable a soubory a adresáře, které obsahuje, se stanou viditelnými v systému souborů a budou k dispozici pro vstupně-výstupní přístup k souborům.
Jak na to: Zakázání a opětovné povolení oboru názvů FileTable na úrovni tabulky
Použijte příkaz ALTER TABLE s volbou { ENABLE | DISABLE } FILETABLE_NAMESPACE.
K zakázání oboru názvů FileTable
ALTER TABLE filetable_name
DISABLE FILETABLE_NAMESPACE;
GO
Jak opětovně povolit obor názvů FileTable
ALTER TABLE filetable_name
ENABLE FILETABLE_NAMESPACE;
GO
Odstranění otevřených popisovačů souborů spojených s FileTable
Otevření popisovačů souborů uložených v tabulce FileTable může zabránit výhradnímu přístupu, který je nutný pro určité úlohy správy. Pro umožnění urgentních úloh možná budete muset zrušit otevřené popisovače souborů přidružené k jedné nebo více tabulkám FileTables.
Varování
Uzavření otevřených popisovačů souborů může způsobit, že uživatelé přijdou o neuložená data. Toto chování je konzistentní s chováním samotného systému souborů.
Jak získat seznam otevřených popisovačů souborů přidružených k FileTable
Dotazování na zobrazení katalogu sys.dm_filestream_non_transacted_handles (Transact-SQL).
SELECT * FROM sys.dm_filestream_non_transacted_handles;
GO
Jak na to: Ukončení otevřených popisovačů souborů přidružených k FileTable
Zavolejte uloženou proceduru sp_kill_filestream_non_transacted_handles (Transact-SQL) s příslušnými argumenty, abyste ukončili všechny otevřené popisovače souborů v databázi nebo v FileTable, nebo ke ukončení konkrétního popisovače.
USE database_name;
-- Kill all open handles in all the filetables in the database.
EXEC sp_kill_filestream_non_transacted_handles;
GO
-- Kill all open handles in a single filetable.
EXEC sp_kill_filestream_non_transacted_handles @table_name = 'filetable_name';
GO
-- Kill a single handle.
EXEC sp_kill_filestream_non_transacted_handles @handle_id = integer_handle_id;
GO
Postupy: Jak identifikovat zámky držené souborovými tabulkami
Většina zámků, které FileTables přebírá, odpovídá souborům otevřených aplikacemi.
Identifikace otevřených souborů a přidružených zámků
Připojte pole request_owner_id v zobrazení dynamické správy sys.dm_tran_locks (Transact-SQL) k poli fcb_id ve sys.dm_filestream_non_transacted_handles (Transact-SQL). V některých případech zámek nemusí odpovídat jen jednomu otevřenému popisovači souboru.
SELECT opened_file_name
FROM sys.dm_filestream_non_transacted_handles
WHERE fcb_id IN
( SELECT request_owner_id FROM sys.dm_tran_locks );
GO
Zabezpečení FileTable
Soubory a adresáře uložené v FileTables jsou zabezpečené pouze zabezpečením SQL Serveru. Zabezpečení na úrovni tabulek a sloupců se vynucuje pro přístup k systému souborů a také přístup k Transact-SQL. Rozhraní API pro zabezpečení souborového systému Windows a nastavení seznamů ACL nejsou podporovány.
Oprávnění zabezpečení a přístupu, která se vztahují na filegroups a kontejnery FILESTREAM, platí také pro FileTables, protože data souboru jsou uložena jako sloupec FILESTREAM v FileTable.
zabezpečení FileTable a Transact-SQL Access
Transact-SQL přístup k datům v FileTables je zabezpečený stejným způsobem jako jakákoli jiná tabulka. Pro každou operaci, která přistupuje k datům nebo mění data, se provádějí příslušné kontroly zabezpečení na úrovni tabulek a sloupců.
zabezpečení FileTable a přístup k systému souborů
Rozhraní API systému souborů vyžadují pro otevření popisovače souboru nebo adresáře uloženého v tabulce FileTable odpovídající oprávnění SQL Serveru na celý řádek v tabulce FileTable (tj. oprávnění na úrovni tabulky). Pokud uživatel nemá odpovídající oprávnění SQL Serveru pro žádný sloupec v FileTable, přístup k systému souborů je odepřen.
Zálohování a Souborové tabulky
Když k zálohování FileTable použijete SQL Server, zálohuje se data FILESTREAM se strukturovanými daty v databázi. Pokud nechcete zálohovat data FILESTREAM s relačními daty, můžete k vyloučení skupin souborů FILESTREAM použít částečnou zálohu.
Transakční konzistence zálohování FileTable
Mnoho nástrojů a operací pro správu (včetně zálohování, zálohování protokolů a transakční replikace) čte transakční data konzistentně čtením transakčních protokolů. V tuto chvíli čtou všechna data FILESTREAM aktualizovaná jako součást transakce. Pokud není na úrovni databáze povolen netransakční přístup, tyto nástroje a operace pracují s plnou konzistencí transakcí.
Pokud je však povolený úplný ne-transakční přístup, může souborová tabulka obsahovat data, která byla aktualizována nedávno (prostřednictvím ne-transakční aktualizace), než je transakce, kterou nástroj nebo proces čte z transakčního protokolu. To znamená, že operace obnovení k určitému bodu v čase může obsahovat data FILESTREAM, která jsou novější než tato transakce. Toto je očekávané chování, když jsou na tabulkách FileTables povoleny netransakční aktualizace.
SQL Server Profiler a FileTables
SQL Server Profiler může zachytit operace Otevření a zavření souborů systému Windows ve výstupu trasování pro soubory uložené v FileTable.
Auditování a souborové tabulky
FileTable je možné auditovat stejně jako jakoukoli jinou tabulku. Přístupové vzory Win32 ale nejsou založeny na pevných operacích. Jedna akce v systému souborů se přeloží na více operací Transact-SQL DML. Například otevření souboru v aplikaci Microsoft Word se promění do několika operací otevření/zavření/vytvoření/přejmenování/smazání a odpovídajících DML aktivit Transact-SQL. Výsledkem jsou podrobné záznamy auditu, kde je obtížné korelovat záznamy mezi akcemi systému souborů a odpovídajícími záznamy auditu DML Transact-SQL.
DBCC a FileTables
Pomocí DBCC CHECKCONSTRAINTS můžete ověřit omezení souborové tabulky, včetně systémově definovaných omezení.
Viz také
Kompatibilita FileTable s jinými funkcemi SQL Serveru
DDL, funkce, uložené procedury a zobrazení FileTable