1.修改數據庫引擎的屬性。
打開SQL Server配置管理器並修改SQL Server數據庫引擎的屬性。使用此頁面為此Microsoft SQL Server 2012安裝啟用FILESTREAM。
(1)為Transact-SQL訪問啟用FILESTREAM
選擇此項可為Transact-SQL訪問啟用FILESTREAM。必須選擇此控制選項才能使用其他控制選項。如果未啟用此選項,則不能添加FileStream文件組。
(2)為文件I/O流訪問啟用文件流。
選擇為FILESTREAM啟用Win32流訪問。
(3)Windows * * *享有盛名。
使用此控制選項輸入將用於存儲FILESTREAM數據的Windows ***共享的名稱。默認值是SQL Server實例的名稱。
(4)允許遠程客戶端啟用對文件流數據的流訪問。
選擇此控制選項以允許遠程客戶端訪問此服務器上的FILESTREAM數據。
2.修改服務器的屬性。
打開SQL Server Management Studio並修改此實例的配置。默認配置如下:
上述選項解釋如下:
(1)FILESTREAM訪問級別顯示SQL Server實例上受支持的FILESTREAM的當前級別。要更改訪問級別,請選擇以下值之壹:
已禁用。
無法在文件系統中存儲二進制大對象(BLOB)數據。這是默認值。也就是說,文件流訪問級別=0
Transact-SQL訪問已啟用
您可以使用Transact-SQL訪問FILESTREAM數據,但不能通過文件系統訪問。即文件流訪問級別=1。
啟用完全訪問。
可以使用Transact-SQL並通過文件系統訪問FILESTREAM數據。也就是說,文件流訪問級別=0
註意:首次啟用FILESTREAM時,您可能需要重新啟動計算機來配置驅動程序。
(2)“FILESTREAM *** Enjoy Name”顯示安裝期間選擇的FILESTREAM * * *的只讀名稱。
在本實驗中,我們將“文件流訪問級別”設置為:啟用完全訪問。
如果它是通過T-SQL腳本執行的,請運行以下腳本:
EXEC sys . sp _ configure N‘filestream訪問級別‘,N‘2‘
用覆蓋重新配置
註意:安裝完成後,請重新啟動實例。
3.配置防火墻
若要在受防火墻保護的環境中使用FILESTREAM,客戶端和服務器都必須能夠將DNS名稱解析為包含FILESTREAM文件的服務器。FILESTREAM要求打開Windows文件* * *共享端口139和445。
第二,配置文件組
1,添加文件組
完成上述操作後,您可以向數據庫添加FileStream專用的文件組。
如果您通過腳本進行操作,請運行以下腳本:
ALTER DATABASE【db 01】添加文件組【FileStreamFileGroup】包含文件流
2.添加文件
完成上述操作後,您可以向數據庫添加FilStream類型的數據庫文件。
在本例中,系統沒有為“FileStream data”文件類型創建mdf或ndf文件,而是在文件夾C:\SqlData下自動創建了壹個具有邏輯名稱的文件夾,即C:\SqlData\FileData。其中FILESTREAM.hdr文件是FILESTREAM容器的頭文件。刪除此數據庫後,mdf、ndf、日誌和此文件夾都將被刪除。
如果您通過腳本進行操作,請運行以下腳本:
ALTER DATABASE【db 01】將文件(NAME = N‘FileData,FILENAME = N‘c:\ SqlData \ FileData‘)添加到文件組【FileStreamFileGroup】中
註意:在上面的示例中,在運行腳本之前,C:\SqlData必須存在。建議使用右側的選擇按鈕來選擇路徑。如果路徑不存在,將會報告錯誤:
同時,不能存在重復的文件夾,即C:\SqlData\FileData不能存在。否則,它還會報告壹個錯誤:
3.啟動非事務性訪問
FileTable使Windows應用程序能夠在沒有SQL Server事務的情況下獲取FILESTREAM數據的Windows文件句柄。為了允許對存儲在SQL Server中的文件進行這種非事務性訪問,您必須在數據庫級別為將包含FileTable的每個數據庫指定所需的非事務性訪問級別。
選項解釋如下:
(1)對文件流的非事務性訪問
為從文件系統對存儲在FileTables中的FILESTREAM數據的非事務性訪問指定以下選項之壹:OFF、READ_ONLY或FULL。
如果服務器上未啟用FILESTREAM,該值將被設置為OFF並被禁用。在本實驗中,將其設置為滿。
②文件流目錄名
為與所選數據庫關聯的FILESTREAM數據指定目錄名。在FileTable文件夾層次結構中,此數據庫級目錄將成為在實例級為FILESTREAM指定的* * *共享名稱的子目錄,以及在數據庫中創建的FileTable的父目錄。
如果在啟用非事務性訪問時未提供目錄名,則必須稍後提供目錄名,以便在數據庫中創建文件表。
如果由腳本執行,如下所示:
更改數據庫db01
設置文件流(NON _ TRANSACTED _ ACCESS = FULL,DIRECTORY _ NAME = N‘image files‘)
註意:更改現有數據庫時,請使用DIRECTORY_NAME FILESTREAM選項調用ALTER DATABASE(Transact-SQL)語句。使用這些選項更改目錄名時,數據庫必須以獨占方式鎖定,並且沒有打開的文件句柄。
描述:要檢查數據庫上是否啟用了非事務性訪問,可以查詢目錄視圖。腳本如下所示:
SELECT數據庫名稱(數據庫標識),非事務處理訪問,非事務處理訪問desc
FROM sys . database _ filestream _ options
第三,創建壹個文件表
1.創建第壹個文件表。
“SQL Server Management Studio”僅提供腳本模板,您仍需要使用腳本來創建文件表:
使用db01
將表ImageTable1創建為文件表
官方模板是:
使用【db01】
創建表【dbo】。【imagetable 1】AS file table ON【PRIMARY】FILESTREAM _ ON【FILESTREAM file group】
隨著
(file table _ DIRECTORY = N‘image table 1‘,file table _ COLLATE _ FILENAME = Chinese _ PRC _ CI _ AS)
2.創建第二個FileTable。
將表格ImageTable2創建為文件表格
3、讓* * *享受這條道路
文件表創建後,會相應地生成壹個文件表* * *共享目錄,目錄路徑可以通過內置函數獲取:
選擇文件表根路徑(‘image table 1‘)
此實驗返回的結果是:\ \ SQL 1 \ SQL file \ image files \ image table 1。
4.視角
通過Windows資源管理器,您可以看到已經創建了壹個名為GUID的文件夾。
通過SQL Server Management Studio查看表的結構。
第四,操作
1.將文件添加到文件夾
添加文件A01。通過Windows資源管理器將GIF文件復制到文件夾\ \ SQL 1 \ SQL file \ image files \ image table 1。然後運行腳本:
select * from ImageTable1
結果如下:
可以看到SQL Server自動向表中添加了記錄。
2.重命名文件
運行以下腳本:
更新image table 1 set name =‘Cup。其中name =‘a 01。GIF
通過Windows資源管理器查看文件夾\ \ SQL 1 \ SQL file \ image files \ image table 1,我們可以看到文件A01。GIF已更名為Cup.GIF。
3.查看* * * Enjoy文件夾
我們可以繼續復制其他文件,然後通過Windows資源管理器查看文件夾。
4.刪除文件
您可以使用腳本來刪除,例如:
刪除ImageTable1,其中name =‘Cup。GIF
或者,直接通過Windows資源管理器刪除該文件。
動詞 (verb的縮寫)備份和恢復
1備份數據庫
使用SQL Server備份數據庫時,文件流數據將與數據庫中的結構化數據壹起備份。
2.部分備份
如果不想將文件流數據與關系數據壹起備份,可以使用部分備份來排除文件流文件組。
不及物動詞相關解釋
有關詳細信息,請參見/library/gg492086.aspx。
1、永遠在線
當包含FILESTREAM或FileTable數據的數據庫屬於AlwaysOn可用性組時:
FILESTREAM和FileTable函數接受或返回虛擬網絡名(VNN),而不是計算機名。有關這些函數的詳細信息,請參閱Filestream和FileTable函數(Transact-SQL)。
通過文件系統API對FILESTREAM或FileTable數據的所有訪問都應使用VNN而不是計算機名。
2.表分區
FileTable不支持分區。通過支持多個文件流文件組,在大多數方案中無需使用分區即可解決單純向上擴展的問題(與SQL 2008文件流不同)。
3.復制
FileTable不支持復制和相關功能,包括事務復制、合並復制、變更數據捕獲和變更跟蹤。
4.視角
您可以像創建任何其他表壹樣為FileTable創建視圖。但是,為FileTable創建的視圖有以下註意事項:
視圖沒有任何FileTable語義,也就是說,視圖中的列(包括“File Attribute”列)的行為類似於沒有任何特殊語義的常規視圖列,即使對於表示文件/目錄的行也是如此。
您可以基於可更新的視圖語義更新視圖,但是基礎表約束可能會拒絕更新,就像在表中壹樣。
通過將文件作為顯式列添加到視圖中,可以在視圖中顯示文件的路徑。例如:
將視圖MP3文件創建為SELECT列1,列2,GetFileNamespacePath()作為路徑,列3,…來自文檔