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


PathName (Transact-SQL)

Область применения: SQL Server

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

Соглашения о синтаксисе 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.

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

Примеры

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

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

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

B. Отображение путей объектов 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;  

См. также

Данные больших двоичных объектов (BLOB-объекты) (SQL Server)
GET_FILESTREAM_TRANSACTION_CONTEXT (Transact-SQL)
Доступ к данным FILESTREAM с OpenSqlFilestream