Udostępnij za pośrednictwem


Włącz wymagania wstępne dla elementu FileTable

Dotyczy:programu SQL Server

Opisuje sposób włączania wymagań wstępnych dotyczących tworzenia i używania tabel FileTables.

Włączanie wymagań wstępnych dla FileTable

Aby włączyć wymagania wstępne dotyczące tworzenia i używania tabel plików, włącz następujące elementy:

Włączanie funkcji FILESTREAM na poziomie wystąpienia

FileTables rozszerzają możliwości funkcji FILESTREAM programu SQL Server. Zanim będziesz mógł tworzyć i używać tabel FileTables, musisz włączyć FILESTREAM do dostępu wejścia/wyjścia plików na poziomie Windows i w instancji SQL Server.

Włączanie funkcji FILESTREAM na poziomie wystąpienia

Aby uzyskać informacje na temat włączania funkcji FILESTREAM, zobacz Enable and Configure FILESTREAM.

Podczas wywoływania sp_configure w celu włączenia funkcji FILESTREAM na poziomie wystąpienia należy ustawić opcję filestream_access_level na 2. Aby uzyskać więcej informacji, zobacz FILESTREAM access level (opcja konfiguracji serwera).

Zezwalaj na usługę FILESTREAM przez zaporę

Aby uzyskać informacje o sposobie zezwalania funkcji FILESTREAM przez zaporę, zobacz Konfigurowanie Zapory dla Dostępu do FILESTREAM.

Podaj grupę plików FILESTREAM na poziomie bazy danych

Przed utworzeniem tabel FileTables w bazie danych baza danych musi mieć grupę plików FILESTREAM. Aby uzyskać więcej informacji na temat tego wymagania wstępnego, zobacz Create a FILESTREAM-Enabled Database(Tworzenie bazy danych FILESTREAM-Enabled).

Włączanie nietransakcyjnego dostępu na poziomie bazy danych

FileTables umożliwiają aplikacjom systemu Windows uzyskanie dojścia do plików FILESTREAM bez konieczności transakcji. Aby zezwolić na nietransakcyjny dostęp do plików przechowywanych w programie SQL Server, należy określić żądany poziom nietransakcyjnego dostępu na poziomie bazy danych dla każdej bazy danych, która będzie zawierać tabele plików.

Sprawdzanie, czy dostęp nietransakcyjny jest włączony w bazach danych

Wykonaj zapytanie dotyczące widoku wykazu sys.database_filestream_options (Transact-SQL) i sprawdź kolumny non_transacted_access i non_transacted_access_desc.

SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
    FROM sys.database_filestream_options;
GO

Włączanie nietransakcyjnego dostępu na poziomie bazy danych

Dostępne poziomy dostępu nietransakcyjnego to PEŁNE, READ_ONLY i WYŁĄCZONE.

Określanie poziomu dostępu nietransakcyjnego za pomocą Transact-SQL

Podczas tworzenia nowej bazy danychwywołaj instrukcję CREATE DATABASE (SQL Server Transact-SQL) z opcją NON_TRANSACTED_ACCESS FILESTREAM.

CREATE DATABASE database_name
  WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );

Jeśli zmienić istniejącą bazę danych, wywołaj instrukcję ALTER DATABASE (Transact-SQL) z opcją NON_TRANSACTED_ACCESS FILESTREAM.

ALTER DATABASE database_name
  SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );

Określanie poziomu nietransakcyjnego dostępu za pomocą programu SQL Server Management Studio

Poziom dostępu nietransakcyjnego można określić w polu FILESTREAM Dostęp nietransakcyjny na stronie Opcje okna dialogowego Właściwości Bazy Danych. Aby uzyskać więcej informacji na temat tego okna dialogowego, zobacz Właściwości bazy danych (strona opcji).

Określanie katalogu dla tabel FileTables na poziomie bazy danych

Po włączeniu nietransakcyjnego dostępu do plików na poziomie bazy danych można opcjonalnie podać nazwę katalogu w tym samym czasie z opcją DIRECTORY_NAME. Jeśli nie podasz nazwy katalogu po włączeniu dostępu nietransakcyjnego, musisz podać ją później, zanim będzie można utworzyć tabele plików w bazie danych.

