SQL Server 2012筆記分享-17:理解並設置文件表(FileTable)

(一)FileTable介紹

FileTable 功能爲 SQL Server 中存儲的文件數據提供對 Windows 文件命名空間的支持以及與 Windows 應用程序的兼容性支持。 FileTable 使得應用程序可以集成其存儲和數據管理組件,可對非結構化數據和元數據提供集成的 SQL Server 服務(包括全文搜索和語義搜索)。

換言之,您可以在 SQL Server 中將文件和文檔存儲在稱作 FileTable 的特別的表中,但是從 Windows 應用程序訪問它們,就好像它們存儲在文件系統中,而不必對您的客戶端應用程序進行任何更改。

FileTable 功能是在 SQL Server FILESTREAM 技術的基礎上生成的。

FileTable 將消除使用 SQL Server 來存儲和管理非結構化數據的一個巨大障礙,這些數據目前作爲文件存儲在文件服務器上。 企業可以將這些數據從文件服務器移到 FileTable,以利用 SQL Server 提供的集成管理和服務。 同時,它們可以保持現有 Windows 應用程序的 Windows 應用程序兼容性,將這些數據視爲文件系統中的文件。

注意事項

FileTable 不支持內存映射文件。 “記事本”和“畫圖”是兩個常見的使用內存映射文件的示例應用程序。 不能在 SQL Server 所在的計算機上使用這些應用程序來打開存儲在 FileTable 中的文件。 但是,可以從遠程計算機使用這些應用程序來打開存儲在 FileTable 中的文件,因爲在這些情況下不使用內存映射功能。

參考:http://msdn.microsoft.com/zh-cn/library/ff929144.aspx

(二)啓用FileTable之前的先決條件及filetable配置

FileTable 擴展了 SQL Server 的 FILESTREAM 功能。 因此,在創建和使用 FileTable 前,必須在 Windows 級別和 SQL Server 實例上啓用 FILESTREAM 用於文件 I/O 訪問。

1、在實例級別啓用filestream

在“開始”菜單中,依次指向“所有程序”、SQL Server 2014、“配置工具”,然後單擊“SQL Server 配置管理器”。

截圖00

在服務列表中,右鍵單擊“SQL Server 服務”,然後單擊“打開”。

在“SQL Server 配置管理器”管理單元中,找到要在其中啓用 FILESTREAM 的 SQL Server 實例。

右鍵單擊該實例,然後單擊“屬性”。

截圖01

在“SQL Server 屬性”對話框中,單擊“FILESTREAM”選項卡。

選中“針對 Transact-SQL 訪問啓用 FILESTREAM”複選框。

如果要在 Windows 中讀取和寫入 FILESTREAM 數據,請單擊“針對文件 I/O 流訪問啓用 FILESTREAM”。 在“Windows 共享名”框中輸入 Windows 共享的名稱。

如果遠程客戶端必須訪問存儲在此共享中的 FILESTREAM 數據,請選擇“允許遠程客戶端針對 FILESTREAM 數據啓用流訪問”。

截圖02

單擊“應用”。

在 SQL Server Management Studio 中,單擊“新建查詢”以顯示查詢編輯器。

在查詢編輯器中,輸入以下 Transact-SQL 代碼:

EXEC sp_configure filestream_access_level, 2

RECONFIGURE

單擊“執行”。

截圖03

重新啓動 SQL Server 服務。

最佳實踐:http://msdn.microsoft.com/zh-cn/library/cc645923.aspx

2、將防火牆配置爲進行 FILESTREAM 訪問

   

若要在防火牆保護的環境中使用 FILESTREAM,客戶端和服務器都必須能夠將 DNS 名稱解析爲包含 FILESTREAM 文件的服務器。 FILESTREAM 要求 Windows 文件共享端口 139 和 445 處於打開狀態。 

例:在運行 Windows 7 的計算機上打開 Windows 文件共享端口

在“控制面板”中,打開“Windows 防火牆”。  

在左窗格中,單擊“高級設置”。 如果系統提示您輸入管理員密碼或進行確認,請鍵入密碼或提供確認。 

在“高級安全 Windows 防火牆”對話框的左窗格中,單擊“入站規則”,然後在右窗格中單擊“新建規則”。  

按照“新建入站規則”嚮導中的說明添加 TCP 端口 139。  

重複上述步驟添加 TCP 端口 445。  

關閉“高級安全 Windows 防火牆”對話框。  

4、創建啓用了 FILESTREAM 的數據庫

數據庫必須首先具有 FILESTREAM 文件組,然後您才能在該數據庫中創建 FileTable。

對於 FILESTREAM 文件組,FILENAME 引用一個路徑。 最後一個文件夾的路徑必須存在,但最後一個文件夾不能存在。 在該示例中,c:\data 必須存在。 但是,在執行 CREATE DATABASE 語句時,filestream1 子文件夾不能存在。

例如:這裏我創建了一個啓用了filestream的數據庫:archive

截圖04

在運行上面的示例後,filestream.hdr 文件和 $FSLOG 文件夾將出現在 c:\Data\filestream1 文件夾中。

截圖05

filestream.hdr 文件是 FILESTREAM 容器的頭文件。filestream.hdr 文件是重要的系統文件。 它包含 FILESTREAM 標頭信息。 請勿刪除或修改此文件。

截圖06

通過SSMS來查看創建完成的數據庫,如圖所示。

截圖07

查看該數據庫的文件組屬性,如圖所示。

截圖08

   

5、 在數據庫級別啓用非事務性訪問並配置filetable的存放目錄

FileTable 使 Windows 應用程序可以獲取 FILESTREAM 數據的 Windows 文件句柄而不需要事務。 爲了允許對 SQL Server 中存儲的文件進行此非事務性訪問,您必須爲要包含 FileTable 的每個數據庫在數據庫級別上指定所需的非事務性訪問級別。 

執行下面的命令來檢查是否已經啓用了非事務性的訪問,如圖,並沒有數據庫啓用非事務性訪問,狀態都爲OFF。

截圖09

非事務性訪問的可用級別爲 FULL、READ_ONLY 和 OFF。我們可以使用下面的語句來啓用。如圖。

下圖的命令實際上在啓用archive數據庫的非事務性的訪問的同時,也創建了一個文件表的存放目錄:filetable002,如圖。

截圖10

設置現有數據庫的非事務性訪問級別和存放目錄完成後,再查詢如圖。

截圖18

5、創建一個filetable

   

使用下圖的語句在archive數據庫中創建filetable,如圖。

表的名稱爲documentstore

表存放的文件夾爲document

截圖14

   

創建完成後如圖所示。

截圖15

這裏,我們直接右擊創建好的filetable,選擇瀏覽filetable目錄,如圖。

截圖16

可以直接使用windows資源管理器來瀏覽該目錄,同時也可以直接在目錄中新建、刪除文檔,如圖。

變化的目錄和文件同時反映在文件表中.

注意:filetable的存放文件夾爲document,該文件夾默認自動放在filetable的存放目錄filetable002下面。

完整的路徑爲\\sqltest\mssqlserver\filetable002\document

即:\\計算機名稱\實例名稱\文件表存放目錄

截圖17

關於文件表的內容就學習到這裏,更多內容請參考:

http://msdn.microsoft.com/zh-cn/library/gg509097.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章