日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

在SharePoint 2010系统中安装RBS FILESTREAM Provider

發布時間:2025/3/20 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在SharePoint 2010系统中安装RBS FILESTREAM Provider 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在SharePoint 2010系統中安裝RBS FILESTREAM Provider

這兩天在研究怎么寫一個RBS Provider,可惜文檔實在是很缺乏,基本上除了一篇Spec之外,就只有SQL產品組寫的一個sample了。之后如果研究有結果,再整理成文章吧,現在先講講怎么直接安裝并使用RBS FILESTREAM Provider。

————– 胡言亂語與正文的分隔線 ——————–

如果使用SharePoint 2007作為文檔管理平臺,它很讓人詬病的一點就是,SharePoint 2007將文件本身直接存儲在SQL Server數據庫之中。雖然Windows SharePoint Services 3.0 SP1增加了一個External BLOB Storage(EBS)接口,但是微軟并沒有提供實現,而是需要開發人員自己來實現它。

SharePoint 2010仍然對EBS提供兼容,但并不推薦使用EBS,推薦的解決方案,乃是使用SQL Server 2008 Remote BLOB Storage(RBS)。

SQL RBS是一組API,通過RBS,一個SQL Server 2008數據庫就不再需要將大二進制數據(BLOB)存儲在數據庫內部,而是可以存儲到外面的某個地方,在數據庫里面可能只會存儲一個對外部BLOB數據的引用。SQL Server 2008和SQL Server 2008 R2都支持RBS。

聽起來RBS實在是一個很好的東東。但是(總是有但是),RBS僅僅是一組API,換句話說,RBS可以讓開發人員利用這組API,開發出一個RBS Provider,真正實現對BLOB數據的存取。如果沒有RBS Provider,RBS自己可不會自動的將BLOB存儲到某個指定的地方去。不同的RBS Provider,可以讓我們將BLOB存儲到文件系統、磁盤存儲設備、文件服務器等等各種地方,反正不繼續放到SQL Server數據庫里面就對了。

在你對RBS有了初步認識之后,我們接著介紹SQL Server 2008里面的另外一個新特性:FILESTREAM。下面這句話摘自SQL Server 2008聯機叢書:“通過將 varbinary(max) 二進制大型對象 (BLOB) 數據以文件形式存儲在文件系統上,FILESTREAM 使 SQL Server 數據庫引擎和 NTFS 文件系統成為了一個整體。”所以,FILESTREAM可以讓管理員選擇將SQL Server數據庫里面的varbinary(max)類型BLOB數據,存儲到本地NTFS文件系統上。在通過FILESTREAM對BLOB數據進行存取的時候,還能順便能夠享受到數據庫事務處理的好處。

聽起來,FILESTREAM和RBS很相似,是不是?但其實,RBS和FILESTREAM是兩個不同的東東,它們互不依賴。RBS是一組API接口,通過這組API,應用程序就能將BLOB數據存儲到數據庫之外的某個地方,具體實現由開發人員創建的RBS Provider來完成。FILESTREAM是SQL Server 2008內置的一個特性,它能將原本存儲在數據庫里面的BLOB數據,存儲到服務器本地的NTFS文件系統上。

SharePoint 2010所利用的,是RBS API,而并非FILESTREAM特性。所以,如果沒有一個RBS Provider,我們并不能馬上就將SharePoint 2010里面存儲的文件,存儲到數據庫之外的某個地方去。但是,既然FILESTREAM特性已經擁有了現成的將數據庫中的BLOB數據存儲到NTFS文件系統上的能力,為什么不能直接使用FILESTREAM,做一個RBS FILESTREAM Provider,也就是利用FILESTREAM的功能實現的一個RBS Provider呢?這樣,豈不是就能將SharePoint 2010中的文件,都存儲到NTFS文件系統上了嗎?

微軟也想到了,所以,微軟以特性包(Feature Pack)的形式,提供了一個RBS FILESTREAM Provider。你可以從這里下載x64版本的RBS FILESTREAM Provider。但是要在SharePoint 2010系統上安裝并使用它,也是需要按照一定的步驟來操作的。下面就是具體的操作步驟。

1、確定SQL Server 2008已經啟用了FILESTREAM

在安裝SQL Server 2008時,會有一個步驟提示是否安裝FILESTREAM。如果你不確定是否安裝了此特性,從SQL Server 2008服務器上打開SQL Server配置管理器,從左邊選中"SQL Server 服務",然后從右邊的窗格中用鼠標右鍵點擊運行的SQL Server實例,選擇"屬性"菜單項。

?

在打開的屬性窗口中,選擇"FILESTREAM"選項卡,然后選中啟用FILESTREAM的選擇框,點擊"確定"按鈕。

