Freigeben über


Erstellen, Ändern und Ablegen von FileTables

Beschreibt, wie Sie eine neue FileTable erstellen oder eine vorhandene FileTable ändern oder ablegen.

Erstellen einer FileTable

Eine FileTable ist eine spezielle Benutzertabelle mit einem vordefinierten und festen Schema. Dieses Schema speichert FILESTREAM-Daten, Datei- und Verzeichnisinformationen sowie Dateiattribute. Informationen zum FileTable-Schema finden Sie unter FileTable-Schema.

Sie können eine neue FileTable mithilfe von Transact-SQL oder SQL Server Management Studio erstellen. Da eine FileTable über ein festes Schema verfügt, müssen Sie keine Liste von Spalten angeben. Mit der einfachen Syntax zum Erstellen einer FileTable können Sie Folgendes angeben:

  • Ein Verzeichnisname. In der Ordnerhierarchie "FileTable" wird dieses Verzeichnis auf Tabellenebene zum untergeordneten Element des Datenbankverzeichnisses, das auf Datenbankebene angegeben ist, und zum übergeordneten Element der Dateien oder Verzeichnisse, die in der Tabelle gespeichert sind.

  • Der Name der Sortierung, die für Dateinamen in der Spalte "Name " der FileTable verwendet werden soll.

  • Die Namen, die für die 3 Primärschlüssel und eindeutigen Einschränkungen verwendet werden sollen, die automatisch erstellt werden.

So geht's: Erstellen Sie eine FileTable

Erstellen einer FileTable mithilfe von Transact-SQL
Erstellen Sie eine FileTable, indem Sie die CREATE TABLE (Transact-SQL) -Anweisung mit der OPTION AS FileTable aufrufen. Da eine FileTable über ein festes Schema verfügt, müssen Sie keine Liste von Spalten angeben. Sie können die folgenden Einstellungen für die neue FileTable angeben:

  1. FILETABLE_DIRECTORY. Gibt das Verzeichnis an, das als Stammverzeichnis für alle Dateien und Verzeichnisse dient, die in der FileTable gespeichert sind. Dieser Name sollte für alle FileTable-Verzeichnisnamen in der Datenbank eindeutig sein. Der Vergleich auf Eindeutigkeit ist unabhängig von der Groß- und Kleinschreibung, ungeachtet der aktuellen Sortierungseinstellungen.

    • Dieser Wert hat einen Datentyp von nvarchar(255) und verwendet eine feste Sortierung von Latin1_General_CI_AS_KS_WS.

    • Der von Ihnen bereitgestellte Verzeichnisname muss den Anforderungen des Dateisystems für einen gültigen Verzeichnisnamen entsprechen.

    • Dieser Name sollte für alle FileTable-Verzeichnisnamen in der Datenbank eindeutig sein. Der Vergleich auf Eindeutigkeit erfolgt ohne Berücksichtigung der Groß-/Kleinschreibung, unabhängig von den aktuellen Sortierungseinstellungen.

    • Wenn Sie beim Erstellen der FileTable keinen Verzeichnisnamen angeben, wird der Name der FileTable selbst als Verzeichnisname verwendet.

  2. FILETABLE_COLLATE_FILENAME. Gibt den Namen der Sortierung an, die auf die Spalte "Name " in der FileTable angewendet werden soll.

    1. Bei der angegebenen Sortierung muss die Groß-/Kleinschreibung ignoriert werden, damit die Benennungssemantik von Windows-Dateien eingehalten wird.

    2. Wenn Sie keinen Wert für FILETABLE_COLLATE_FILENAME angeben oder database_default angeben, erbt die Spalte die Sortierung der aktuellen Datenbank. Wenn bei der aktuellen Datenbanksortierung die Groß-/Kleinschreibung beachtet wird, wird ein Fehler ausgelöst, und der CREATE TABLE-Vorgang schlägt fehl.

  3. Sie können auch die Namen angeben, die für den 3 Primärschlüssel und eindeutige Einschränkungen verwendet werden sollen, die automatisch erstellt werden. Wenn Sie keine Namen angeben, generiert das System Namen, wie weiter unten in diesem Thema beschrieben.

    • FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME

    • FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME

    • FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME

Beispiele

