Aktivieren der erforderlichen Komponenten für FileTableEnable the Prerequisites for FileTable

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions)

Beschreibt, wie die erforderlichen Komponenten zum Erstellen und Verwenden von FileTables aktiviert werden.Describes how to enable the prerequisites for creating and using FileTables.

Aktivieren der erforderlichen Komponenten für FileTableEnabling the Prerequisites for FileTable

Aktivieren Sie zum Aktivieren der erforderlichen Komponenten zum Erstellen und Verwenden von FileTables die folgenden Elemente:To enable the prerequisites for creating and using FileTables, enable the following items:

Aktivieren von FILESTREAM auf InstanzebeneEnabling FILESTREAM at the Instance Level

FileTables erweitern die Funktionen der FILESTREAM-Funktion von SQL ServerSQL Server.FileTables extend the capabilities of the FILESTREAM feature of SQL ServerSQL Server. Daher muss FILESTREAM für Datei-E/A-Zugriff auf der Windows-Ebene und in der Instanz von SQL ServerSQL Server aktiviert werden, bevor Sie FileTables erstellen und verwenden können.Therefore you have to enable FILESTREAM for file I/O access at the Windows level and on the instance of SQL ServerSQL Server before you can create and use FileTables.

Vorgehensweise: Aktivieren von FILESTREAM auf InstanzebeneHow To: Enable FILESTREAM at the Instance Level

Informationen zum Aktivieren von FILESTREAM finden Sie unter Aktivieren und Konfigurieren von FILESTREAM.For information about how to enable FILESTREAM, see Enable and Configure FILESTREAM.

Wenn Sie sp_configure aufrufen, um FILESTREAM auf Instanzebene zu aktivieren, müssen Sie die Option „filestream_access_level“auf „2“ festlegen.When you call sp_configure to enable FILESTREAM at the instance level, you have to set the filestream_access_level option to 2. Weitere Informationen finden Sie unter Filestream-Zugriffsebene (Serverkonfigurationsoption).For more information, see filestream access level Server Configuration Option.

Vorgehensweise: Zulassen von FILESTREAM durch die FirewallHow To: Allow FILESTREAM through the Firewall

Informationen zum Zulassen von FILESTREAM durch die Firewall finden Sie unter Configure a Firewall for FILESTREAM Access.For information about how to allow FILESTREAM through the firewall, see Configure a Firewall for FILESTREAM Access.

Bereitstellen einer FILESTREAM-Dateigruppe auf der DatenbankebeneProviding a FILESTREAM Filegroup at the Database Level

Bevor Sie FileTables in einer Datenbank erstellen können, muss die Datenbank eine FILESTREAM-Dateigruppe haben.Before you can create FileTables in a database, the database must have a FILESTREAM filegroup. Weitere Informationen zu dieser Voraussetzung finden Sie unter Erstellen einer FILESTREAM-aktivierten Datenbank.For more information about this prerequisite, see Create a FILESTREAM-Enabled Database.

Aktivieren des nicht transaktionalen Zugriffs auf DatenbankebeneEnabling Non-Transactional Access at the Database Level

Über FileTables können Windows-Anwendungen ein Windows-Dateihandle für FILESTREAM-Daten abrufen, ohne dass hierfür eine Transaktion erforderlich ist.FileTables let Windows applications obtain a Windows file handle to FILESTREAM data without requiring a transaction. Um diesen nicht transaktionalen Zugriff auf in SQL ServerSQL Servergespeicherte Dateien zuzulassen, müssen Sie die gewünschte Ebene des nicht transaktionalen Zugriffs auf Datenbankebene für jede Datenbank angeben, die FileTables enthält.To allow this non-transactional access to files stored in SQL ServerSQL Server, you have to specify the desired level of non-transactional access at the database level for each database that will contain FileTables.

Vorgehensweise: Überprüfen, ob nicht transaktionaler Zugriff auf Datenbanken aktiviert istHow To: Check Whether Non-Transactional Access Is Enabled on Databases

Fragen Sie die Katalogsicht sys.database_filestream_options (Transact-SQL) ab, und überprüfen Sie die Spalten non_transacted_access und non_transacted_access_desc.Query the catalog view sys.database_filestream_options (Transact-SQL) and check the non_transacted_access and non_transacted_access_desc columns.

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

Vorgehensweise: Aktivieren von nicht transaktionalem Zugriff auf DatenbankebeneHow To: Enable Non-Transactional Access at the Database Level

Die verfügbaren Stufen des nicht transaktionalen Zugriffs sind FULL, READ_ONLY und OFF.The available levels of non-transactional access are FULL, READ_ONLY, and OFF.

Angeben der Ebene des nicht transaktionalen Zugriffs mit Transact-SQLSpecify the level of non-transactional access by using 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.When you create a new database, call the CREATE DATABASE (SQL Server Transact-SQL) statement with the NON_TRANSACTED_ACCESS FILESTREAM option.

    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.When you alter an existing database, call the ALTER DATABASE (Transact-SQL) statement with the NON_TRANSACTED_ACCESS FILESTREAM option.

    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 StudioSpecify the level of non-transactional access by using 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 Datenbankeigenschaften angeben.You can specify the level of non-transactional access in the FILESTREAM Non-transacted Access field of the Options page of the Database Properties dialog box. Weitere Informationen zu diesem Dialogfeld finden Sie unter Datenbankeigenschaften (Seite Optionen).For more information about this dialog box, see Database Properties (Options Page).

Angeben eines Verzeichnisses für FileTables auf DatenbankebeneSpecifying a Directory for FileTables at the Database Level