打開SQL Server Management Studio,選中左側的SQL Server實例,然后點擊工具欄區域的"新建查詢",打開一個查詢界面,然后在里面輸入下面的SQL語句并執行。

EXEC sp_configure filestream_access_level, 2
RECONFIGURE


2、確定要應用RBS FILESTREAM Provider的內容數據庫

由于RBS是基于數據庫為單元來啟用的,所以你可以選擇在哪些SharePoint內容數據庫上啟用RBS。這意味著,對于SharePoint服務器場里面那些存儲文件數量并不多的內容數據庫,可能并沒有必要為它啟用RBS,而那些可能會存儲大量文件的內容數據庫,則可以啟用RBS,有效的優化它們。

SharePoint 2010系統中,內容數據庫與網站的關系是:

 ● 一個Web應用程序可以使用一個或多個內容數據庫;
 ● 在新建Web應用程序時,會為其自動創建一個內容數據庫,管理員可以稍后為此Web應用程序創建更多的內容數據庫;
 ● 在Web應用程序中創建一個網站集時,這個網站集會被存儲到Web應用程序的某個內容數據庫中;
 ● 一個網站集(包括其所包含的首要網站和所有子網站),只能被存儲在一個內容數據庫中,而不能被分拆存儲到多個內容數據庫中。

管理員可以打開SharePoint 2010管理中心的內容數據庫管理界面,查看每個Web應用程序所使用的內容數據庫,或是為某個Web應用程序添加新的內容數據庫。

在下面的示范操作中,我們就為上圖中所示的這個名為"WSS_Content"的內容數據庫,啟用RBS。

3、配置內容數據庫

在確定了要啟用RBS的內容數據庫之后,打開SQL Server 2008 Management Studio,找到這個內容數據庫,用鼠標右鍵點擊并選擇"新建查詢"菜單項。

?

在打開的查詢窗口中,輸入下面這些SQL語句并執行。

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′

use [WSS_Content]
if not exists (select groupname from sysfilegroups where
groupname=N’RBSFilestreamProvider’) alter database [WSS_Content]
add filegroup RBSFilestreamProvider contains filestream

use [WSS_Content]
alter database [WSS_Content] add file (name = RBSFilestreamFile,
filename = ‘c:blobstore‘) to filegroup RBSFilestreamProvider

在上面這些SQL指令中,標記為綠色的,是你在復制了這些指令后,需要按照你的環境中的實際情況,需要修改的部分。"WSS_Content"需要修改為你要啟用RBS的內容數據庫的實際名稱。"c:blobstore"要修改成你希望用來存放BLOB文件的文件夾路徑。從實踐角度出發,你需要選擇一個位于非系統分區、剩余空間大、速度快、穩定可靠的文件夾。注意,這個文件夾只能是一個本地路徑,而不能是網絡路徑,因為FILESTREAM不支持遠程NTFS文件夾。另外,這個文件夾也不要事先建立好,上面的SQL指令會自動幫你將這個文件夾創建出來。

上述SQL語句執行完畢之后,可以打開資源管理器,確認在SQL Server服務器上,相應的文件夾已經創建成功。

4、安裝RBS FILESTREAM Provider

將下載到的RBS_x64.msi文件復制到SharePoint服務器場中的每一臺服務器上,所有的SQL Server數據庫服務器和SharePoint服務器上都必須安裝此RBS Provider。

先在SQL Server數據庫上和SharePoint服務器上(如果服務器場中有多臺SharePoint服務器,則在一臺Web前端服務器上),安裝RBS FILESTREAM Provider,安裝步驟如下。

以管理員身份運行命令提示符。

在命令提示符窗口中,使用"cd"指令將當前路徑設置為"RBS_x64.msi"所在的文件夾,然后輸入下面這行指令并執行:

msiexec /qn /lvx* rbs_install_log.txt /i RBS_X64.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="WSS_Content" DBINSTANCE="sp2010" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1

上面指令中用綠色標注的部分,是需要按照你的環境中的實際情況進行修改的部分。"WSS_Content"需要修改為需要啟用RBS的內容數據庫,"sp2010"需要修改為實際的SQL Server 2008實例名稱(如果在安裝SQL Server 2008時,你沒有使用默認實例名稱,那么它的值可能類似"sp2010express"這樣的格式)。對每個內容數據庫,都只應該使用msiexec.exe執行一次這條指令。

在你敲入了上面這行很長的指令并敲下回車之后,命令提示符窗口看起來會立即執行完成,但實際上,后臺會繼續執行RBS Provider的安裝程序。你可以打開Windows任務管理器,應該會看到有好幾個msiexec.exe進程在執行中。過上一會兒,任務管理器中就不會再顯示有幾個msiexec.exe在運行(在我的環境中仍會剩下一個另外的msiexec.exe進程),這表明RBS Provider安裝過程已經完成。