Im folgenden Beispiel wird eine neue FileTable erstellt und benutzerdefinierte Werte für FILETABLE_DIRECTORY und FILETABLE_COLLATE_FILENAME angegeben.

CREATE TABLE DocumentStore AS FileTable  
    WITH (   
          FileTable_Directory = 'DocumentTable',  
          FileTable_Collate_Filename = database_default  
         );  
GO  

Im folgenden Beispiel wird auch eine neue FileTable erstellt. Da benutzerdefinierte Werte nicht angegeben werden, wird der Wert von FILETABLE_DIRECTORY zum Namen der FileTable, der Wert von FILETABLE_COLLATE_FILENAME wird database_default, und der Primärschlüssel und eindeutige Contraints empfangen vom System generierte Namen.

CREATE TABLE DocumentStore AS FileTable;  
GO  

Erstellen einer FileTable mithilfe von SQL Server Management Studio
Erweitern Sie im Objekt-Explorer die Objekte unter der ausgewählten Datenbank, klicken Sie dann mit der rechten Maustaste auf den Ordner "Tabellen ", und wählen Sie dann "Neue Dateitabelle" aus.

Mit dieser Option wird ein neues Skriptfenster geöffnet, das eine Transact-SQL Skriptvorlage enthält, die Sie anpassen und ausführen können, um eine FileTable zu erstellen. Verwenden Sie die Option "Werte für Vorlagenparameter angeben " im Menü "Abfrage ", um das Skript ganz einfach anzupassen.

Anforderungen und Einschränkungen für das Erstellen einer FileTable

  • Sie können eine vorhandene Tabelle nicht ändern, um sie in eine FileTable zu konvertieren.

  • Das übergeordnete Verzeichnis, das zuvor auf Datenbankebene angegeben wurde, muss einen Wert ungleich NULL aufweisen. Informationen zum Angeben des Verzeichnisses auf Datenbankebene finden Sie unter Enable the Prerequisites for FileTable.

  • Eine FileTable erfordert eine gültige FILESTREAM-Dateigruppe, da eine FileTable eine FILESTREAM-Spalte enthält. Optional können Sie eine gültige FILESTREAM-Dateigruppe als Teil des BEFEHLS CREATE TABLE zum Erstellen einer FileTable angeben. Wenn Sie keine Dateigruppe angeben, verwendet die FileTable die standardmäßige FILESTREAM-Dateigruppe für die Datenbank. Wenn die Datenbank nicht über eine FILESTREAM-Dateigruppe verfügt, wird ein Fehler ausgelöst.

  • Sie können keine Tabelleneinschränkung als Teil einer CREATE TABLE erstellen... AS FILETABLE-Anweisung . Sie können die Einschränkung jedoch später mithilfe einer ALTER TABLE-Anweisung hinzufügen.

  • Sie können keine FileTable in der tempdb-Datenbank oder in einer der anderen Systemdatenbanken erstellen.

  • Sie können eine FileTable nicht als temporäre Tabelle erstellen.

Ändern einer FileTable

Da eine FileTable über ein vordefiniertes und festes Schema verfügt, können Sie dessen Spalten nicht hinzufügen oder ändern. Sie können einer FileTable jedoch benutzerdefinierte Indizes, Trigger, Einschränkungen und andere Optionen hinzufügen.

Informationen zur Verwendung der ALTER TABLE-Anweisung zum Aktivieren oder Deaktivieren des FileTable-Namespace, einschließlich der vom System definierten Einschränkungen, finden Sie unter Verwalten von FileTables.

Vorgehensweise: Ändern des Verzeichnisses für eine FileTable

Ändern des Verzeichnisses für eine FileTable mithilfe von Transact-SQL
Rufen Sie die ALTER TABLE-Anweisung auf, und geben Sie einen gültigen neuen Wert für die option FILETABLE_DIRECTORY SET an.

Beispiel

ALTER TABLE filetable_name  
    SET ( FILETABLE_DIRECTORY = N'directory_name' );  
GO  

Ändern des Verzeichnisses für eine FileTable mithilfe von SQL Server Management Studio
Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Dateitabelle, und wählen Sie "Eigenschaften " aus, um das Dialogfeld "Tabelleneigenschaften " zu öffnen. Geben Sie auf der Seite "FileTable " einen neuen Wert für den Namen des FileTable-Verzeichnisses ein.

