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