PathName (Transact-SQL)

Retourne le chemin d'accès d'un objet blob FILESTREAM. L'API OpenSqlFilestream utilise ce chemin d'accès pour retourner un handle auquel une application peut faire appel pour utiliser les données BLOB à l'aide des API Win32. PathName est en lecture seule.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

column_name.PathName ( @option [ , use_replica_computer_name ] )

Arguments

  • column_name
    Nom d'une colonne FILESTREAM varbinary(max). column_name doit être un nom de colonne. Il ne peut s'agir d'une expression ou du résultat d'une instruction CAST ou CONVERT.

    La demande de PathName pour une colonne de tout autre type de données ou pour une colonne varbinary(max) sans l'attribut de stockage FILESTREAM entraînera une erreur de compilation de requête.

  • @option
    Expression entière qui définit comment le composant serveur du chemin d'accès doit être mis en forme. @option peut avoir l'une des valeurs suivantes. La valeur par défaut est 0.

    Valeur

    Description

    0

    Retourne le nom de serveur converti au format BIOS, par exemple : \\SERVERNAME\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9

    1

    Retourne le nom de serveur non converti, par exemple : \\ServerName\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F1

    2

    Retourne le chemin d'accès complet du serveur, par exemple : \\ServerName.MyDomain.com\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9

  • use_replica_computer_name
    Valeur binaire qui définit comment le nom du serveur doit être retourné à un groupe de disponibilité AlwaysOn.

    Lorsque la base de données n'appartient pas à un groupe de disponibilité AlwaysOn, la valeur de cet argument est ignorée. Le nom d'ordinateur est toujours utilisé dans le chemin d'accès.

    Lorsque la base de données appartient à un groupe de disponibilité AlwaysOn, la valeur de use_replica_computer_name a l'effet suivant sur la sortie de la fonction PathName :

    Valeur

    Description

    Non spécifié.

    La fonction retourne le nom de réseau virtuel (VNN) dans le chemin d'accès.

    0

    La fonction retourne le nom de réseau virtuel (VNN) dans le chemin d'accès.

    1

    La fonction retourne le nom d'ordinateur dans le chemin d'accès.

Type de retour

nvarchar(max)

Valeur de retour

La valeur retournée est le chemin d'accès logique complet ou NETBIOS de l'objet blob. PathName ne retourne pas d'adresse IP. Une valeur NULL est retournée lorsque l'objet blob FILESTREAM n'a pas été créé.

Notes

La colonne ROWGUID doit être visible dans toute requête qui appelle PathName.

Un objet blob FILESTREAM peut être créé uniquement à l'aide de Transact-SQL.

Exemples

A.Lecture du chemin d'accès d'un objet BLOB FILESTREAM

L'exemple suivant attribue PathName à une variable nvarchar(max).

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

B.Affichage des chemins d'accès des BLOB FILESTREAM dans une table

L'exemple suivant crée et affiche les chemins d'accès pour trois objets 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

Voir aussi

Référence

GET_FILESTREAM_TRANSACTION_CONTEXT (Transact-SQL)

Accéder à des données FILESTREAM avec OpenSqlFilestream

Concepts

Données blob (Binary Large Object) (SQL Server)