Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
Namekolumnie 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:
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.
FILETABLE_COLLATE_FILENAME. Określa nazwę sortowania dlaNamekolumny w tabeli FileTable.Określone sortowanie musi być niewrażliwe na wielkość liter, aby było zgodne z semantyką nazewnictwa plików systemu Windows.
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ę niepowodzeniemCREATE TABLE.
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_NAMEFILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAMEFILETABLE_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 TABLEpolecenia 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 instrukcjiALTER TABLE.Nie można utworzyć tabeli FileTable w
tempdbbazie 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_timeis_archiveis_directoryis_hiddenis_offlineis_readonlyis_systemis_temporarylast_access_timelast_write_timepath_locatorstream_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.