Sdílet prostřednictvím


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:

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 nebo ALTER DATABASE. Pokud nezadáte hodnotu pro DIRECTORY_NAME, název adresáře zůstane null. V databázi však nemůžete vytvářet tabulky FileTables, dokud nezadáte hodnotu pro DIRECTORY_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 pro DIRECTORY_NAME při volání CREATE DATABASE FOR ATTACH nebo RESTORE 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.