Notatka
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:SQL Server
Zwraca ścieżkę UNC dla pliku lub katalogu w FileTable.
Syntax
<column-name>.GetFileNamespacePath(is_full_path, @option)
Arguments
nazwa kolumny
Nazwa kolumny VARBINARY(MAX) file_stream kolumny w FileTable.
Wartość nazwy kolumny musi być poprawną nazwą kolumny. Nie może to być wyrażenie ani wartość przekonwertowana czy wyświetlona z kolumny innego typu danych.
is_full_path
Wyrażenie całkowite, które określa, czy zwracać względną czy bezwzględną ścieżkę.
is_full_path może mieć jedną z następujących wartości:
| Wartość | Description |
|---|---|
| 0 | Zwraca ścieżkę względną w katalogu na poziomie bazy danych. Jest to wartość domyślna |
| 1 | Zwraca pełną ścieżkę UNC, zaczynając od .\\computer_name |
@option
Wyrażenie całkowitoliczbowe, które definiuje, jak powinien być sformatowany komponent serwera ścieżki.
@option może mieć jedną z następujących wartości:
| Wartość | Description |
|---|---|
| 0 | Zwraca nazwę serwera przekonwertowaną na format NetBIOS, na przykład:\\SERVERNAME\MSSQLSERVER\MyDocumentDatabaseJest to wartość domyślna. |
| 1 | Zwraca nazwę serwera bez konwersji, na przykład:\\ServerName\MSSQLSERVER\MyDocumentDatabase |
| 2 | Zwraca pełną ścieżkę serwera, na przykład:\\ServerName.MyDomain.com\MSSQLSERVER\MyDocumentDatabase |
Zwracany typ
nvarchar(max)
Jeśli instancja SQL Server jest skupiona w klastrze failover, to nazwa maszyny zwracana jako część tej ścieżki jest wirtualną nazwą hosta dla tej instancji.
Gdy baza danych należy do grupy dostępności Always On, funkcja FileTableRootPath zwraca nazwę sieci wirtualnej (VNN) zamiast nazwy komputera.
Uwagi ogólne
Ścieżka, którą zwraca funkcja GetFileNamespacePath , to logiczny katalog lub ścieżka pliku w następującym formacie:
\\<machine>\<instance-level FILESTREAM share>\<database-level directory>\<FileTable directory>\...
Ta ścieżka logiczna nie odpowiada bezpośrednio fizycznej ścieżce NTFS. Jest tłumaczony na fizyczną ścieżkę przez sterownik filtra systemu plików FILESTREAM oraz agenta FILESTREAM. To rozdzielenie ścieżki logicznej od fizycznej pozwala SQL Server wewnętrznie reorganizować dane bez wpływu na ważność ścieżki.
Najlepsze praktyki
Aby utrzymać kod i aplikacje niezależne od bieżącego komputera i bazy danych, unikaj pisania kodu opartego na absolutnych ścieżkach plików. Zamiast tego uzyskaj pełną ścieżkę dla pliku w czasie działania, używając funkcji FileTableRootPath i GetFileNamespacePath razem, jak pokazano w poniższym przykładzie. Domyślnie funkcja GetFileNamespacePath zwraca względną ścieżkę pliku pod ścieżką główną bazy danych.
USE MyDocumentDatabase;
@root varchar(100)
SELECT @root = FileTableRootPath();
@fullPath = varchar(1000);
SELECT @fullPath = @root + file_stream.GetFileNamespacePath() FROM DocumentStore
WHERE Name = N'document.docx';
Remarks
Examples
Poniższe przykłady pokazują, jak wywołać funkcję GetFileNamespacePath , aby uzyskać ścieżkę UNC dla pliku lub katalogu w FileTable.
-- returns the relative path of the form "\MyFileTable\MyDocDirectory\document.docx"
SELECT file_stream.GetFileNamespacePath() AS FilePath FROM DocumentStore
WHERE Name = N'document.docx';
-- returns "\\MyServer\MSSQLSERVER\MyDocumentDatabase\MyFileTable\MyDocDirectory\document.docx"
SELECT file_stream.GetFileNamespacePath(1, Null) AS FilePath FROM DocumentStore
WHERE Name = N'document.docx';