這篇文章說明問題:
1、将文檔以檔案形式存儲的方式,微軟術語叫RBS(Remote Blob Storage)
2、如何配置RBS
最近在項目中客戶提出了一個要求,要将企業内的文檔檔案、視訊檔案和設計工程檔案等等統統放入到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 功能開啟。
<a href="http://s3.51cto.com/wyfs02/M01/2F/ED/wKiom1OijGGjPfHzAAKrmXoVaHI369.jpg" target="_blank"></a>
第二步,配置MOSS的内容資料庫的 BLOB 存儲:首先打開SQL Server Management Studio,找到内容資料庫(怎樣找内容資料庫,本章不再描述),建立查詢,然後依次執行如下的SQL script.
第一段腳本:
use [WSS_Content]
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'
第二段腳本:
(select groupname from sysfilegroups
where groupname=N'RBSFilestreamProvider')
alter database [WSS_Content]
add filegroup RBSFilestreamProvider contains filestream
第三段腳本:
use [WSS_Content]
add file (name = RBSFilestreamFile, filename =
'c:\Blobstore')
to filegroup RBSFilestreamProvider
在運作第二段腳本的時候,如果報“filestream 功能被禁用”這個錯誤,需要我們手工的運作腳本啟動FILESTREAM功能,
USE master
GO
EXEC sp_configure filestream_access_level, 2
RECONFIGURE
運作完這三段腳本,在伺服器的C槽下,将出現一個Blobstore檔案夾,如下圖,這樣第二步基本完成。
<a href="http://s3.51cto.com/wyfs02/M01/2F/ED/wKioL1OijDPB5YJKAAFpqfisE_o230.jpg" target="_blank"></a>
第三步,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執行個體進行替換。
<a href="http://s3.51cto.com/wyfs02/M00/2F/ED/wKiom1OijGKjyyqHAAKxuoayLNE573.jpg" target="_blank"></a>
第四步,啟用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
<a href="http://s3.51cto.com/wyfs02/M01/2F/ED/wKiom1OijGKB1rZXAAHNVvuWlCI557.jpg" target="_blank"></a>
看到這個界面,基本部署完成了,剩下的工作,就是測試部署的效果了,可以往MOSS2010 的文檔庫中上傳一下檔案,這個時候,你會發現,在Blobstore檔案夾下多出一些檔案,這些檔案就是剛剛上傳的檔案,但是,我們看不到檔案的名稱等等資訊,我們可以将檔案拷貝出來,給它加上字尾名,再打開,這個時候,就會發現,原來MOSS隻是将檔案的字尾名稱和檔案名稱去掉了,存在SQL資料庫中,主體的檔案實體放在了檔案夾中。到此,本實驗圓滿成功。
您的支援,我的動力!
本文轉自 yuxye 51CTO部落格,原文連結:http://blog.51cto.com/fishvsfrog/1428211