PathName (Transact-SQL)
適用於:SQL Server
傳回 FILESTREAM 二進位大型物件的路徑(BLOB)。 OpenSqlFilestream API 會使用此路徑傳回應用程式可以使用 Win32 API 來處理 BLOB 資料的句柄。 PathName 是唯讀的。
語法
column_name.PathName ( @option [ , use_replica_computer_name ] )
引數
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 |
use_replica_computer_name
位值,定義應該如何在 Always On 可用性群組中傳回伺服器名稱。
當資料庫不屬於 Always On 可用性群組時,會忽略此自變數的值。 計算機名稱一律用於路徑中。
當資料庫屬於 Always On 可用性群組時,use_replica_computer_name的值就會對 PathName 函式的輸出產生下列影響:
值 | Description |
---|---|
未指定。 | 函式會傳回路徑中的虛擬網路名稱 (VNN)。 |
0 | 函式會傳回路徑中的虛擬網路名稱 (VNN)。 |
1 | 函式會傳回路徑中的計算機名稱。 |
傳回類型
nvarchar(max)
傳回值
傳回的值是 BLOB 的完整邏輯或 NETBIOS 路徑。 PathName 不會傳回IP位址。 當 FILESTREAM BLOB 尚未建立時,會傳回 NULL。
備註
在呼叫 PathName 的任何查詢中,都必須顯示 ROWGUID 數據行。
只有使用 Transact-SQL 才能建立 FILESTREAM BLOB。
範例
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 的路徑
下列範例會建立並顯示三個 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)
使用 OpenSqlFilestream 存取 FILESTREAM 資料