iT邦幫忙

DAY 15
4

MS SQL Server新特性探險:探險代碼 Denali系列 第 15

[Denali 新特性探險15]FileTables(3)

這篇介紹FileTable 管理及相關函數。
前兩篇我大概說明 FileTable 功能和特性,同時也示範該如何建立FileTable,
並且也驗證 FileTable和Windows 檔案管理兩者的同步,
接下來,我將介紹 FileTable 管理及相關函數。

管理相關
開啟或關閉 File namespace

--開啟
alter table dbo.ftsmp3 enable filetable_namespace 
--關閉
alter table dbo.ftsmp3 disable filetable_namespace

如果沒開啟Filetable_Namespace,
當要透過Windows檔案系統存取FileTable就會發生無法開啟檔案位置錯誤(如下圖)。

取得開啟操作中的檔案清單
透過新增的 sys.dm_filestream_non_transacted_handles(DMV)來取得開啟中的檔案清單

select t1.handle_id,t1.file_object_type_desc,t1.state ,t1.state_desc,t1.open_time,t1.opened_file_name    
from sys.dm_filestream_non_transacted_handles t1

確認FileTables Locks
透過dm_filestream_non_transacted_handles join sys.dm_tran_locks來確認Locks。

select opened_file_name
from sys.dm_filestream_non_transacted_handleswhere fcb_id IN( select request_owner_id from sys.dm_tran_locks );

開啟中的檔案可能會產生資源獨佔,這將會導致其他人無法修改該檔案,
所以必要時,你可能會刪除開啟中的檔案,好釋放相關獨佔資源。

刪除操作

-- 刪除所有 Filetables 已開啟操作 
exec sp_kill_filestream_non_transacted_handles;
-- 刪除單一FileTable中所有開啟中的操作 
exec sp_kill_filestream_non_transacted_handles @table_name = 'filetabletest';
-- 刪除單一開啟操作
exec sp_kill_filestream_non_transacted_handles @handle_id = 1167;


刪除開啟中的檔案。

相關系統函數介紹
FileTableRootPath:返回目前資料庫或特定 FileTable root-level UNC路徑。

--返回目前資料庫 root-level UNC 路徑
select FileTableRootPath();
--返回目前資料庫某個 FileTable root-level UNC 路徑
select FileTableRootPath(N'dbo.ftsmp3');

GetFileNamespacePath:返回 FileTable中特定檔案或目錄 UNC 路徑。

--default
select file_stream.GetFileNamespacePath() as FilePath FROM ftsmp3
where Name = '123.txt';
--完整 UNC 路徑
select file_stream.GetFileNamespacePath(1) as FullFilePath FROM ftsmp3
where Name = '123.txt';

GetPathLocator:返回FileTable中特定檔案或目錄 path_locator_id 。
下面兩個方法均可取得特定目錄或檔案的 path_locator_id。
方法1

select file_stream,name,path_locator from ftsmp3 

方法2

select GetPathLocator(file_stream.GetFileNamespacePath(1)) as '123.txt  path_locator_id'
FROM ftsmp3where Name = '123.txt';

MS SQL Server新特性探險:探險代碼 Denali 全系列文章


上一篇
[Denali 新特性探險14]FileTables(2)
下一篇
[Denali 新特性探險16]Semantic Search(1)
系列文
MS SQL Server新特性探險:探險代碼 Denali30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言