다음을 통해 공유


PathName(Transact-SQL)

FILESTREAM BLOB(Binary Large Object)의 경로를 반환합니다. 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을 사용해서만 만들 수 있습니다.

1. FILESTREAM BLOB의 경로 읽기

다음 예에서는 nvarchar(max) 변수에 PathName을 할당합니다.

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

2. 테이블에 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