Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Opisuje strukturę katalogów, w której pliki są przechowywane w tabelach FileTables.
Instrukcje: praca z katalogami i ścieżkami w tabelach plików
Do pracy z katalogami FileTable w języku Transact-SQL można użyć następujących trzech funkcji:
Aby uzyskać ten wynik | Użyj tej funkcji |
---|---|
Pobierz ścieżkę UNC na poziomie głównym dla określonej tabeli plików lub dla bieżącej bazy danych. | FileTableRootPath (Transact-SQL) |
Pobierz bezwzględną lub względną ścieżkę UNC dla pliku lub katalogu w tabeli FileTable. | GetFileNamespacePath (Transact-SQL) |
Pobierz wartość identyfikatora lokalizatora ścieżki dla określonego pliku lub katalogu w tabeli FileTable, podając ścieżkę. | GetPathLocator (Transact-SQL) |
Używanie ścieżek względnych dla przenośnego kodu
Aby zachować kod i aplikacje niezależne od bieżącego komputera i bazy danych, unikaj pisania kodu, który opiera się na bezwzględnych ścieżkach plików. Zamiast tego uzyskaj pełną ścieżkę dla pliku w czasie wykonywania przy użyciu funkcji FileTableRootPath (Transact-SQL) i GetFileNamespacePath (Transact-SQL)), jak pokazano w poniższym przykładzie. Domyślnie funkcja GetFileNamespacePath
zwraca ścieżkę względną pliku w ścieżce głównej bazy danych.
USE database_name;
DECLARE @root NVARCHAR(100);
DECLARE @fullpath NVARCHAR(1000);
SELECT @root = FileTableRootPath();
SELECT @fullpath = @root + file_stream.GetFileNamespacePath()
FROM filetable_name
WHERE name = N'document_name';
PRINT @fullpath;
GO
Ograniczenia
Poziom zagnieżdżania
Ważny
W katalogu FileTable nie można przechowywać więcej niż 15 poziomów podkatalogów. W przypadku przechowywania 15 poziomów podkatalogów najniższy poziom nie może zawierać plików, ponieważ te pliki będą stanowić dodatkowy poziom.
Długość pełnej nazwy ścieżki
Ważny
System plików NTFS obsługuje nazwy ścieżek, które mogą być znacznie dłuższe niż ograniczenie 260 znaków w powłoce Windows oraz większości interfejsów API systemu Windows. W związku z tym można tworzyć pliki w hierarchii plików w tabeli FileTable przy użyciu Transact-SQL, których nie można wyświetlić ani otworzyć za pomocą Eksploratora Windows lub wielu innych aplikacji systemu Windows, ponieważ pełna nazwa ścieżki przekracza 260 znaków. Możesz jednak nadal uzyskiwać dostęp do tych plików przy użyciu języka Transact-SQL.
Pełna ścieżka do elementu przechowywanego w tabeli FileTable
Pełna ścieżka do pliku lub katalogu przechowywanego w tabeli FileTable rozpoczyna się od następujących elementów:
Udział włączony dla dostępu we/wy pliku FILESTREAM na poziomie wystąpienia programu SQL Server.
DIRECTORY_NAME
zostało określone na poziomie bazy danych.FILETABLE_DIRECTORY
jest określone na poziomie FileTable.
Wynikowa hierarchia wygląda następująco:
\\<machine>\<instance-level FILESTREAM share>\<database-level directory>\<FileTable directory>\
Ta hierarchia katalogów stanowi katalog główny przestrzeni nazw pliku fileTable. W tej hierarchii katalogów dane FILESTREAM dla tabeli FileTable są przechowywane jako pliki i jako podkatalogi, które mogą również zawierać pliki i podkatalogi.
Należy pamiętać, że hierarchia katalogów utworzona w ramach przydziału FILESTREAM na poziomie instancji jest hierarchią katalogów wirtualnych. Ta hierarchia jest przechowywana w bazie danych programu SQL Server i nie jest reprezentowana fizycznie w systemie plików NTFS. Wszystkie operacje, które uzyskują dostęp do plików i katalogów w udziale FILESTREAM oraz w tabelach FileTables, które zawiera, są przechwytywane i obsługiwane przez składnik programu SQL Server osadzony w systemie plików.
Semantyka katalogów głównych na poziomach wystąpienia, bazy danych i tabeli plików
Ta hierarchia katalogów przestrzega następującą semantykę:
Udział FILESTREAM na poziomie wystąpienia jest konfigurowany przez administratora i przechowywany jako właściwość serwera. Nazwę tego udostępnienia można zmienić przy użyciu Microsoft SQL Server Configuration Manager. Operacja zmiany nazwy nie zostanie uruchomiona do momentu ponownego uruchomienia serwera.
DIRECTORY_NAME
na poziomie bazy danych domyślnie ma wartość null podczas tworzenia nowej bazy danych. Administrator może ustawić lub zmienić tę nazwę przy użyciu instrukcjiALTER DATABASE
. Nazwa musi być unikatowa (przy porównaniu bez uwzględniania wielkości liter) w tym wystąpieniu.Zazwyczaj podczas tworzenia tabeli FileTable należy podać nazwę
FILETABLE_DIRECTORY
jako część instrukcjiCREATE TABLE
. Tę nazwę można zmienić za pomocą poleceniaALTER TABLE
.Nie można zmienić nazwy tych katalogów głównych za pomocą operacji we/wy plików.
Nie można otworzyć tych katalogów głównych przy użyciu wyłącznych uchwytów plikowych.
Kolumna is_directory w schemacie FileTable
W poniższej tabeli opisano interakcję między kolumną is_directory
a kolumną file_stream
zawierającą dane FILESTREAM w tabeli FileTable.
is_directory wartość | file_stream wartość | Zachowanie |
---|---|---|
FALSE |
NULL |
Jest to nieprawidłowa kombinacja przechwycona przez ograniczenie zdefiniowane przez system. |
FALSE |
<value> |
Element reprezentuje plik. |
TRUE |
NULL |
Element reprezentuje katalog. |
TRUE |
<value> |
Jest to nieprawidłowa kombinacja przechwycona przez ograniczenie zdefiniowane przez system. |
Używanie nazw sieci wirtualnych (VNNs) z grupami dostępności Always On
Gdy baza danych zawierająca dane FILESTREAM lub FileTable należy do grupy dostępności:
Funkcje FILESTREAM i FileTable akceptują lub zwracają nazwy sieci wirtualnych (VNN) zamiast nazw komputerów. Aby uzyskać więcej informacji na temat tych funkcji, zobacz FILESTREAM i FileTable Functions (Transact-SQL).
Cały dostęp do danych FILESTREAM lub FileTable za pośrednictwem interfejsów API systemu plików powinien używać VNN zamiast nazw komputerów. Aby uzyskać więcej informacji, zobacz FILESTREAM i FileTable with Always On Availability Groups (SQL Server).