PathName (Transact-SQL)

Se aplica a:SQL Server

Devuelve la ruta de acceso de un objeto binario grande (BLOB) FILESTREAM. La API OpenSqlFilestream usa esta ruta de acceso para devolver un identificador que una aplicación puede usar para trabajar con los datos BLOB mediante las API de Win32. PathName es de solo lectura.

Convenciones de sintaxis de Transact-SQL

Sintaxis

  
column_name.PathName ( @option [ , use_replica_computer_name ] )  

Argumentos

column_name
Es el nombre de columna de una columna FILESTREAM varbinary(max). column_name debe ser un nombre de columna. No puede ser una expresión ni el resultado de una instrucción CAST o CONVERT.

Si se solicita pathName para una columna de cualquier otro tipo de datos o para una columna varbinary(max) que no tiene el atributo de almacenamiento FILESTREAM, se producirá un error en tiempo de compilación de consulta.

@option
Expresión entera que define cómo se debe dar formato al componente de servidor de la ruta de acceso. @option puede ser uno de los valores siguientes. El valor predeterminado es 0.

Value Descripción
0 Devuelve el nombre del servidor convertido al formato BIOS, por ejemplo: \\SERVERNAME\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9
1 Devuelve el nombre del servidor sin la conversión, por ejemplo: \\ServerName\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F1
2 Devuelve la ruta de acceso al servidor completa, por ejemplo: \\ServerName.MyDomain.com\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9

use_replica_computer_name
Valor de bit que define cómo se debe devolver el nombre del servidor en un grupo de disponibilidad Always On.

Cuando la base de datos no pertenece a un grupo de disponibilidad Always On, se omite el valor de este argumento. El nombre del equipo siempre se usa en la ruta.

Cuando la base de datos pertenece a un grupo de disponibilidad Always On, el valor de use_replica_computer_name tiene el siguiente efecto en la salida de la función PathName:

Valor Descripción
No especificada. La función devuelve el nombre de red virtual (VNN) en la ruta de acceso.
0 La función devuelve el nombre de red virtual (VNN) en la ruta de acceso.
1 La función devuelve el nombre del equipo en la ruta de acceso.

Tipo de valor devuelto

nvarchar(max)

Valor devuelto

El valor devuelto es la ruta de acceso de NETBIOS o la ruta de acceso lógica completa del BLOB. PathName no devuelve una dirección IP. Se devuelve NULL cuando no se ha creado el BLOB FILESTREAM.

Comentarios

La columna ROWGUID debe estar visible en cualquier consulta que llame a PathName.

Un BLOB FILESTREAM solo se puede crear mediante Transact-SQL.

Ejemplos

A. Leer la ruta de acceso para un BLOB FILESTREAM

En el ejemplo siguiente se asigna la propiedad PathName a una variable de tipo nvarchar(max).

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

B. Mostrar las rutas de acceso de BLOB FILESTREAM en una tabla

En el ejemplo siguiente se crean y muestran las rutas de acceso para tres 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;  

Consulte también

Datos de objeto binario grande (Blob) (SQL Server)
GET_FILESTREAM_TRANSACTION_CONTEXT (Transact-SQL)
Obtener acceso a los datos FILESTREAM con OpenSqlFilestream