我们都知道SharePoint可以通过网站集备份还原的方式来恢复一个SharePoint完整集,这个办法非常简单。但是,当SharePoint网站集比较大的时候(如:数据库文件达到几十个G),网站集的备份虽然会比较慢不过基本上还能成功。但是,还原这个网站集基本是不太可能完成了。此时,我们可以通过SQL Server的备份还原功能来实现恢复一个网站集。

  1. 安装好SharePoint 2013服务器(注意如果有ServicePack和语言包安装);
  2. 安装好所需要的框架和项目wsp包;
  3. 创建网站集(注意站点资源限制),并激活解决方案及网站集和网站功能;
  4. 停用网站集所属web App的IIS缓冲池;
  5. 停用SharePoint 管理任务、爬网、任务计划和跟踪输出等服务;
  6. 从管理中心内容数据管理中停用内容数据库后,再删除内容数据库;
  7. 从数据库备份还原覆盖原内容数据库文件;
  8. 执行如下命令添加内容数据库(注意内容数据库名称和站点名称)
    Mount-SPContentDatabase -Name "WSS_Content" -WebApplication "http://localhost"
  9. 启动SharePoint服务,启用IIS缓冲池(注意项目的web.config配置,尤其是项目的安全控件项目)
  10. 如果是同一个SharePoint场通过该方法创建新的网站集,第8步会提示网站集ID已经存在的错误。可以参照下面数据库脚本修改网站集ID,下面脚本基于只有一个网站集的假设。
declare @OldSiteId uniqueidentifier
select @OldSiteId =id from allsites
print @OldSiteId 
declare @SiteID uniqueidentifier
set @SiteID=newid()

update allsites set id=@SiteID where id=@OldSiteId

update alldocs set siteid=@SiteID where siteid=@OldSiteId
update AllDocVersions  set siteid=@SiteID where siteid=@OldSiteId
update AllFileFragments set siteid=@SiteID where siteid=@OldSiteId
update AllLinks  set siteid=@SiteID where siteid=@OldSiteId
update AllLists  set tp_siteid=@SiteID where tp_siteid=@OldSiteId
update AllListsAux  set siteid=@SiteID where siteid=@OldSiteId
update AllListsItemCount set siteid=@SiteID where siteid=@OldSiteId
update AllListsPlus  set siteid=@SiteID where siteid=@OldSiteId
update AllListUniqueFields  set siteid=@SiteID where siteid=@OldSiteId
update AllLookupRelationships set siteid=@SiteID where siteid=@OldSiteId
update AllUserData  set tp_siteid=@SiteID where tp_siteid=@OldSiteId

update AllUserDataJunctions  set tp_siteid=@SiteID where tp_siteid=@OldSiteId
update AllWebParts  set tp_siteid=@SiteID where tp_siteid=@OldSiteId
update AllWebs  set siteid=@SiteID where siteid=@OldSiteId
update AppDatabaseMetadata  set siteid=@SiteID where siteid=@OldSiteId
update AppInstallationProperty  set siteid=@SiteID where siteid=@OldSiteId
update AppInstallations set siteid=@SiteID where siteid=@OldSiteId
update AppJobs  set siteid=@SiteID where siteid=@OldSiteId
update AppLifecycleErrors  set siteid=@SiteID where siteid=@OldSiteId
update AppPackages  set siteid=@SiteID where siteid=@OldSiteId
update AppPrincipalPerms  set siteid=@SiteID where siteid=@OldSiteId
update AppPrincipals set siteid=@SiteID where siteid=@OldSiteId
update appresources  set siteid=@SiteID where siteid=@OldSiteId
update AppRuntimeIcons set siteid=@SiteID where siteid=@OldSiteId
update AppRuntimeMetadata set siteid=@SiteID where siteid=@OldSiteId
update AppRuntimeSubstitutionDictionary  set siteid=@SiteID where siteid=@OldSiteId
update AppSourceInfo  set siteid=@SiteID where siteid=@OldSiteId
--update AppSubscriptionCosts set siteid=@SiteID where siteid=@OldSiteId
update AppTaskDependencies set siteid=@SiteID where siteid=@OldSiteId
update AppTasks set siteid=@SiteID where siteid=@OldSiteId
update AuditData set siteid=@SiteID where siteid=@OldSiteId
update BuildDependencies set siteid=@SiteID where siteid=@OldSiteId

