SharePoint 承擔着文件管理的工做,默認都是將它們以BLOB的數據形式存儲在內容數據庫當中;當文件大時,就很容易致使數據庫容量被這些BLOB數據所快速消耗,並且頻繁地對這些大數據量的BLOB數據進行讀寫訪問,很容易在SQL端形成性能瓶頸。 繼MOSS2007以後,SharePoint2010和2013可使用SQL Server 2008及其以上版本提供的Remote Blob Storage (RBS) 這一新特性,能夠將BLOB數據存儲在文件系統當中或者是存儲在其餘專門用於存儲BLOB數據的服務器上面。sql
示例採用sql server 2012 數據庫。系統 windows 2008R2 SP1 。數據庫
EXEC sp_configure filestream_access_level, 2 RECONFIGURE
use [WSS_Content] if not exists (select * from sys.symmetric_keys where name = N'##MS_DatabaseMasterKey##') create master key encryption by password = N'輸入密碼'
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
啓用RBS:windows
$cdb = Get-SPContentDatabase "WSS_Content" $rbss = $cdb.RemoteBlobStorageSettings $rbss.Installed() $rbss.Enable() $pvdName = $rbss.GetProviderNames()[0] $rbss.SetActiveProviderName($pvdName) $rbss.Migrate()//該命令能夠將SharePoint內容數據庫中原有的BLOB遷移到文件系統中 $rbss.MinimumBlobStorageSize = 1048000 //該命令用於設置存於文件系統中的文件最小值,當文件小於該值的時候,將仍是照常保存在數據庫中。 $cdb.Update()
垃圾回收機制 這篇文章已經說得很好了,能夠點擊閱讀服務器
一般咱們刪除文檔,並不是真的刪除,而是保存在SharePoint回收站裏,回收站有兩層,一層是用戶操做,能夠刪除或者還原,跟PC 電腦差很少;第二層是網站集回收站,通常須要管理員才能操做,這層刪除後,文件就不能經過sharepoint 還原了。ide
垃圾回收是一個持續緩慢的過程,能夠隔段時間查看存放文件的文件夾大小來判斷。工具
$cdb=Get-SPContentDatabase <ContentDbName> $rbs=$cdb.RemoteBlobStorageSettings $rbs.GetProviderNames() $rbs.SetActiveProviderName("") $rbs.Migrate() $rbs.Disable()
C:\Program Files\Microsoft SQL Remote Blob Storage 11.0\Maintainer\Microsoft.Data.SqlRemoteBlobs.Maintainer.exe" -connectionstringname RBSMaintainerConnection -operation GarbageCollection ConsistencyCheck ConsistencyCheckForStores -GarbageCollectionPhases rdo -ConsistencyCheckMode r -TimeLimit 120
exec mssqlrbs.rbs_sp_uninstall_rbs 0 ALTER TABLE [mssqlrbs_filestream_data_1].[rbs_filestream_configuration] DROP column [filestream_value] ALTER TABLE [mssqlrbs_filestream_data_1].[rbs_filestream_configuration] SET (FILESTREAM_ON = "NULL")
ALTER DATABASE yourdbname Remove file RBSFilestreamFile; ALTER DATABASE yourdbname REMOVE FILEGROUP RBSFilestreamProvider;