共用方式為


FileTableRootPath (Transact-SQL)

傳回特定 FileTable 或目前資料庫的根層級 UNC 路徑。

語法

FileTableRootPath ( [ ‘[schema_name.]FileTable_name’ ], @option )

引數

  • FileTable_name
    FileTable 的名稱。 FileTable_name 的類型是 nvarchar。 這是選擇性參數。 預設值為目前的資料庫。 您也可以選擇指定 schema_name。 您可以將 NULL 傳遞給 FileTable_name,使用預設參數值。

  • @option
    定義路徑之伺服器元件格式化方式的整數運算式。 @option 可具有下列其中一個值:

    說明

    0

    傳回轉換成 NetBIOS 格式的伺服器名稱,例如:

    \\SERVERNAME\MSSQLSERVER\MyDocumentDB

    這是預設值。

    1

    在不轉換的情況下傳回伺服器名稱,例如:

    \\ServerName\MSSQLSERVER\MyDocumentDB

    2

    傳回完整伺服器路徑,例如:

    \\ServerName.MyDomain.com\MSSQLSERVER\MyDocumentDB

傳回類型

nvarchar(4000)

當資料庫屬於 AlwaysOn 可用性群組時,FileTableRootPath 函數會傳回虛擬網路名稱 (VNN) 而非電腦名稱。

一般備註

如果下列其中一個條件成立,FileTableRootPath 函數會傳回 NULL:

  • FileTable_name 的值無效。

  • 呼叫者沒有足以參考指定資料表或目前資料庫的權限。

  • 未針對目前資料庫設定 database_directory 的 FILESTREAM 選項。

如需詳細資訊,請參閱<使用 FileTables 中的目錄與路徑>。

最佳做法

若要讓程式碼和應用程式獨立於目前的電腦和資料庫之外,請避免撰寫依賴絕對檔案路徑的程式碼。 請改為一起使用 FileTableRootPath 和 GetFileNamespacePath 函數,在執行階段取得檔案的完整路徑,如下列範例所示。 根據預設,GetFileNamespacePath 函數會傳回資料庫根路徑之下的檔案相對路徑。

USE MyDocumentDB;

@root varchar(100)
SELECT @root = FileTableRootPath();
@fullPath = varchar(1000);

SELECT @fullPath = @root + file_stream.GetFileNamespacePath()
FROM DocumentStore
WHERE Name = N’document.docx’;

安全性

權限

FileTableRootPath 函數需要:

  • 可以取得特定 FileTable 根路徑之 FileTable 的 SELECT 權限。

  • db_datareader 或更高的權限,以取得目前資料庫的根路徑。

範例

下列範例示範如何呼叫 FileTableRootPath 函數。

USE MyDocumentDB;
-- returns “\\MYSERVER\MSSQLSERVER\MyDocumentDB”
SELECT FileTableRootPath();

-- returns “\\MYSERVER\MSSQLSERVER\MyDocumentDB\MyFileTable”
SELECT FileTableRootPath(N'dbo.MyFileTable');

-- returns “\\MYSERVER\MSSQLSERVER\MyDocumentDB\MyFileTable”
SELECT FileTableRootPath(N'MyFileTable');

請參閱

概念

使用 FileTables 中的目錄與路徑