Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Returnerar UNC-sökvägen för en fil eller katalog i en FileTable.
Syntax
<column-name>.GetFileNamespacePath(is_full_path, @option)
Arguments
kolumnnamn
Kolumnnamnet på VARBINARY(MAX) file_stream kolumn i en FileTable.
Kolumnnamnsvärdet måste vara ett giltigt kolumnnamn. Det kan inte vara ett uttryck, eller ett värde som konverterats eller kastats från en kolumn av en annan datatyp.
is_full_path
Ett heltalsuttryck som specificerar om en relativ eller en absolut väg ska returneras.
is_full_path kan ha ett av följande värden:
| Value | Description |
|---|---|
| 0 | Returnerar den relativa sökvägen inom databasnivåkatalogen. Det här är standardvärdet |
| 1 | Returnerar hela UNC-vägen, med start i \\computer_name. |
@option
Ett heltalsuttryck som definierar hur serverkomponenten i vägen ska formateras.
@option kan ha ett av följande värden:
| Value | Description |
|---|---|
| 0 | Returnerar servernamnet konverterat till NetBIOS-format, till exempel:\\SERVERNAME\MSSQLSERVER\MyDocumentDatabaseDetta är standardvärdet. |
| 1 | Returnerar servernamnet utan konvertering, till exempel:\\ServerName\MSSQLSERVER\MyDocumentDatabase |
| 2 | Returnerar hela servervägen, till exempel:\\ServerName.MyDomain.com\MSSQLSERVER\MyDocumentDatabase |
Returtyp
nvarchar(max)
Om SQL Server-instansen är klustrad i ett failover-kluster, är maskinnamnet som returneras som en del av denna väg det virtuella värdnamnet för den klustrade instansen.
När databasen tillhör en Always On-tillgänglighetsgrupp returnerar funktionen FileTableRootPath det virtuella nätverksnamnet (VNN) istället för datorns namn.
Allmänna kommentarer
Sökvägen som funktionen GetFileNamespacePath returnerar är en logisk katalog- eller filsökväg i följande format:
\\<machine>\<instance-level FILESTREAM share>\<database-level directory>\<FileTable directory>\...
Denna logiska väg motsvarar inte direkt en fysisk NTFS-väg. Den översätts till den fysiska sökvägen av FILESTREAMs filsystemfilterdrivrutin och FILESTREAM-agenten. Denna separation mellan den logiska vägen och den fysiska vägen gör att SQL Server kan omorganisera data internt utan att påverka sökvägens giltighet.
Metodtips
För att hålla kod och applikationer oberoende av den aktuella datorn och databasen, undvik att skriva kod som är beroende av absoluta filvägar. Istället hämtar du hela sökvägen för en fil vid körning genom att använda funktionerna FileTableRootPath och GetFileNamespacePath tillsammans, som visas i följande exempel. Som standard returnerar funktionen GetFileNamespacePath den relativa sökvägen för filen under rotvägen för databasen.
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
Följande exempel visar hur man anropar funktionen GetFileNamespacePath för att hämta UNC-sökvägen för en fil eller katalog i en 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';