Condividi tramite


GetFileNamespacePath (Transact-SQL)

Si applica a: SQL Server

Restituisce il percorso UNC per un file o una directory in una tabella FileTable.

Sintassi

  
<column-name>.GetFileNamespacePath(is_full_path, @option)  

Argomenti

column-name
Nome della colonna VARBINARY(MAX) file_stream colonna in una tabella FileTable.

Il valore column-name deve essere un nome di colonna valido. Non può essere un'espressione o un valore convertito o di cui sia stato eseguito il cast da una colonna di un altro tipo di dati.

is_full_path
Espressione Integer che specifica se restituire un percorso relativo o assoluto. is_full_path può avere uno dei valori seguenti:

valore Descrizione
0 Restituisce il percorso relativo all'interno della directory a livello di database.

Si tratta del valore predefinito.
1 Restituisce il percorso UNC completo, che inizia con \\computer_name.

@option
Espressione Integer che definisce la formattazione del componente server del percorso. @option può avere uno dei valori seguenti:

valore Descrizione
0 Restituisce il nome del server convertito in formato NetBIOS, ad esempio:

\\SERVERNAME\MSSQLSERVER\MyDocumentDatabase

Questo è il valore predefinito.
1 Restituisce il nome del server senza conversione, ad esempio:

\\ServerName\MSSQLSERVER\MyDocumentDatabase
2 Restituisce il percorso completo del server, ad esempio:

\\ServerName.MyDomain.com\MSSQLSERVER\MyDocumentDatabase

Tipo restituito

nvarchar(max)

Se l'istanza di SQL Server è in cluster in un cluster di failover, il nome del computer restituito come parte di questo percorso è il nome host virtuale per l'istanza del cluster.

Quando il database appartiene a un gruppo di disponibilità AlwaysOn, la funzione FileTableRootPath restituisce il nome della rete virtuale anziché il nome del computer.

Osservazioni generali

Il percorso restituito dalla funzione GetFileNamespacePath è una directory logica o un percorso di file nel formato seguente:

\\<machine>\<instance-level FILESTREAM share>\<database-level directory>\<FileTable directory>\...

Questo percorso logico non corrisponde direttamente a un percorso NTFS fisico. Viene convertito nel percorso fisico dal driver di filtro del file system di FILESTREAM e dall'agente FILESTREAM. Questa separazione tra il percorso logico e il percorso fisico consente a SQL Server di riorganizzare i dati internamente senza influire sulla validità del percorso.

Consigli per iniziare

Per mantenere il codice e le applicazioni indipendenti dal database e dal computer correnti, evitare di scrivere codice basato su percorsi di file assoluti. Ottenere invece il percorso completo per un file in fase di esecuzione usando le funzioni FileTableRootPath e GetFileNamespacePath, come illustrato nell'esempio seguente. Per impostazione predefinita, la funzione GetFileNamespacePath restituisce il percorso relativo del file all'interno del percorso radice per il database.

USE MyDocumentDatabase;  
@root varchar(100)  
SELECT @root = FileTableRootPath();  
  
@fullPath = varchar(1000);  
SELECT @fullPath = @root + file_stream.GetFileNamespacePath() FROM DocumentStore  
WHERE Name = N'document.docx';  

Osservazioni:

Esempi

Negli esempi seguenti viene illustrato come chiamare la funzione GetFileNamespacePath per ottenere il percorso UNC per un file o una directory in una tabella 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';  

Vedi anche

Usare directory e percorsi in FileTable