PathName (Transact-SQL)

FILESTREAM バイナリ ラージ オブジェクト (BLOB) のパスを返します。OpenSqlFilestream API では、アプリケーションが Win32 API を使用して BLOB データを操作する際に使用できるハンドルを返すために、このパスが使用されます。PathName は読み取り専用です。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

column_name.PathName (@option)

引数

  • column_name
    varbinary(max) FILESTREAM 列の列名を指定します。column_name は、列名にする必要があります。式を指定したり、CAST ステートメントまたは CONVERT ステートメントの結果を指定したりすることはできません。

    他のデータ型の列に対して、または FILESTREAM ストレージ属性を持たない varbinary(max) 列に対して PathName を要求すると、クエリのコンパイル時にエラーが発生します。

  • @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)。

戻り値の型

nvarchar(max)

戻り値

戻り値は、BLOB の完全修飾論理パスまたは NETBIOS パスです。PathName は IP アドレスを返しません。FILESTREAM BLOB が作成されていない場合は、NULL が返されます。

説明

ROWGUID 列は、PathName を呼び出す任意のクエリでアクセスできる必要があります。

FILESTREAM BLOB は、Transact-SQL でのみ作成できます。

A. 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 のパスをテーブルに表示する

次の例では、3 つの 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);
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