分享方式:


FileTableRootPath (Transact-SQL)

適用於:SQL Server

傳回特定 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\MyDocumentDatabase

這是預設值。
1 傳回伺服器名稱而不轉換,例如:

\\ServerName\MSSQLSERVER\MyDocumentDatabase
2 傳回完整的伺服器路徑,例如:

\\ServerName.MyDomain.com\MSSQLSERVER\MyDocumentDatabase

傳回類型

nvarchar(4000)

當資料庫屬於 Always On 可用性群組時, FileTableRootPath 函式會傳回虛擬網路名稱 (VNN), 而不是電腦名稱。

一般備註

當下列其中一個條件成立時,FileTableRootPath 函式會傳回 NULL:

  • FileTable_name的值無效。

  • 呼叫端沒有足夠的許可權可參考指定的數據表或目前的資料庫。

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

如需詳細資訊,請參閱 Work with Directories and Paths in FileTables

最佳做法

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

USE MyDocumentDatabase;  
  
@root varchar(100)  
SELECT @root = FileTableRootPath();  
@fullPath = varchar(1000);  
  
SELECT @fullPath = @root + file_stream.GetFileNamespacePath()  
FROM DocumentStore  
WHERE Name = N'document.docx';  

安全性

權限

FileTableRootPath 函式需要:

  • FileTable 的 SELECT 許可權,可取得特定 FileTable 的根路徑。

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

範例

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

USE MyDocumentDatabase;  
-- returns "\\MYSERVER\MSSQLSERVER\MyDocumentDatabase"  
SELECT FileTableRootPath();  
  
-- returns "\\MYSERVER\MSSQLSERVER\MyDocumentDatabase\MyFileTable"  
SELECT FileTableRootPath(N'dbo.MyFileTable');  
  
-- returns "\\MYSERVER\MSSQLSERVER\MyDocumentDatabase\MyFileTable"  
SELECT FileTableRootPath(N'MyFileTable');  

另請參閱

使用 FileTable 中的目錄與路徑