Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Beschreibt, wie eine neue FileTable erstellt bzw. eine vorhandene FileTable geändert oder gelöscht wird.
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. Weitere Informationen zum FileTable-Beispielschema finden Sie unter FileTable Schema.
Sie können mit Transact-SQL oder SQL Server Management Studio eine neue Dateitabelle 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 FileTable-Ordnerhierarchie wird dieses Verzeichnis auf Tabellenebene das untergeordnete Element des Datenbankverzeichnisses, das auf Datenbankebene angegeben wurde, und das übergeordnete Element der in der Tabelle gespeicherten Dateien oder Verzeichnisse.
Der Name der Sortierung, die für Dateinamen in der
NameSpalte der FileTable verwendet werden soll.Die Namen, die für die 3 automatisch erstellten PRIMARY KEY- und UNIQUE-Einschränkungen verwendet werden sollen.
Erstellen einer FileTable mit Transact-SQL
Erstellen Sie eine FileTable, indem Sie die CREATE TABLE-Anweisung mit der AS FILETABLE Option aufrufen. Da eine FileTable über ein festes Schema verfügt, müssen Sie keine Liste von Spalten angeben. Sie können die folgenden beiden Einstellungen für die neue FileTable angeben:
FILETABLE_DIRECTORY. Gibt das Verzeichnis an, das als Stammverzeichnis für alle in der FileTable gespeicherten Dateien und Verzeichnisse verwendet wird. Dieser Name sollte für alle FileTable-Verzeichnisnamen in der Datenbank eindeutig sein. Bei Eindeutigkeitsvergleichen wird die Groß-/Kleinschreibung nicht beachtet, unabhängig von den aktuellen Sortiereinstellungen.Dieser Wert hat einen Datentyp von nvarchar(255) und verwendet eine feste Sortierung von
Latin1_General_CI_AS_KS_WS.Der Verzeichnisname, den Sie angeben, muss den Anforderungen des Dateisystems im Hinblick auf einen gültigen Verzeichnisnamen entsprechen.
Dieser Name sollte für alle FileTable-Verzeichnisnamen in der Datenbank eindeutig sein. Bei Eindeutigkeitsvergleichen wird die Groß-/Kleinschreibung nicht beachtet, unabhängig von den aktuellen Sortiereinstellungen.
Wenn Sie beim Erstellen der FileTable keinen Verzeichnisnamen angeben, wird der Name der FileTable selbst als Verzeichnisname verwendet.
FILETABLE_COLLATE_FILENAME. Gibt den Namen der Sortierung an, die auf die Spalte in derNameFileTable angewendet werden soll.Zur Einhaltung der Windows-Dateinamensemantik darf bei der angegebenen Sortierung die Groß-/Kleinschreibung nicht beachtet werden.
Wenn Sie keinen Wert für
FILETABLE_COLLATE_FILENAMEangeben oderdatabase_default, erbt die Spalte die Sortierung der aktuellen Datenbank. Wenn die aktuelle Datenbanksortierung die Groß-/Kleinschreibung berücksichtigt, wird ein Fehler verursacht, und der VorgangCREATE TABLEschlägt fehl.
Sie können auch die Namen angeben, die für die 3 automatisch erstellten PRIMARY KEY- und UNIQUE-Einschränkungen verwendet werden sollen. Wenn Sie keine Namen angeben, generiert das System Namen, wie weiter unten in diesem Artikel beschrieben.
FILETABLE_PRIMARY_KEY_CONSTRAINT_NAMEFILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAMEFILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME
Examples
Im folgenden Beispiel wird eine neue Dateitabelle erstellt und spezifiziert benutzerdefinierte Werte sowohl für FILETABLE_DIRECTORY als auch für FILETABLE_COLLATE_FILENAME.
CREATE TABLE DocumentStore AS FILETABLE
WITH (
FILETABLE_DIRECTORY = 'DocumentTable',
FILETABLE_COLLATE_FILENAME = database_default
);
GO
Im folgenden Beispiel wird zudem 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 zu database_default, und der Primärschlüssel sowie die eindeutigen Einschränkungen erhalten vom System generierte Namen.
CREATE TABLE DocumentStore AS FILETABLE;
GO
Erstellen einer FileTable mit SQL Server Management Studio
Erweitern Sie im Objekt-Explorer unter der ausgewählten Datenbank die Objekte, klicken Sie dann mit der rechten Maustaste auf den Ordner Tabellen , und wählen Sie dann Neue FileTableaus.
Diese Option öffnet ein neues Skriptfenster, das eine Transact-SQL Skriptvorlage enthält, die Sie anpassen und ausführen können, um eine FileTable zu erstellen. Passen Sie das Skript einfach mit der Option Werte für Vorlagenparameter angeben im Menü Abfrage an.
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 zuvor auf der Datenbankebene angegebene übergeordnete Verzeichnis muss einen Wert ungleich NULL haben. Informationen zum Angeben des Verzeichnisses auf Datenbankebene finden Sie unter Aktivieren der Voraussetzungen für FileTable.
Da eine FileTable eine FILESTREAM-Spalte enthält, erfordert eine FileTable eine gültige FILESTREAM-Dateigruppe. Optional können Sie eine gültige FILESTREAM-Dateigruppe als Teil des
CREATE TABLEBefehls 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...AS FILETABLE-Anweisung erstellen. Sie können die Einschränkung jedoch später mithilfe einerALTER TABLEAnweisung hinzufügen.Sie können keine FileTable in der
tempdbDatenbank oder in einer der anderen Systemdatenbanken erstellen.Sie können keine FileTable 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.
Ä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 SET Option für FILETABLE_DIRECTORY.
Example
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 eine FileTable, und wählen Sie Eigenschaften aus, um das Dialogfeld Tabelleneigenschaften zu öffnen. Geben Sie auf der Seite FileTable einen neuen Wert für Name des FileTable-Verzeichnissesein.
Anforderungen und Einschränkungen zum Ändern einer FileTable
Sie können den Wert von
FILETABLE_COLLATE_FILENAMEnicht ä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-Anweisung ablegen.
Beim Löschen einer FileTable 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 DROP TABLE Befehl schlägt fehl, wenn im Dateinamespace der Dateitabelle geöffnete 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 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 systemdefinierten Indizes erstellt:
| Spalten | Indextyp | Clustered |
|---|---|---|
[path_locator] ASC |
Primärschlüssel | Nein |
[parent_path_locator] ASC, [name] ASC |
Einzigartig | Nein |
[stream_id] ASC |
Einzigartig | Nein |
Einschränkungen, die beim Erstellen einer neuen FileTable erstellt werden
Wenn Sie eine neue FileTable erstellen, werden auch die folgenden systemdefinierten Einschränkungen erstellt:
| Einschränkungen | Erzwingung |
|---|---|
Standardeinschränkungen in den folgenden Spalten:creation_timeis_archiveis_directoryis_hiddenis_offlineis_readonlyis_systemis_temporarylast_access_timelast_write_timepath_locatorstream_id |
Die systemdefinierten Standardeinschränkungen erzwingen Standardwerte für die angegebenen Spalten. |
| Check-Einschränkungen | Die systemdefinierten CHECK-Einschränkungen erzwingen die folgenden Anforderungen: Gültige Dateinamen Gültige Dateiattribute Übergeordnetes Objekt muss ein Verzeichnis sein. Namespacehierarchie ist während der Dateibearbeitung gesperrt. |
Benennungskonvention für die vom System definierten Einschränkungen
Die zuvor beschriebenen systemdefinierten Einschränkungen werden im Format <constraintType>_<tablename>[_<columnname>]_<uniquifier> benannt, in dem:
"<constraint_type> 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.