Anforderungen und Einschränkungen zum Ändern einer FileTable

  • Sie können den Wert von FILETABLE_COLLATE_FILENAME nicht ändern.

  • Sie können die vom System definierten Spalten einer FileTable nicht ändern, ablegen oder deaktivieren.

  • Sie können einer FileTable keine neuen Benutzerspalten, berechneten Spalten oder gespeicherten berechneten Spalten hinzufügen.

Löschen einer FileTable

Sie können eine FileTable mithilfe der normalen Syntax für die DROP TABLE (Transact-SQL) -Anweisung ablegen.

Wenn Sie eine FileTable ablegen, werden auch die folgenden Objekte gelöscht:

  • Alle Spalten der FileTable und alle der Tabelle zugeordneten Objekte, z. B. Indizes, Einschränkungen und Trigger, werden ebenfalls gelöscht.

  • Das FileTable-Verzeichnis und die Darin enthaltenen Unterverzeichnisse verschwinden aus der FILESTREAM-Datei und der Verzeichnishierarchie der Datenbank.

Der Befehl DROP TABLE schlägt fehl, wenn im Dateinamespace der FileTable offene Dateihandles vorhanden sind. Informationen zum Schließen von geöffneten Handles finden Sie unter Verwalten von FileTables.

Andere Datenbankobjekte werden beim Erstellen einer FileTable erstellt.

Wenn Sie eine neue FileTable erstellen, werden auch einige systemdefinierte Indizes und Einschränkungen erstellt. Sie können diese Objekte nicht ändern oder ablegen; sie verschwinden nur, wenn die FileTable selbst gelöscht wird. Um die Liste dieser Objekte anzuzeigen, fragen Sie die Katalogansicht sys.filetable_system_defined_objects (Transact-SQL) ab.

--View all objects for all filetables, unsorted  
SELECT * FROM sys.filetable_system_defined_objects;  
GO  
  
--View sorted list with friendly names  
SELECT OBJECT_NAME(parent_object_id) AS 'FileTable', OBJECT_NAME(object_id) AS 'System-defined Object'  
    FROM sys.filetable_system_defined_objects  
    ORDER BY FileTable, 'System-defined Object';  
GO  

Indizes, die beim Erstellen einer neuen FileTable erstellt werden
Wenn Sie eine neue FileTable erstellen, werden auch die folgenden vom System definierten Indizes erstellt:

Spalten Indextyp
[path_locator] ASC Primärschlüssel, nicht gruppiert
[parent_path_locator] ASC

[Name] ASC
Eindeutig, nicht gruppiert
[stream_id] ASC Eindeutig, nicht gruppiert

Einschränkungen, die beim Erstellen einer neuen FileTable erstellt werden
Wenn Sie eine neue FileTable erstellen, werden auch die folgenden vom System definierten Einschränkungen erstellt:

Zwänge Durchsetzen
Standardeinschränkungen für die folgenden Spalten:

creation_time
is_archive
is_directory
is_hidden
is_offline
is_readonly
is_system
is_temporary
letzte_Zugriffszeit
last_write_time
path_locator
stream_id
Die vom System definierten Standardeinschränkungen erzwingen Standardwerte für die angegebenen Spalten.
Einschränkungen überprüfen Die vom System definierten Prüfeinschränkungen erzwingen die folgenden Anforderungen:

Gültige Dateinamen.

Gültige Dateiattribute.

Übergeordnetes Objekt muss ein Verzeichnis sein.

Die Namespacehierarchie ist während der Dateibearbeitung gesperrt.

Benennungskonvention für die vom System definierten Einschränkungen
Die oben beschriebenen systemdefinierten Einschränkungen werden im Format <constraintType>_<tablename>[_<columnname>]_<uniquifier> genannt, wobei:

  • < >Einschränkungsart ist CK (Check Constraint), DF (Standardeinschränkung), FK (Fremdschlüssel), PK (Primärschlüssel) oder UQ (eindeutige Einschränkung).

  • <Uniquifier> ist eine vom System generierte Zeichenfolge, um den Namen eindeutig zu machen. Diese Zeichenfolge kann den FileTable-Namen und einen eindeutigen Bezeichner enthalten.

Siehe auch

Verwalten von FileTables