다음을 통해 공유


PathName(Transact-SQL)

적용 대상: SQL Server

FILESTREAM BLOB(Binary Large Object)의 경로를 반환합니다. OpenSqlFilestream API는 이 경로를 사용하여 Win32 API를 사용하여 애플리케이션이 BLOB 데이터 작업에 사용할 수 있는 핸들을 반환합니다. PathName은 읽기 전용입니다.

Transact-SQL 구문 표기 규칙

구문

  
column_name.PathName ( @option [ , use_replica_computer_name ] )  

인수

column_name
varbinary(max) FILESTREAM 열의 열 이름입니다. column_name 열 이름이어야 합니다. 식이나 CAST 또는 CONVERT 문의 결과가 될 수 없습니다.

다른 데이터 형식의 열 또는 varbinary(max) columnthat에 대한 PathName에 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
Always On 가용성 그룹에서 서버 이름을 반환하는 방법을 정의하는 비트 값입니다.

데이터베이스가 Always On 가용성 그룹에 속하지 않으면 이 인수의 값이 무시됩니다. 컴퓨터 이름은 항상 경로에 사용됩니다.

데이터베이스가 Always On 가용성 그룹에 속하는 경우 use_replica_computer_name은 PathName 함수의 출력에 다음과 같은 영향을 줍니다.

설명
지정 안 됨 이 함수는 경로에서 VNN(가상 네트워크 이름)을 반환합니다.
0 이 함수는 경로에서 VNN(가상 네트워크 이름)을 반환합니다.
1 함수가 경로에 컴퓨터 이름을 반환합니다.

반환 형식

nvarchar(max)

Return Value

반환된 값은 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)  
,(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(Binary Large Object) 데이터(SQL Server)
GET_FILESTREAM_TRANSACTION_CONTEXT(Transact-SQL)
OpenSqlFilestream을 사용하여 FILESTREAM 데이터 액세스