PathName (Transact-SQL)
S'applique à : SQL Server
Retourne le chemin d'accès d'un objet blob FILESTREAM. L’API OpenSqlFilestream utilise ce chemin d’accès 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 de PathName pour une colonne d’un autre type de données ou pour une colonne varbinary(max) ne possède 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 bits 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 renvoyé
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 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