Condividi tramite


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.

Icona di collegamento a un argomento 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

Concetti

Dati BLOB (Binary Large Object) (SQL Server)