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');