Aktivieren der erforderlichen Komponenten für FileTable

Beschreibt, wie die erforderlichen Komponenten zum Erstellen und Verwenden von FileTables aktiviert werden.

In diesem Thema

Ich möchte…

  • Aktivieren der erforderlichen Komponenten für FileTable

  • Aktivieren von FILESTREAM auf Instanzebene

    • Vorgehensweise: Aktivieren von FILESTREAM auf Instanzebene

    • Vorgehensweise: Zulassen von FILESTREAM durch die Firewall

  • Bereitstellen einer FILESTREAM-Dateigruppe

  • Aktivieren von nicht transaktionalem Zugriff auf Datenbankebene

    • Vorgehensweise: Überprüfen, ob nicht transaktionaler Zugriff auf Datenbanken aktiviert ist

    • Vorgehensweise: Aktivieren von nicht transaktionalem Zugriff auf Datenbankebene

  • Angeben eines Verzeichnisses für FileTables auf Datenbankebene

    • Vorgehensweise: Angeben eines Verzeichnisses für FileTables auf Datenbankebene

    • Vorgehensweise: Anzeigen vorhandener Verzeichnisnamen für die Instanz

    • Anforderungen und Einschränkungen für das Verzeichnis auf Datenbankebene

Aktivieren der erforderlichen Komponenten für FileTable

Aktivieren Sie zum Aktivieren der erforderlichen Komponenten zum Erstellen und Verwenden von FileTables die folgenden Elemente:

  • Auf Instanzebene:

    • Aktivieren von FILESTREAM auf Instanzebene
  • Auf Datenbankebene:

    • Bereitstellen einer FILESTREAM-Dateigruppe auf der Datenbankebene

    • Aktivieren von nicht transaktionalem Zugriff auf Datenbankebene

    • Angeben eines Verzeichnisses für FileTables auf Datenbankebene

[NACH OBEN]

Aktivieren von FILESTREAM auf Instanzebene

FileTables erweitern die Funktionen der FILESTREAM-Funktion von SQL Server. Daher muss FILESTREAM für Datei-E/A-Zugriff auf der Windows-Ebene und in der Instanz von SQL Server aktiviert werden, bevor Sie FileTables erstellen und verwenden können.

Vorgehensweise: 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 filestream_access_level-Option auf 2 festlegen. Weitere Informationen finden Sie unter Filestream-Zugriffsebene (Serverkonfigurationsoption).

[Nach oben]

Vorgehensweise: Zulassen von FILESTREAM durch die Firewall

Informationen zum Zulassen von FILESTREAM durch die Firewall finden Sie unter Konfigurieren einer Firewall für FILESTREAM-Zugriff.

[Nach oben]

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.

[Nach oben]

Aktivieren des nicht transaktionalen Zugriffs 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 FileTables enthält.

Vorgehensweise: Überprüfen, ob nicht transaktionaler Zugriff auf Datenbanken aktiviert ist

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.

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

[NACH OBEN]

Vorgehensweise: 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 (Transact-SQL)-Anweisung mit der NON_TRANSACTED_ACCESS FILESTREAM-Option 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 NON_TRANSACTED_ACCESS FILESTREAM-Option 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 Datenbankeigenschaften angeben. Weitere Informationen zu diesem Dialogfeld finden Sie unter Datenbankeigenschaften (Seite Optionen).

[NACH OBEN]

Angeben eines Verzeichnisses für FileTables auf Datenbankebene

Wenn Sie nicht transaktionalen Zugriff auf Dateien auf Datenbankebene aktivieren, können Sie gleichzeitig optional einen Verzeichnisnamen mit der DIRECTORY_NAME-Option angeben. 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.

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 Arbeiten mit Verzeichnissen und Pfaden in FileTables.

Vorgehensweise: Angeben eines Verzeichnisses für FileTables auf Datenbankebene

Der angegebene Name muss in der Instanz für Verzeichnisse auf Datenbankebene eindeutig sein.

  • Angeben eines Verzeichnisses für FileTables mit Transact-SQL

    • Wenn Sie eine neue Datenbank erstellen, rufen Sie die CREATE DATABASE (Transact-SQL)-Anweisung mit der DIRECTORY_NAME FILESTREAM-Option 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 DIRECTORY_NAME FILESTREAM-Option 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 (Transact-SQL)-Anweisung mit der Option FOR ATTACH und der DIRECTORY_NAME FILESTREAM-Option 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 DIRECTORY_NAME FILESTREAM-Option auf.

      RESTORE DATABASE database_name
          WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
      GO
      
  • Angeben eines Verzeichnisses für FileTables 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).

[Nach oben]

Vorgehensweise: 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 filestream_database_directory_name-Spalte.

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

[Nach oben]

Anforderungen und Einschränkungen für das Verzeichnis auf Datenbankebene

  • Das Festlegen von DIRECTORY_NAME ist beim Aufrufen von CREATE DATABASE oder ALTER DATABASE optional. Wenn Sie keinen Wert für DIRECTORY_NAME angeben, bleibt der Verzeichnisname NULL. Sie können jedoch erst FileTables in der Datenbank erstellen, wenn Sie einen Wert für DIRECTORY_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 FileTables enthält, können Sie den 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ür DIRECTORY_NAME an, wenn Sie CREATE DATABASE FOR ATTACH oder RESTORE DATABASE aufrufen.

  • Wenn Sie eine vorhandene Datenbank auf SQL Server 2012 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.

[NACH OBEN]