「檔案資料表」( FileTable)是 SQL Server 2012 開始提供的新功能。 一般的資料表欄位中存放的是使用者資料,但是檔案資料表則是根據 SQL Server FILESTREAM 技術,直接將磁碟中的檔案和目錄資訊儲存在資料庫的資料表中。 也就是說,您可以將檔案和文件儲存在 FileTable 中,而從 Windows 應用程式存取它們,就像它們儲存在檔案系統中一樣,並不需要對用戶端應用程式進行任何變更。
FileTable
何謂 FileTable
FileTable 是包含預先定義結構描述的特殊化使用者資料表,可儲存 FILESTREAM 資料、檔案和目錄階層資訊,以及檔案屬性。
FileTable 提供了下列功能:
- FileTable 代表目錄和檔案的階層。它會儲存與該階層中所有節點相關的資料 (目錄以及它們所包含的檔案)。
- FileTable 中的每個資料列都代表一個檔案或目錄。
- 每個資料列都包含下列項目:stream_id、file_stream 、path_locator、parent_path_locator、建立日期、修改日期...
- 你可以直接在 Windows 應用程式中,存取 FileTable 對的檔案和目錄。
- SQL Server 元件會攔截透過 Windows 共用建立或變更檔案或目錄的呼叫,然後將它們反映在 FileTable 的對應關聯式資料中。
啟用 FileTable
因為 FileTable 會使用 FileStream 在檔案群組中建立一個 FileStream 目錄以對應到實體的資料檔案和目錄。 所以要使用 FileTable 必須先啟用一些相關的功能,例如下列項目:
- 於執行個體層級:
- 在執行個體層級啟用 FILESTREAM。
- 於資料庫層級:
- 在資料庫層級提供 FILESTREAM 檔案群組。
- 在資料庫層級啟用非交易式存取。
- 在資料庫層級指定 FileTable 的目錄。
在執行個體層級 啟用 FILESTREAM
要使用 FileTable 這個新功能,必須先啟用 FileStream ,你可以在組態管理員中找到設定。
接下來,必需要開啟 FileStream 存取的權限。
開啟執行個體的【屬性視窗】,將存取層級設定成完整存取
--存取層級設定也可以使用 TSQL EXEC sp_configure filestream_access_level, 2 RECONFIGURE
PS. 完成這個步驟後,必需將SQL Server重新啟動。
在資料庫層級 提供 FILESTREAM 檔案群組
在啟用 FILESTREAM 之後,就可以對作業資料庫進行設定。
開啟資料庫的【屬性視窗】,在[檔案群組]頁簽中,加入新的檔案群組。
在[檔案]頁簽中,使用前一步驟建立的檔案群組,新增一個資料庫檔案,並將檔案類型設為 FILESTREAM。
在資料庫層級 啟用非交易式存取
在[選項]頁簽中,將 FILESTREAM 非交易式存取設定為 Full 。
設定為 Full 這樣才能直接由檔案總管來存取。 如果沒有設定Full,就只能透過SQL Server來進行檔案的存取,但透過SQL Server進行檔案的存取,其實是會消耗SQL Server的IO的,所以沒有特別需要,還是利用檔案總管來存取比較好; 其次,目錄名稱也請特別注意,這個部分未來也會形成存取檔案的目錄結構之一。
在資料庫層級 指定 FileTable 的目錄
在[選項]頁簽中,輸入一個 FILESTREAM 目錄名稱。
建立 FileTable 練習
完成以上步驟之後,我們就可以使用T-SQL語法來建立 FileTable 。
上圖中新增 FileTable 功能,並不會直接透過 GUI 介面新增 FileTable, 它只會產生建立 FileTable 的範本語法給你參考,你還是必須修改這個範本後,再透過執行 TSQL 新增 FileTable 。
CREATE TABLE dbo.MyDocument AS FILETABLE WITH ( FILETABLE_DIRECTORY = 'MyFileStream', FILETABLE_COLLATE_FILENAME = database_default ) GO
你可以使用[瀏覽FileTable目錄]開啟相對應該資料夾。
查詢 FileTable
select * from MyDocument
- FileTable (SQL Server)
- 【SQL Server】開啟好用的 FileTable 設定
- SQL Server - 神奇又好用的File Table
沒有留言:
張貼留言