在RBS Provider安裝過程中,它會將log信息寫入與"RBS_x64.msi"安裝文件同目錄的"rbs_install_log.exe"文件。從資源管理器中打開這個log文件,搜索其中是否有如下"Installation completed successfully"之類的信息,這些信息表示"RBS_x64.msi"的安裝是成功的。

如果在你的SharePoint服務器場中,只有一臺SharePoint服務器,那么按照上面的描述,在它上面安裝完RBS FILESTRREAM Provider就完事了。但是如果服務器場中存在多臺SharePoint服務器,那么就需要繼續在其他的Web前端服務器和應用服務器上,安裝RBS FILESTREAM Provider,不過,命令提示符里面的指令需要換成:

msiexec /qn /lvx* rbs_install_log.txt /i RBS_X64.msi DBNAME="WSS_Content" DBINSTANCE="sp2010" ADDLOCAL="Client,Docs,Maintainer,ServerScript,FilestreamClient,FilestreamServer"

在RBS FILESTREAM Provider安裝到所有服務器上之后,打開SQL Server 2008 Management Studio,刷新內容數據庫的Table列表,應該會看到多出來許多名稱以"mssqlrbs"開頭的,與RBS有關的Table。如果在查詢窗口中執行下面的SQL語句,也應該能查詢出一些結果。

select * from dbo.sysobjects where name like ‘rbs%’

如果在內容數據庫中并沒有上面這些Table,運行上面的SQL語句也查詢不出任何結果,那么表明RBS Provider并沒有正確安裝到內容數據庫上。如果真是這樣,在每臺服務器上,打開資源管理器,雙擊"RBS_x64.msi",然后在出現的安裝界面中,使用"卸載"選項先將RBS Provider卸載掉,然后再按照上面的步驟,重新在命令提示符窗口中嘗試安裝它。

5、為內容數據庫啟用RBS FILESTREAM Provider

終于到了最后一個步驟。在SharePoint服務器上,打開SharePoint 2010 Management Shell,這是一個基于Windows Powershell的命令行管理工具。

在SharePoint 2010 Management Shell中,依次執行下面的指令:

(1) $cdb = Get-SPContentDatabase "WSS_Content"
獲取到指定的內容數據庫(SPContentDatabase)對象實例,綠色所標注的"WSS_Content"需要更換成在你的環境中,實際的內容數據庫名稱。

(2) $rbss = $cdb.RemoteBlobStorageSettings
獲取內容數據庫的RBS設置(SPRemoteBlobStorageSettings)對象實例。

(3) $rbss.Installed()
檢查在內容數據庫上是否安裝了RBS,如果需要,更新相應的屬性值。

(4) $rbss.Enable()
在內容數據庫上啟用RBS。

(5) $pvdName = $rbss.GetProviderNames()[0]
獲取第一個注冊到內容數據庫上的RBS Provider的名稱。

(6) $rbss.SetActiveProviderName($pvdName)
為內容數據庫設置要激活的RBS Provider。

然后,你可以執行"$rbss"來查看它的一些屬性值,如果設置正確,它輸出的內容應該如上圖所示。

如果你啟用RBS FILESTREAM Provider的內容數據庫中,已經存儲了一個網站集,那么在你啟用了RBS Provider之后,網站集里面的文檔,并不會自動的馬上通過FILESTREAM,轉存到NTFS文件系統上。只有新增的文檔才會被存儲到NTFS文件系統上,網站集里面之前上載的文檔,仍然會保存在內容數據庫里面。如果你希望現在將那些舊的文檔,統統轉存到我們所指定的NTFS文件系統中,那么可以繼續在SharePoint 2010 Management Shell中執行下面這個指令:

(7) $rbss.Migrate()

如果你希望設置一個文檔大小閾值,只有大小超過此閾值的文檔,才通過RBS FILESTREAM Provider存儲到NTFS文件系統上,而小于此閾值的文檔,仍然存儲在內容數據庫中,那么可以在SharePoint 2010 Management Shell中繼續執行下面的指令(假設閾值是1048000字節,也就是1M):

(8) $rbss.MinimumBlobStorageSize = 1048000
(9) $rbss.Update()

上面的這些指令,都是針對一個內容數據庫的。如果你有多個內容數據庫要啟用RBS,那么就對每個內容數據庫都執行一遍上述指令。

6、檢查最終效果

在完成了上述所有操作步驟之后,在SharePoint網站中上載一些文檔,然后檢查你所設定的NTFS文件夾,里面應該會包含有一些子文件夾,存儲著這些文檔。

參考鏈接
Jie Li’s Geek World

Enjoy RBS !

轉載于:https://www.cnblogs.com/mybi/archive/2011/04/07/2007824.html

總結

以上是生活随笔為你收集整理的在SharePoint 2010系统中安装RBS FILESTREAM Provider的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。