Condividi tramite


PathName (Transact-SQL)

Si applica a: SQL Server

Restituisce il percorso di un oggetto binario di grandi dimensioni (BLOB) FILESTREAM. L'API OpenSqlFilestream usa questo percorso per restituire un handle che un'applicazione può usare per usare i dati BLOB usando le API Win32. PathName è un valore di sola lettura.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

  
column_name.PathName ( @option [ , use_replica_computer_name ] )  

Argomenti

column_name
Nome della colonna di una colonna varbinary(max) FILESTREAM. column_name deve essere un nome di colonna. Non può essere un'espressione né il risultato di un'istruzione CAST o CONVERT.

La richiesta di PathName per una colonna di qualsiasi altro tipo di dati o per una colonna varbinary(max) che non dispone dell'attributo di archiviazione FILESTREAM genererà un errore di compilazione della query.

@option
Espressione integer che definisce la modalità di formattazione del componente server del percorso. @option può essere uno dei valori seguenti. Il valore predefinito è 0.

Valore Descrizione
0 Restituisce il nome del server convertito in formato BIOS, ad esempio \\SERVERNAME\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9
1 Restituisce il nome del server senza conversione, ad esempio \\ServerName\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F1
2 Restituisce il percorso completo del server, ad esempio \\ServerName.MyDomain.com\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9

use_replica_computer_name
Valore di bit che definisce la modalità di restituzione del nome del server in un gruppo di disponibilità Always On.

Quando il database non appartiene a un gruppo di disponibilità AlwaysOn, il valore di questo argomento viene ignorato. Il nome computer viene utilizzato sempre nel percorso.

Quando il database appartiene a un gruppo di disponibilità Always On, il valore di use_replica_computer_name ha l'effetto seguente sull'output della funzione PathName :

Valore Descrizione
Non specificato. La funzione restituisce il nome di rete virtuale nel percorso.
0 La funzione restituisce il nome di rete virtuale nel percorso.
1 La funzione restituisce il nome del computer nel percorso.

Tipo restituito

nvarchar(max)

Valore restituito

Il valore restituito è il percorso completo logico oppure il percorso NETBIOS dell'oggetto BLOB. PathName non restituisce un indirizzo IP. Quando l'oggetto BLOB FILESTREAM non è stato creato, viene restituito NULL.

Osservazioni:

La colonna ROWGUID deve essere visibile in tutte le query in cui viene chiamato PathName.

Un BLOB FILESTREAM può essere creato solo tramite Transact-SQL.

Esempi

R. Lettura del percorso di un oggetto BLOB FILESTREAM

Nell'esempio seguente viene assegnato PathName a una variabile nvarchar(max).

DECLARE @PathName nvarchar(max);  
SET @PathName = (  
    SELECT TOP 1 photo.PathName()  
    FROM dbo.Customer  
    WHERE LastName = 'CustomerName'  
    );  

B. Visualizzazione dei percorsi di oggetti BLOB FILESTREAM in una tabella

Nell'esempio seguente vengono creati e visualizzati i percorsi di tre oggetti BLOB FILESTREAM.

-- Create a FILESTREAM-enabled database.  
-- The c:\data directory must exist.  
CREATE DATABASE PathNameDB  
ON  
PRIMARY ( NAME = ArchX1,  
    FILENAME = 'c:\data\archdatP1.mdf'),  
FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM( NAME = ArchX3,  
    FILENAME = 'c:\data\filestreamP1')  
LOG ON  ( NAME = ArchlogX1,  
    FILENAME = 'c:\data\archlogP1.ldf');  
GO  
  
USE PathNameDB;  
GO  
  
-- Create a table, add some records, and  
-- create the associated FILESTREAM  
-- BLOB files.  
  
CREATE TABLE TABLE1  
    (  
        ID int,  
        RowGuidColumn UNIQUEIDENTIFIER  
                      NOT NULL UNIQUE ROWGUIDCOL,  
        FILESTREAMColumn varbinary(MAX) FILESTREAM  
    );  
GO  
  
INSERT INTO TABLE1 VALUES  
 (1, NEWID(), 0x00)  
,(2, NEWID(), 0x00)  
,(3, NEWID(), 0x00);  
GO  
  
SELECT FILESTREAMColumn.PathName() AS 'PathName' FROM TABLE1;  
  
--Results  
--PathName  
------------------------------------------------------------------------------------------------------------  
--\\SERVER\MSSQLSERVER\v1\PathNameExampleDB\dbo\TABLE1\FILESTREAMColumn\DD67C792-916E-4A76-8C8A-4A85DC5DB908  
--\\SERVER\MSSQLSERVER\v1\PathNameExampleDB\dbo\TABLE1\FILESTREAMColumn\2907122B-2560-4CB9-86DC-FBE7ABA1843B  
--\\SERVER\MSSQLSERVER\v1\PathNameExampleDB\dbo\TABLE1\FILESTREAMColumn\922BE0E0-CAB9-4403-90BF-945BD258E4BC  
--  
--(3 row(s) affected)  
GO  
  
--Drop the database to clean up.  
USE master;  
GO  
DROP DATABASE PathNameDB;  

Vedi anche

Dati BLOB (Binary Large Object) (SQL Server)
GET_FILESTREAM_TRANSACTION_CONTEXT (Transact-SQL)
Accesso ai dati FILESTREAM con OpenSqlFilestream