最近在項目中客戶提出了一個要求,要將企業內的文檔文件、視頻文件和設計工程文件等等統統放入到MOSS2010中。這樣MOSS系統將成為一個文件管理的大容器,即在統一的企業門戶平台內,實現現有企業的文檔統一管理的信息化需求。
針對這一需求,微軟的MOSS2010 提供了一個套RBS(Remote Blob Storage)對大文件的存儲解決方法。在 MOSS 2010 中,二進制大型對象 (BLOB) 是一個文件,在默認情況下,這些 BLOB(又稱為非結構化數據)與元數據或結構化數據 一起內嵌存儲在 MOSS2010 內容數據庫中。因為 BLOB 可能非常大,所以將 BLOB 數據從 SQL Server 數據庫移動到商用或內容可尋址存儲中可能很有幫助,為此,微軟的MOSS2010 提供了 RBS,在MOSS2007的時候,微軟也提供過類似的借口。
閑話少說,開始進行逐步的進行配置(有圖有真相,哈哈!),整個過程可以大概的分為四個步驟:
第一步,配置SQL2008的FILESTREAM 功能 :默認情況下,FILESTREAM 功能已在您安裝 SQL Server 2008 時安裝,但未啟用它。您必須在運行 SQL Server 2008(承載 SharePoint Server 2010 數據庫)的計算機上啟用並配置 FILESTREAM。打開SQL服務配置向導,找到SQL服務運行實例,右鍵屬性,如下圖,設置好后,這樣第一步驟就完成了,我們將SQL的 FILESTREAM 功能開啟。
第二步,配置MOSS的內容數據庫的 BLOB 存儲:首先打開SQL Server Management Studio,找到內容數據庫(怎樣找內容數據庫,本章不再描述),新建查詢,然后依次執行如下的SQL script.
第一段腳本:
if not exists
( select * from sys.symmetric_keys
where name = N ' ##MS_DatabaseMasterKey## ')
create master key encryption by password = N ' Admin Key Password !2#4 '
第二段腳本:
if not exists
( select groupname from sysfilegroups
where groupname=N ' RBSFilestreamProvider ')
alter database [WSS_Content]
add filegroup RBSFilestreamProvider contains filestream
第三段腳本:
alter database [WSS_Content]
add file (name = RBSFilestreamFile, filename =
' c:\Blobstore ')
to filegroup RBSFilestreamProvider
在運行第二段腳本的時候,如果報“filestream 功能被禁用”這個錯誤,需要我們手工的運行腳本啟動FILESTREAM功能,
GO
EXEC sp_configure filestream_access_level, 2
RECONFIGURE
運行完這三段腳本,在服務器的C盤下,將出現一個Blobstore文件夾,如下圖,這樣第二步基本完成。
第三步,MOSS的Web服務器上安裝 RBS ,首先我們需要從微軟網站下載一個軟件,RBS_x64.msi ,下載地址如下:http://go.microsoft.com/fwlink/?linkid=165839&clcid=0x804
打開命令行,運行如下的命令,見如下貼圖,大約等上一分鍾左右,命令行將運行完成,運行完成后命令行沒有任何提示,但是,你可以在數據中發現增加了許多新mssqlrbs_為表名頭的的表,這說明運行成功了。為了大家以后使用方便使用,我把命令行拷貝出來,如下:
msiexec /qn /lvx* rbs_install_log.txt /i RBS-x64.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="WSS_Content" DBINSTANCE="DBInstanceName" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1
“DBInstanceName”是服務器SQL的實例名稱,需要根據你安裝的SQL實例進行替換。
第四步,啟用MOSS內容數據庫的 RBS,特別說明的是,RBS只能使用 PowerShell 啟用它,微軟現在將 MOSS2010 產品與 PowerShell 緊密結合,將逐步取締命令行的方式。話歸正題,我們將運行如下的PowerShell命令,也可以逐步一行一行的運行,運行效果如下圖,為了以后使用方便,我將命令行命令貼在如下:
$cdb = Get-SPContentDatabase WSS_Content
$rbss = $cdb.RemoteBlobStorageSettings
$rbss.Installed()
$rbss.Enable()
$rbss.SetActiveProviderName($rbss.GetProviderNames()[ 0])
$rbss
看到這個界面,基本部署完成了,剩下的工作,就是測試部署的效果了,可以往MOSS2010 的文檔庫中上傳一下文件,這個時候,你會發現,在Blobstore文件夾下多出一些文件,這些文件就是剛剛上傳的文件,但是,我們看不到文件的名稱等等信息,我們可以將文件拷貝出來,給它加上后綴名,再打開,這個時候,就會發現,原來MOSS只是將文件的后綴名稱和文件名稱去掉了,存在SQL數據庫中,主體的文件實體放在了文件夾中。到此,本實驗圓滿成功。