PathName (Transact-SQL)
Restituisce il percorso di un oggetto binario di grandi dimensioni (BLOB) FILESTREAM. Nell'API OpenSqlFilestream viene utilizzato questo percorso per restituire un handle che un'applicazione può utilizzare per la gestione dei dati BLOB tramite le API Win32. PathName è un valore di sola lettura.
Convenzioni della sintassi Transact-SQL
Sintassi
column_name.PathName ( @option [ , use_replica_computer_name ] )
Argomenti
column_name
Nome di una colonna FILESTREAM varbinary(max). column_name deve essere un nome di colonna. Non può essere un'espressione né il risultato di un'istruzione CAST o CONVERT.Se si richiede PathName per una colonna con qualsiasi altro tipo di dati o per una colonna di tipo varbinary(max) che non dispone dell'attributo di archiviazione FILESTREAM, viene generato un errore in fase di compilazione della query.
@option
Espressione intera che definisce la formattazione del componente server del percorso. I possibili valori di @option vengono indicati di seguito. 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
Un valore del bit che definisce come il nome del server deve essere restituito in un gruppo di disponibilità AlwaysOn.Quando il database non appartiene a un gruppo di disponibilità AlwaysOn, allora il valore di questo argomento viene ignorato. Il nome computer viene utilizzato sempre nel percorso.
Quando il database appartiene a un gruppo di disponibilità AlwaysOn, allora il valore di use_replica_computer_name ha il seguente effetto 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 oggetto BLOB FILESTREAM può essere creato solo utilizzando Transact-SQL.
Esempi
A.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);
INSERT INTO TABLE1 VALUES(2, NEWID(), 0x00);
INSERT INTO TABLE1 VALUES(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
Vedere anche
Riferimento
GET_FILESTREAM_TRANSACTION_CONTEXT (Transact-SQL)
Accesso ai dati FILESTREAM con OpenSqlFilestream