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 rubriqueConventions de syntaxe Transact-SQL

Syntaxe

column_name.PathName (@option)

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
    Une expression entière qui définit comment le composant serveur du chemin d'accès doit être mise en forme. @option peut être 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

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