update ContentTypes set siteid=@SiteID where siteid=@OldSiteId
update ContentTypeUsage set siteid=@SiteID where siteid=@OldSiteId
update CustomActions set siteid=@SiteID where siteid=@OldSiteId
update Deps set siteid=@SiteID where siteid=@OldSiteId
--update DiskWarningDate set siteid=@SiteID where siteid=@OldSiteId
update DocsToStreams set siteid=@SiteID where siteid=@OldSiteId
update DocStreams set siteid=@SiteID where siteid=@OldSiteId
update EventCache  set siteid=@SiteID where siteid=@OldSiteId
update EventReceivers  set siteid=@SiteID where siteid=@OldSiteId
update EventSubsMatches set siteid=@SiteID where siteid=@OldSiteId
update Features  set siteid=@SiteID where siteid=@OldSiteId
update FeatureTracking set siteid=@SiteID where siteid=@OldSiteId
update GroupMembership  set siteid=@SiteID where siteid=@OldSiteId
update Groups  set siteid=@SiteID where siteid=@OldSiteId
update HT_Cache set siteid=@SiteID where siteid=@OldSiteId
update ImmedSubscriptions  set siteid=@SiteID where siteid=@OldSiteId
update NameValuePair  set siteid=@SiteID where siteid=@OldSiteId
update NavNodes  set siteid=@SiteID where siteid=@OldSiteId
update Perms  set siteid=@SiteID where siteid=@OldSiteId
update Personalization set tp_siteid=@SiteID where tp_siteid=@OldSiteId

update RecycleBin  set siteid=@SiteID where siteid=@OldSiteId
update Resources set siteid=@SiteID where siteid=@OldSiteId
update RoleAssignment set siteid=@SiteID where siteid=@OldSiteId
update Roles  set siteid=@SiteID where siteid=@OldSiteId
update SchedSubscriptions set siteid=@SiteID where siteid=@OldSiteId
update ScheduledWorkItems set siteid=@SiteID where siteid=@OldSiteId
update SiteDeletion set siteid=@SiteID where siteid=@OldSiteId
update SiteHealthCheckResults set siteid=@SiteID where siteid=@OldSiteId
update SiteQuota set siteid=@SiteID where siteid=@OldSiteId
update SiteUpgradeSessions set siteid=@SiteID where siteid=@OldSiteId
update SiteUserSyncQueue set siteid=@SiteID where siteid=@OldSiteId
update SiteVersions set siteid=@SiteID where siteid=@OldSiteId
update SolutionFiles set siteid=@SiteID where siteid=@OldSiteId
update SolutionResourceUsageDaily set siteid=@SiteID where siteid=@OldSiteId
--update SolutionResourceUsageDailyOrdinal set siteid=@SiteID where siteid=@OldSiteId
update SolutionResourceUsageLog set siteid=@SiteID where siteid=@OldSiteId
update SolutionResourceUsageWindowed set siteid=@SiteID where siteid=@OldSiteId
update Solutions  set siteid=@SiteID where siteid=@OldSiteId
update StorageMetrics set siteid=@SiteID where siteid=@OldSiteId
update StorageMetricsChanges set siteid=@SiteID where siteid=@OldSiteId
--update TimerLock  set siteid=@SiteID where siteid=@OldSiteId
update userinfo	 set tp_siteid=@SiteID where tp_siteid=@OldSiteId
update WebMembers set siteid=@SiteID where siteid=@OldSiteId
update WebPartLists  set tp_siteid=@SiteID where tp_siteid=@OldSiteId
update WebsPlus set siteid=@SiteID where siteid=@OldSiteId
update Workflow  set siteid=@SiteID where siteid=@OldSiteId
update WorkflowAssociation set siteid=@SiteID     where siteid=@OldSiteId