PathName (Transact-SQL)

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

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

column_name.PathName (@option)

Argumentos

  • column_name
    Es el nombre de columna de una columna FILESTREAM de tipo 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.

    La solicitud del valor de PathName para una columna con cualquier otro tipo de datos o para una columna de tipo varbinary(max)que no tenga el atributo de almacenamiento FILESTREAM provocará un error de consulta en tiempo de compilación.

  • @option
    Una expresión entera que define cómo se debería dar formato al componente del servidor de la ruta de acceso. @option puede ser uno de los valores siguientes. El valor predeterminado es 0.

    Valor

    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

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.

Notas

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

Un BLOB FILESTREAM sólo se puede crear utilizando 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);
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