Wenn Sie nicht transaktionalen Zugriff auf Dateien auf Datenbankebene aktivieren, können Sie gleichzeitig optional einen Verzeichnisnamen mit der DIRECTORY_NAME -Option angeben.When you enable non-transactional access to files at the database level, you can optionally provide a directory name at the same time by using the DIRECTORY_NAME option. Wenn Sie keinen Verzeichnisnamen angeben, wenn Sie nicht transaktionalen Zugriff aktivieren, müssen Sie diesen später angeben, bevor Sie FileTables in der Datenbank erstellen können.If you do not provide a directory name when you enable non-transactional access, then you have to provide it later before you can create FileTables in the database.

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.In the FileTable folder hierarchy, this database-level directory becomes the child of the share name specified for FILESTREAM at the instance level, and the parent of the FileTables created in the database. Weitere Informationen finden Sie unter Work with Directories and Paths in FileTables.For more information, see Work with Directories and Paths in FileTables.

Vorgehensweise: Angeben eines Verzeichnisses für Dateitabellen auf DatenbankebeneHow To: Specify a Directory for FileTables at the Database Level

Der angegebene Name muss in der Instanz für Verzeichnisse auf Datenbankebene eindeutig sein.The name that you specify must be unique across the instance for database-level directories.

Angeben eines Verzeichnisses für FileTables mit Transact-SQLSpecify a directory for FileTables by using 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.When you create a new database, call the CREATE DATABASE (SQL Server Transact-SQL) statement with the DIRECTORY_NAME FILESTREAM option.

    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.When you alter an existing database, call the ALTER DATABASE (Transact-SQL) statement with the DIRECTORY_NAME FILESTREAM option. Wenn Sie diese Optionen verwenden, um den Verzeichnisnamen zu ändern, muss die Datenbank exklusiv gesperrt sein und darf keine offenen Dateihandles aufweisen.When you use these options to change the directory name, the database must be exclusively locked, with no open file handles.

    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 FOR ATTACH-Option und der FILESTREAM-Option DIRECTORY_NAME auf.When you attach a database, call the CREATE DATABASE (SQL Server Transact-SQL) statement with the FOR ATTACH option and with the DIRECTORY_NAME FILESTREAM option.

    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.When you restore a database, call the RESTORE (Transact-SQL) statement with the DIRECTORY_NAME FILESTREAM option.

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

Angeben eines Verzeichnisses für FileTables mithilfe von SQL Server Management StudioSpecify a directory for FileTables by using SQL Server Management Studio
Sie können im Feld FILESTREAM Verzeichnisname der Seite Optionen des Dialogfelds Datenbankeigenschaften einen Verzeichnisnamen angeben.You can specify a directory name in the FILESTREAM Directory Name field of the Options page of the Database Properties dialog box. Weitere Informationen zu diesem Dialogfeld finden Sie unter Datenbankeigenschaften (Seite Optionen).For more information about this dialog box, see Database Properties (Options Page).

Vorgehensweise: Anzeigen vorhandener Verzeichnisnamen für die InstanzHow to: View Existing Directory Names for the Instance

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 filestream_database_directory_name-Spalte.To view the list of existing directory names for the instance, query the catalog view sys.database_filestream_options (Transact-SQL) and check the filestream_database_directory_name column.

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

Anforderungen und Einschränkungen für das Verzeichnis auf DatenbankebeneRequirements and Restrictions for the Database-Level Directory

  • Das Festlegen von DIRECTORY_NAME ist beim Aufrufen von CREATE DATABASE oder ALTER DATABASE optional.Setting the DIRECTORY_NAME is optional when you call CREATE DATABASE or ALTER DATABASE. Wenn Sie keinen Wert für DIRECTORY_NAME angeben, bleibt der Verzeichnisname NULL.If you do not specify a value for DIRECTORY_NAME, then the directory name remains null. Sie können jedoch erst FileTables in der Datenbank erstellen, wenn Sie einen Wert für DIRECTORY_NAME auf Datenbankebene angeben.However you cannot create FileTables in the database until you specify a value for DIRECTORY_NAME at the database level.

  • Der Verzeichnisname, den Sie angeben, muss den Anforderungen des Dateisystems im Hinblick auf einen gültigen Verzeichnisnamen entsprechen.The directory name that you provide must comply with the requirements of the file system for a valid directory name.

  • Wenn die Datenbank FileTables enthält, können Sie den DIRECTORY_NAME nicht auf einen NULL-Wert zurücksetzen.When the database contains FileTables, you cannot set the DIRECTORY_NAME back to a null value.

  • 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.When you attach or restore a database, the operation fails if the new database has a value for DIRECTORY_NAME that already exists in the target instance. Geben Sie einen eindeutigen Wert für DIRECTORY_NAME an, wenn Sie CREATE DATABASE FOR ATTACH oder RESTORE DATABASE aufrufen.Specify a unique value for DIRECTORY_NAME when you call CREATE DATABASE FOR ATTACH or RESTORE DATABASE.

  • Wenn Sie eine vorhandene Datenbank aktualisieren, ist der Wert von DIRECTORY_NAME NULL.When you upgrade an existing database, the value of DIRECTORY_NAME is 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.When you enable or disable non-transactional access at the database level, the operation does not check whether the directory name has been specified or whether it is unique.

  • Wenn Sie eine Datenbank löschen, die für FileTables aktiviert wurde, werden das Verzeichnis auf Datenbankebene und alle Verzeichnisstrukturen aller FileTables darunter entfernt.When you drop a database that was enabled for FileTables, the database-level directory and all the directory structures of all the FileTables under it are removed.