Udostępnij za pomocą


Tworzenie, zmienianie lub usuwanie tabeli FileTable

Dotyczy:SQL Server

Opisuje sposób tworzenia nowej tabeli FileTable lub zmieniania lub porzucania istniejącej tabeli FileTable.

Tworzenie tabeli FileTable

Tabela FileTable to wyspecjalizowana tabela użytkownika, która ma wstępnie zdefiniowany i stały schemat. Ten schemat przechowuje dane FILESTREAM, informacje o plikach i katalogu oraz atrybuty plików. Aby uzyskać informacje o schemacie FileTable, zobacz FileTable Schema (Schemat tabeli plików).

Nową tabelę FileTable można utworzyć przy użyciu programu Transact-SQL lub PROGRAMU SQL Server Management Studio. Ponieważ tabela FileTable ma stały schemat, nie trzeba określać listy kolumn. Prosta składnia tworzenia tabeli FileTable umożliwia określenie:

  • Nazwa katalogu. W hierarchii folderów FileTable ten katalog na poziomie tabeli staje się elementem podrzędnym katalogu bazy danych określonego na poziomie bazy danych, a elementem nadrzędnym plików lub katalogów przechowywanych w tabeli.

  • Nazwa sortowania, która ma być używana dla nazw plików w Name kolumnie FileTable.

  • Nazwy, które będą używane dla trzech kluczy podstawowych i unikatowych ograniczeń tworzonych automatycznie.

Tworzenie tabeli FileTable za pomocą Transact-SQL

Utwórz tabelę FileTable, wywołując instrukcję CREATE TABLE z opcją AS FILETABLE . Ponieważ tabela FileTable ma stały schemat, nie trzeba określać listy kolumn. Dla nowej tabeli FileTable można określić następujące ustawienia:

  1. FILETABLE_DIRECTORY. Określa katalog, który służy jako katalog główny dla wszystkich plików i katalogów przechowywanych w tabeli FileTable. Ta nazwa powinna być unikatowa wśród wszystkich nazw katalogów FileTable w bazie danych. Porównanie unikatowości jest niewrażliwe na wielkość liter, niezależnie od bieżących ustawień sortowania.

    • Ta wartość ma typ danych nvarchar(255) i używa stałego porównania Latin1_General_CI_AS_KS_WS.

    • Podana nazwa katalogu musi być zgodna z wymaganiami systemu plików dla prawidłowej nazwy katalogu.

    • Ta nazwa powinna być unikatowa wśród wszystkich nazw katalogów FileTable w bazie danych. Porównanie unikatowości jest niewrażliwe na wielkość liter, niezależnie od bieżących ustawień sortowania.

    • Jeśli podczas tworzenia tabeli FileTable nie podasz nazwy katalogu, nazwa samej tabeli FileTable będzie używana jako nazwa katalogu.

  2. FILETABLE_COLLATE_FILENAME. Określa nazwę sortowania dla Name kolumny w tabeli FileTable.

    1. Określone sortowanie musi być niewrażliwe na wielkość liter, aby było zgodne z semantyką nazewnictwa plików systemu Windows.

    2. Jeśli nie podasz wartości FILETABLE_COLLATE_FILENAME, lub podasz wartość database_default, kolumna dziedziczy sortowanie bieżącej bazy danych. Jeśli w bieżącym sortowaniu bazy danych jest uwzględniana wielkość liter, zostanie zgłoszony błąd i operacja zakończy się niepowodzeniem CREATE TABLE .

  3. Można również określić nazwy, które mają być używane dla 3 klucza podstawowego i unikatowych ograniczeń, które są tworzone automatycznie. Jeśli nie podasz nazw, system generuje nazwy zgodnie z opisem w dalszej części tego artykułu.

    • FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME
    • FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME
    • FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME

Przykłady

W poniższym przykładzie zostanie utworzona nowa tabela FileTable i określono wartości zdefiniowane przez użytkownika dla parametrów FILETABLE_DIRECTORY i FILETABLE_COLLATE_FILENAME.

CREATE TABLE DocumentStore AS FILETABLE
WITH (
    FILETABLE_DIRECTORY = 'DocumentTable',
    FILETABLE_COLLATE_FILENAME = database_default
);
GO

Poniższy przykład tworzy również nową tabelę FileTable. Ponieważ wartości zdefiniowane przez użytkownika nie są określone, wartość FILETABLE_DIRECTORY staje się nazwą tabeli FileTable, wartość FILETABLE_COLLATE_FILENAME staje się database_default, a klucz podstawowy i unikatowe ograniczenia otrzymują nazwy generowane przez system.

CREATE TABLE DocumentStore AS FILETABLE;
GO

Tworzenie tabeli FileTable za pomocą programu SQL Server Management Studio

W Eksploratorze obiektów rozwiń obiekty w wybranej bazie danych, a następnie kliknij prawym przyciskiem myszy folder Tables , a następnie wybierz pozycję Nowa tabela plików.

Ta opcja otwiera nowe okno skryptu zawierające szablon skryptu Transact-SQL, który można dostosować i uruchomić w celu utworzenia tabeli FileTable. Użyj opcji Określ wartości parametrów szablonu w menu Zapytanie , aby łatwo dostosować skrypt.

