PathName (Transact-SQL)

S’applique à :SQL Server

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

Conventions de la syntaxe Transact-SQL

Syntaxe

  
column_name.PathName ( @option [ , use_replica_computer_name ] )  

Arguments

column_name
Nom de colonne 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 du PathName pour une colonne d’un autre type de données ou pour une colonne varbinary(max) qui n’a pas l’attribut de stockage FILESTREAM entraîne une erreur de compilation de requête.

@option
Expression entière qui définit la façon dont le composant serveur du chemin d’accès doit être mis 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

use_replica_computer_name
Valeur de bit qui définit la façon dont le nom du serveur doit être retourné dans un groupe de disponibilité Always On.

Lorsque la base de données n’appartient pas à un groupe de disponibilité Always On, 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é Always On, 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 renvoyée

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éé.

Remarques

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

Un OBJET BLOB FILESTREAM ne peut être créé qu’à l’aide de Transact-SQL.

Exemples

R. 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)  
,(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;  

Voir aussi

Données blob (Binary Large Object) (SQL Server)
GET_FILESTREAM_TRANSACTION_CONTEXT (Transact-SQL)
Accéder à des données FILESTREAM avec OpenSqlFilestream