W hierarchii folderów FileTable ten katalog na poziomie bazy danych staje się elementem podrzędnym nazwy udziału określonej dla parametru FILESTREAM na poziomie wystąpienia oraz elementem nadrzędnym tabel plików utworzonych w bazie danych. Aby uzyskać więcej informacji, zobacz Praca z katalogami i ścieżkami w tabelach plików.

Określanie katalogu dla tabeli FileTables na poziomie bazy danych

Określona nazwa musi być unikatowa w całym wystąpieniu dla katalogów na poziomie bazy danych.

Określanie katalogu dla tabeli FileTables z Transact-SQL

Gdy tworzysz nową bazę danych, wywołaj instrukcję CREATE DATABASE (SQL Server Transact-SQL) z opcją DIRECTORY_NAME FILESTREAM.

CREATE DATABASE database_name
  WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
GO

Jeśli zmieniasz istniejącą bazę danych, wywołaj instrukcję ALTER DATABASE (Transact-SQL) z opcją DIRECTORY_NAME FILESTREAM. Jeśli używasz tych opcji do zmiany nazwy katalogu, baza danych musi być zablokowana wyłącznie bez otwartych dojść do plików.

ALTER DATABASE database_name
    SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
GO

Po dołączeniebazy danych wywołaj instrukcję CREATE DATABASE (SQL Server Transact-SQL) z opcją FOR ATTACH i opcją DIRECTORY_NAME FILESTREAM.

CREATE DATABASE database_name
    FOR ATTACH WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO

Po przywróceniubazy danych wywołaj instrukcję RESTORE (Transact-SQL) z opcją DIRECTORY_NAME FILESTREAM.

RESTORE DATABASE database_name
    WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO

Określanie katalogu fileTables za pomocą programu SQL Server Management Studio

Nazwa katalogu może zostać określona w polu nazwa katalogu FILESTREAM na stronie Opcje okna dialogowego Właściwości bazy danych. Aby uzyskać więcej informacji na temat tego okna dialogowego, zobacz Właściwości bazy danych (strona opcji).

Wyświetlanie istniejących nazw katalogów dla wystąpienia

Aby wyświetlić listę istniejących nazw katalogów dla wystąpienia, wykonaj zapytanie dotyczące widoku wykazu sys.database_filestream_options (Transact-SQL) i sprawdź kolumnę filestream_database_directory_name.

SELECT DB_NAME ( database_id ), directory_name
    FROM sys.database_filestream_options;
GO

Wymagania i ograniczenia dotyczące katalogu na poziomie bazy danych

  • Ustawienie DIRECTORY_NAME jest opcjonalne podczas wywoływania CREATE DATABASE lub ALTER DATABASE. Jeśli nie określisz wartości dla DIRECTORY_NAME, nazwa katalogu pozostanie równa null. Nie można jednak tworzyć tabel plików w bazie danych, dopóki nie określisz wartości dla DIRECTORY_NAME na poziomie bazy danych.

  • Podana nazwa katalogu musi być zgodna z wymaganiami systemu plików dla prawidłowej nazwy katalogu.

  • Gdy baza danych zawiera tabele FileTables, nie można ustawić DIRECTORY_NAME z powrotem na wartość null.

  • Po dołączeniu lub przywróceniu bazy danych operacja zakończy się niepowodzeniem, jeśli nowa baza danych ma wartość DIRECTORY_NAME, która już istnieje w wystąpieniu docelowym. Określ unikatową wartość DIRECTORY_NAME podczas wywoływania CREATE DATABASE FOR ATTACH lub RESTORE DATABASE.

  • Podczas uaktualniania istniejącej bazy danych wartość DIRECTORY_NAME ma wartość null.

  • Po włączeniu lub wyłączeniu nietransakcyjnego dostępu na poziomie bazy danych operacja nie sprawdza, czy nazwa katalogu została określona, czy jest unikatowa.

  • Po usunięciu bazy danych, która miała włączone FileTables, katalog na poziomie bazy danych i wszystkie struktury katalogów wszystkich FileTables w nim zostaną usunięte.