Wymagania i ograniczenia dotyczące tworzenia tabeli FileTable

  • Nie można zmienić istniejącej tabeli, aby przekonwertować ją na tabelę FileTable.

  • Katalog nadrzędny określony wcześniej na poziomie bazy danych musi mieć wartość inną niż null. Aby uzyskać informacje na temat określania katalogu na poziomie bazy danych, zobacz Włączanie wymagań wstępnych dla tabeli FileTable.

  • Tabela FileTable wymaga prawidłowej grupy plików FILESTREAM, ponieważ tabela FileTable zawiera kolumnę FILESTREAM. Opcjonalnie możesz określić prawidłową grupę plików FILESTREAM jako część CREATE TABLE polecenia do utworzenia tabeli FileTable. Jeśli nie określisz grupy plików, tabela FileTable używa domyślnej grupy plików FILESTREAM dla bazy danych. Jeśli baza danych nie ma grupy plików FILESTREAM, zostanie zgłoszony błąd.

  • Nie można utworzyć ograniczenia tabeli w ramach instrukcji CREATE TABLE...AS FILETABLE . Można jednak dodać ograniczenie później przy użyciu instrukcji ALTER TABLE .

  • Nie można utworzyć tabeli FileTable w tempdb bazie danych ani w żadnej z innych systemowych baz danych.

  • Nie można utworzyć tabeli FileTable jako tabeli tymczasowej.

Zmodyfikuj FileTable

Ponieważ tabela FileTable ma wstępnie zdefiniowany i stały schemat, nie można dodawać ani zmieniać jego kolumn. Można jednak dodawać niestandardowe indeksy, wyzwalacze, ograniczenia i inne opcje do tabeli FileTable.

Aby uzyskać informacje na temat używania instrukcji ALTER TABLE do włączania lub wyłączania przestrzeni nazw FileTable, w tym ograniczeń zdefiniowanych przez system, zobacz Manage FileTables.

Zmienianie katalogu dla tabeli FileTable przy użyciu Transact-SQL

Wywołaj instrukcję ALTER TABLE i podaj prawidłową nową wartość dla opcji SET dla FILETABLE_DIRECTORY.

Example

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

Zmienianie katalogu dla tabeli FileTable przy użyciu programu SQL Server Management Studio

W Eksploratorze obiektów kliknij prawym przyciskiem myszy tabelę FileTable i wybierz polecenie Właściwości , aby otworzyć okno dialogowe Właściwości tabeli . Na stronie FileTable wprowadź nową wartość w polu Nazwa katalogu FileTable.

Wymagania i ograniczenia dotyczące zmieniania tabeli FileTable

  • Nie można zmienić wartości FILETABLE_COLLATE_FILENAME.

  • Nie można zmieniać, usuwać ani wyłączać kolumn zdefiniowanych przez system w tabeli FileTable.

  • Do tabeli FileTable nie można dodawać nowych kolumn użytkowników, obliczonych kolumn ani utrwałych kolumn obliczeniowych.

Usuwanie tabeli FileTable

Tabelę FileTable można usunąć przy użyciu zwykłej składni instrukcji DROP TABLE .

Po usunięciu tabeli FileTable następujące obiekty również zostaną porzucone:

  • Wszystkie kolumny tabeli FileTable i wszystkie obiekty skojarzone z tabelą, takie jak indeksy, ograniczenia i wyzwalacze, również są porzucane.

  • Katalog FileTable i podkatalogi zawarte w nim znikają z hierarchii plików FILESTREAM i katalogów bazy danych.

Polecenie DROP TABLE kończy się niepowodzeniem, jeśli w przestrzeni nazw plików w pliku FileTable są otwarte dojścia do plików. Aby uzyskać informacje na temat zamykania otwartych uchwytów, zobacz Zarządzanie FileTables.

Inne obiekty bazy danych są tworzone podczas tworzenia tabeli FileTable

Podczas tworzenia nowej tabeli FileTable tworzone są również niektóre indeksy i ograniczenia zdefiniowane przez system. Nie można zmienić ani usunąć tych obiektów; znikają tylko wtedy, gdy sama tabela FileTable zostanie porzucona. Aby wyświetlić listę tych obiektów, wykonaj zapytanie dotyczące widoku wykazu sys.filetable_system_defined_objects.

--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

Indeksy tworzone podczas tworzenia nowej tabeli plików

Podczas tworzenia nowej tabeli FileTable tworzone są również następujące indeksy zdefiniowane przez system:

Kolumny Typ indeksu Clustered
[path_locator] ASC Klucz podstawowy Nie.
[parent_path_locator] ASC, [name] ASC Unikatowe Nie.
[stream_id] ASC Unikatowe Nie.

Ograniczenia tworzone podczas tworzenia nowej tabeli Plików

Podczas tworzenia nowej tabeli FileTable tworzone są również następujące ograniczenia zdefiniowane przez system:

Constraints Wymusza
Domyślne ograniczenia dotyczące następujących kolumn:

creation_time
is_archive
is_directory
is_hidden
is_offline
is_readonly
is_system
is_temporary
last_access_time
last_write_time
path_locator
stream_id
Zdefiniowane przez system ograniczenia domyślne wymuszają wartości domyślne dla określonych kolumn.
Sprawdzanie ograniczeń Ograniczenia sprawdzania zdefiniowane przez system wymuszają następujące wymagania:

Prawidłowe nazwy plików.
Prawidłowe atrybuty pliku.
Obiekt nadrzędny musi być katalogiem.
Hierarchia przestrzeni nazw jest zablokowana podczas manipulowania plikami.

Konwencja nazewnictwa ograniczeń zdefiniowanych przez system

Opisane wcześniej ograniczenia zdefiniowane przez system mają nazwę w formacie <constraintType>_<tablename>[_<columnname>]_<uniquifier> , w którym:

  • "<constraint_type> to CK (ograniczenie kontrolne), DF (ograniczenie domyślne), FK (klucz obcy), PK (klucz podstawowy) lub UQ (ograniczenie unikatowe).

  • <uniquifier> jest ciągiem generowanym przez system, aby nazwa została unikatowa. Ten ciąg może zawierać nazwę FileTable i unikatowy identyfikator.