Поделиться через


PathName (Transact-SQL)

Возвращает путь в виде большого двоичного объекта (BLOB) FILESTREAM. Метод API OpenSqlFilestream использует этот путь, чтобы вернуть дескриптор, который приложение может использовать для работы с BLOB-данными в функциях API Win32. Функция PathName доступна только для чтения.

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Cинтаксические обозначения в Transact-SQL

Синтаксис

column_name.PathName ( @option [ , use_replica_computer_name ] )

Аргументы

  • column_name
    Имя столбца varbinary(max) FILESTREAM. Аргумент column_name должен быть неполным именем столбца. Он не может быть выражением или результатом инструкции CAST или CONVERT.

    При попытке вызова функции PathName для столбца с данными любого другого типа или для столбца типа varbinary(max) , не имеющего атрибута хранилища FILESTREAM, возникнет ошибка запроса во время компиляции.

  • @option
    Целочисленное выражение, определяющее способ форматирования серверных компонентов пути. Аргумент @option может иметь одно из следующих значений. Значение по умолчанию равно 0.

    Значение

    Описание

    0

    Возвращает имя сервера, преобразованное в формат BIOS, например: \\SERVERNAME\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9

    1

    Возвращает имя сервера без преобразования, например: \\ServerName\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F1

    2

    Возвращает полный путь сервера, например: \\ServerName.MyDomain.com\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9

  • use_replica_computer_name
    Битовое значение, определяющее, каким образом имя сервера должно возвращаться в группу доступности AlwaysOn.

    Если база данных не принадлежит группе доступности AlwaysOn, то значение аргумента игнорируется. В пути всегда используется имя компьютера.

    Если база данных принадлежит группе доступности AlwaysOn, то значение аргумента use_replica_computer_name следующим образом влияет на результат функции PathName.

    Значение

    Описание

    Не указано.

    Функция возвращает в пути имя виртуальной сети.

    0

    Функция возвращает в пути имя виртуальной сети.

    1

    Функция возвращает в пути имя компьютера.

Возвращаемый тип

nvarchar(max)

Возвращаемое значение

Возвращаемое значение является полным логическим путем или путем NETBIOS объекта BLOB. PathName не возвращает IP-адрес. Возвращается значение NULL, если объект FILESTREAM BLOB не создан.

Замечания

Столбец ROWGUID должен быть виден любому запросу, который вызывает функцию PathName.

Объект FILESTREAM BLOB можно создать только с помощью Transact-SQL.

Примеры

А.Считывание пути для объекта FILESTREAM BLOB

В следующем примере значение функции PathName присваивается переменной типа nvarchar(max).

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

Б.Отображение путей объектов FILESTREAM BLOB в таблице

В следующем примере создаются и отображаются пути трех объектов FILESTREAM BLOB.

-- 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;

См. также

Справочник

GET_FILESTREAM_TRANSACTION_CONTEXT (Transact-SQL)

Доступ к данным FILESTREAM с OpenSqlFilestream

Основные понятия

Данные большого двоичного объекта (SQL Server)