GetFileNamespacePath (Transact-SQL)

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

Jest 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';