Aktivieren der erforderlichen Komponenten für FileTable
Gilt für: SQL Server
Beschreibt, wie die erforderlichen Komponenten zum Erstellen und Verwenden von FileTables aktiviert werden.
Aktivieren der erforderlichen Komponenten für Dateitabelle
Aktivieren Sie zum Aktivieren der erforderlichen Komponenten zum Erstellen und Verwenden von FileTables die folgenden Elemente:
Auf Instanzebene:
Auf Datenbankebene:
Aktivieren von FILESTREAM auf Instanzebene
Die Dateitabellen erweitern die Möglichkeiten der FILESTREAM-Funktion von SQL Server. Sie müssen FILESTREAM für Datei-E/A-Zugriff auf der Windows-Ebene und in der Instanz von SQL Server aktivieren, bevor Sie Dateitabellen erstellen und verwenden können.
Aktivieren von FILESTREAM auf Instanzebene
Informationen zum Aktivieren von FILESTREAM finden Sie unter Aktivieren und Konfigurieren von FILESTREAM.
Wenn Sie sp_configure
aufrufen, um FILESTREAM auf Instanzebene zu aktivieren, müssen Sie die Option filestream_access_level
auf 2
festlegen. Weitere Informationen finden Sie unter FILESTREAM-Zugriffsebene (Serverkonfigurationsoption).
Zulassen von FILESTREAM durch die Firewall
Informationen zum Zulassen von FILESTREAM durch die Firewall finden Sie unter Configure a Firewall for FILESTREAM Access.
Bereitstellen einer FILESTREAM-Dateigruppe auf der Datenbankebene
Bevor Sie FileTables in einer Datenbank erstellen können, muss die Datenbank eine FILESTREAM-Dateigruppe haben. Weitere Informationen zu dieser Voraussetzung finden Sie unter Erstellen einer FILESTREAM-aktivierten Datenbank.
Aktivieren von nicht transaktionalem Zugriff auf Datenbankebene
Über FileTables können Windows-Anwendungen ein Windows-Dateihandle für FILESTREAM-Daten abrufen, ohne dass hierfür eine Transaktion erforderlich ist. Um diesen nicht transaktionalen Zugriff auf in SQL Server gespeicherte Dateien zuzulassen, müssen Sie die gewünschte Ebene des nicht transaktionalen Zugriffs auf Datenbankebene für jede Datenbank angeben, die Dateitabellen enthält.
Überprüfen Sie, ob nicht transaktionaler Zugriff auf Datenbanken aktiviert ist
Abfrage in der Katalogansicht sys.database_filestream_options (Transact-SQL), und überprüfen Sie die Spalten non_transacted_access
und non_transacted_access_desc
.
SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
FROM sys.database_filestream_options;
GO
Aktivieren von nicht transaktionalem Zugriff auf Datenbankebene
Die verfügbaren Stufen des nicht transaktionalen Zugriffs sind FULL, READ_ONLY und OFF.
Angeben der Ebene des nicht transaktionalen Zugriffs mit Transact-SQL
Wenn Sie eine neue Datenbank erstellen, rufen Sie die CREATE DATABASE (SQL Server Transact-SQL)-Anweisung mit der FILESTREAM-Option NON_TRANSACTED_ACCESS
auf.
CREATE DATABASE database_name
WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
Wenn Sie eine vorhandene Datenbank ändern, rufen Sie die ALTER DATABASE (Transact-SQL)-Anweisung mit der FILESTREAM-Option NON_TRANSACTED_ACCESS
auf.
ALTER DATABASE database_name
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
Angeben der Ebene des nicht transaktionalen Zugriffs mithilfe von SQL Server Management Studio
Sie können die Ebene des nicht transaktionalen Zugriffs im Feld FILESTREAM Nicht durchgeführter Zugriff der Seite Optionen des Dialogfelds Datenbank-Eigenschaften angeben. Weitere Informationen zu diesem Dialogfeld finden Sie unter Datenbankeigenschaften (Seite Optionen).
Angeben eines Verzeichnisses für Dateitabellen auf Datenbankebene
Wenn Sie nicht transaktionalen Zugriff auf Dateien auf Datenbankebene aktivieren, können Sie gleichzeitig optional einen Verzeichnisnamen mit der Option DIRECTORY_NAME
angeben. Wenn Sie keinen Verzeichnisnamen angeben, wenn Sie nicht transaktionalen Zugriff aktivieren, müssen Sie diesen später angeben, bevor Sie Dateitabelle in der Datenbank erstellen können.
In der FileTable-Ordnerhierarchie wird dieses Verzeichnis auf Datenbankebene das untergeordnete Element des Freigabenamens, das für FILESTREAM auf Instanzebene angegeben wurde, und das übergeordnete Element von den in der Datenbank erstellten FileTables. Weitere Informationen finden Sie unter Work with Directories and Paths in FileTables.
Angeben eines Verzeichnisses für Dateitabellen auf Datenbankebene
Der angegebene Name muss in der Instanz für Verzeichnisse auf Datenbankebene eindeutig sein.
Angeben eines Verzeichnisses für Dateitabellen mit Transact-SQL
Wenn Sie eine neue Datenbank erstellen, rufen Sie die CREATE DATABASE (SQL Server Transact-SQL)-Anweisung mit der FILESTREAM-Option DIRECTORY_NAME
auf.
CREATE DATABASE database_name
WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
GO
Wenn Sie eine vorhandene Datenbank ändern, rufen Sie die ALTER DATABASE (Transact-SQL)-Anweisung mit der FILESTREAM-Option DIRECTORY_NAME
auf. Wenn Sie diese Optionen verwenden, um den Verzeichnisnamen zu ändern, muss die Datenbank exklusiv gesperrt sein und darf keine offenen Dateihandles aufweisen.
ALTER DATABASE database_name
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
GO
Wenn Sie eine Datenbank anfügen, rufen Sie die CREATE DATABASE (SQL Server Transact-SQL)-Anweisung mit der Option FOR ATTACH
und der FILESTREAM-Option DIRECTORY_NAME
auf.
CREATE DATABASE database_name
FOR ATTACH WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO
Wenn Sie eine Datenbank wiederherstellen, rufen Sie die RESTORE (Transact-SQL)-Anweisung mit der FILESTREAM-Option DIRECTORY_NAME
auf.
RESTORE DATABASE database_name
WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO
Angeben eines Verzeichnisses für Dateitabellen mithilfe von SQL Server Management Studio
Sie können im Feld FILESTREAM Verzeichnisname der Seite Optionen des Dialogfelds Datenbankeigenschaften einen Verzeichnisnamen angeben. Weitere Informationen zu diesem Dialogfeld finden Sie unter Datenbankeigenschaften (Seite Optionen).
Anzeigen vorhandener Verzeichnisnamen für die Instanz
Fragen Sie zum Anzeigen einer Liste vorhandener Verzeichnisnamen für die Instanz die sys.database_filestream_options (Transact-SQL)-Katalogsicht ab, und überprüfen Sie die Spalte filestream_database_directory_name
.
SELECT DB_NAME ( database_id ), directory_name
FROM sys.database_filestream_options;
GO
Anforderungen und Einschränkungen für das Verzeichnis auf Datenbankebene
Das Festlegen von
DIRECTORY_NAME
ist optional, wenn SieCREATE DATABASE
oderALTER DATABASE
aufrufen. Wenn Sie keinen Wert fürDIRECTORY_NAME
angeben, bleibt der Verzeichnisname Null. Sie können jedoch erst Dateitabellen in der Datenbank erstellen, wenn Sie einen Wert fürDIRECTORY_NAME
auf Datenbankebene angeben.Der Verzeichnisname, den Sie angeben, muss den Anforderungen des Dateisystems im Hinblick auf einen gültigen Verzeichnisnamen entsprechen.
Wenn die Datenbank Dateitabellen enthält, können Sie
DIRECTORY_NAME
nicht auf einen Null-Wert zurücksetzen.Wenn Sie eine Datenbank anfügen oder wiederherstellen, schlägt der Vorgang fehl, wenn die neue Datenbank über einen Wert für
DIRECTORY_NAME
verfügt, der bereits in der Zielinstanz vorhanden ist. Geben Sie einen eindeutigen Wert fürDIRECTORY_NAME
an, wenn SieCREATE DATABASE FOR ATTACH
oderRESTORE DATABASE
aufrufen.Wenn Sie eine vorhandene Datenbank aktualisieren, ist der Wert von
DIRECTORY_NAME
Null.Wenn Sie nicht transaktionalen Zugriff auf Datenbankebene aktivieren oder deaktivieren, wird nicht überprüft, ob der Verzeichnisname angegeben wurde oder ob er eindeutig ist.
Wenn Sie eine Datenbank löschen, die für FileTables aktiviert wurde, werden das Verzeichnis auf Datenbankebene und alle Verzeichnisstrukturen aller FileTables darunter entfernt.