Povolit požadavky pro FileTable
platí pro:SQL Server
Popisuje, jak povolit požadavky pro vytváření a používání FileTables.
Povolení požadavků pro FileTable
Pokud chcete povolit požadavky pro vytváření a používání FileTables, povolte následující položky:
na úrovni instance:
na úrovni databáze:
Povolení FILESTREAM na úrovni instance
FileTables rozšiřují možnosti funkce FILESTREAM SQL Serveru. Než budete moct vytvářet a používat FileTables, musíte povolit fileSTREAM pro vstupně-výstupní přístup k souborům na úrovni Windows a na instanci SQL Serveru.
Povolení FILESTREAM na úrovni instance
Informace o povolení FILESTREAM naleznete v tématu Povolení a konfigurace FILESTREAM.
Při volání sp_configure
povolit FILESTREAM na úrovni instance, musíte nastavit filestream_access_level
možnost 2
. Další informace najdete v tématu úroveň přístupu FILESTREAM (možnost konfigurace serveru).
Povolit FILESTREAM přes bránu firewall
Informace o tom, jak povolit FILESTREAM přes bránu firewall, naleznete v tématu Konfigurace brány firewall pro přístup FILESTREAM.
Zadejte skupinu souborů FILESTREAM na úrovni databáze.
Před vytvořením FileTables v databázi musí mít databáze souborovou skupinu FILESTREAM. Další informace o tomto předpokladu naleznete v Vytvořit databázi FILESTREAM-Enabled.
Povolení netransakčního přístupu na úrovni databáze
FileTables umožňují aplikacím systému Windows získat popisovač souborů Windows pro data FILESTREAM bez nutnosti transakce. Pokud chcete povolit tento netransakční přístup k souborům uloženým na SQL Serveru, musíte zadat požadovanou úroveň netransakčního přístupu na úrovni databáze pro každou databázi, která bude obsahovat FileTables.
Zkontrolujte, jestli je u databází povolený netransakční přístup.
Zadejte dotaz na zobrazení katalogu sys.database_filestream_options (Transact-SQL) a zkontrolujte sloupce non_transacted_access
a non_transacted_access_desc
.
SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
FROM sys.database_filestream_options;
GO
Povolení netransakčního přístupu na úrovni databáze
Dostupné úrovně netransakčního přístupu jsou FULL, READ_ONLY a OFF.
Určení úrovně netransakčního přístupu pomocí Transact-SQL
Když vytvořit novou databázi, zavolejte příkaz CREATE DATABASE (SQL Server Transact-SQL) s možností NON_TRANSACTED_ACCESS
FILESTREAM.
CREATE DATABASE database_name
WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
Když změníte existujícídatabázi, zavolejte příkaz ALTER DATABASE (Transact-SQL) s možností NON_TRANSACTED_ACCESS
FILESTREAM.
ALTER DATABASE database_name
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
Určení úrovně netransakčního přístupu pomocí aplikace SQL Server Management Studio
Úroveň netransakčního přístupu můžete zadat v poli nepřenesený přístup FILESTREAM na stránce Možnosti v dialogu Vlastnosti databáze. Další informace o tomto dialogovém okně naleznete v tématu Vlastnosti databáze (stránka Možnosti).
Zadání adresáře pro FileTables na úrovni databáze
Když povolíte netransakční přístup k souborům na úrovni databáze, můžete volitelně zadat název adresáře současně s možností DIRECTORY_NAME
. Pokud při povolení netransakčního přístupu nezadáte název adresáře, budete ho muset zadat později, než budete moct v databázi vytvořit FileTables.
V hierarchii složek FileTable se tento adresář na úrovni databáze stane potomkem sdílené složky zadané pro FILESTREAM na úrovni instance a rodičem FileTables vytvořených v databázi. Další informace najdete v tématu Práce s adresáři a cestami vFileTables .
Zadání adresáře pro FileTables na úrovni databáze
Zadaný název musí být jedinečný v rámci instance pro adresáře na úrovni databáze.
Zadání adresáře pro FileTables pomocí Transact-SQL
Když vytvořit novou databázi, zavolejte příkaz CREATE DATABASE (SQL Server Transact-SQL) s možností DIRECTORY_NAME
FILESTREAM.
CREATE DATABASE database_name
WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
GO
Když změnit existujícídatabáze , zavolejte příkaz ALTER DATABASE (Transact-SQL) s možností DIRECTORY_NAME
FILESTREAM. Pokud tyto možnosti použijete ke změně názvu adresáře, musí být databáze výhradně uzamčena bez otevřených popisovačů souborů.
ALTER DATABASE database_name
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
GO
Když připojítedatabázi, zavolejte příkaz CREATE DATABASE (SQL Server Transact-SQL) s volbou FOR ATTACH
a volbou FILESTREAM DIRECTORY_NAME
.
CREATE DATABASE database_name
FOR ATTACH WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO
Při obnovení databázevolejte příkaz RESTORE (Transact-SQL) s možností DIRECTORY_NAME
FILESTREAM.
RESTORE DATABASE database_name
WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO
Určení adresáře pro FileTables pomocí aplikace SQL Server Management Studio
Název adresáře můžete zadat v poli Název adresáře FILESTREAM na stránce Možnosti dialogového okna Vlastnosti databáze. Další informace o tomto dialogovém okně naleznete v tématu Vlastnosti databáze (stránka Možnosti).
Zobrazení existujících názvů adresářů pro instanci
Pokud chcete zobrazit seznam existujících názvů adresářů pro instanci, zadejte dotaz na zobrazení katalogu sys.database_filestream_options (Transact-SQL) a zkontrolujte sloupec filestream_database_directory_name
.
SELECT DB_NAME ( database_id ), directory_name
FROM sys.database_filestream_options;
GO
Požadavky a omezení adresáře na úrovni databáze
Nastavení
DIRECTORY_NAME
je volitelné při voláníCREATE DATABASE
neboALTER DATABASE
. Pokud nezadáte hodnotu proDIRECTORY_NAME
, název adresáře zůstane null. V databázi však nemůžete vytvářet tabulky FileTables, dokud nezadáte hodnotu proDIRECTORY_NAME
na úrovni databáze.Zadaný název adresáře musí splňovat požadavky systému souborů pro platný název adresáře.
Pokud databáze obsahuje FileTables, nemůžete nastavit
DIRECTORY_NAME
zpět na hodnotu null.Když databázi připojíte nebo obnovíte, operace selže, pokud má nová databáze hodnotu pro
DIRECTORY_NAME
, která již v cílové instanci existuje. Zadejte jedinečnou hodnotu proDIRECTORY_NAME
při voláníCREATE DATABASE FOR ATTACH
neboRESTORE DATABASE
.Při upgradu existující databáze má hodnota
DIRECTORY_NAME
hodnotu null.Pokud povolíte nebo zakážete netransakční přístup na úrovni databáze, operace nekontroluje, jestli byl zadán název adresáře, nebo jestli je jedinečný.
Když odstraníte databázi, která byla povolena pro FileTables, adresář na úrovni databáze a všechny adresářové struktury všech FileTables v ní budou odebrány.