代码改变世界

SharePoint 2019 拆分网站集体内的子站点到不同的内容数据库

2022-09-14 10:21  四毛的家  阅读(157)  评论(0编辑  收藏  举报

SharePoint 是一个网站集体对应一个内容数据库;一个内容数据库可以存放多个网站集体。

我遇到的是一个网站集,下面多个子站点,每个子站点对应一个部门。结果就是这些部门的数据其实放在一个内容数据库里。导致内容数据库越来越大,已经超过1T了。

越来越大的内容数据库,导致访问速度极慢。为了彻底解决这个问题,只能拆分子站点到其他网站集,也就是到另外一个内容数据库。

要求就是:数据不能丢失,权限要保持不变。

我的方案是:PowerShell + 第三方工具ShareGate

步骤如下:

【1】首先新建内容数据库,然后新建网站集,确保新的网站集在新的内容数据库里。

使用命令创建内容数据库:New-SPContentDatabase -Name "WSS_Content_xxxx" -DatabaseServer "SP-DATA" -WebApplication 'http://sp2019-web'

使用命令迁移网站集到指定内容数据库:Move-SPSite 'http://sp2019-web/xxx' -DestinationDatabase 'WSS_Content_xxxx'

【2】使用ShareGate迁移

此工具收费,但有15天试用期。但在试用期内迁移文档库会随机跳过项,目的还是为了逼迫你购买。

我使用此工具主要是为了迁移权限,用户组,权限级别。所以无妨。

至于使用方法,可以自行研究。

【3】导出子站点文档库,然后再新的网站集内的子站点导入。

导出:

Export-SPWeb -identity http://sp2019-web/网站集/子站点 -ItemUrl /网站集/子站点/文档库路径 -Path C:\data\xxxxx.cmp -IncludeVersions All -IncludeUserSecurity -NoFileCompression 

导入:

Import-SPWeb http://sp2019-web/新网站集/新子站点 -Path C:\data\xxxxx.cmp -IncludeUserSecurity -Force -NoFileCompression -UpdateVersions Overwrite

原计划是直接导出子站点,但是在我导入的过程中总是报:System Roles Canot be update。这大概是我修改过系统自带权限等级的原因,经过验证始终无法解决。所以被迫使用了ShareGate来解决权限的问题。

【4】关点旧的子站点权限。

注意迁移后链接肯定变化了,所以原来分享出去的链接肯定不能用了。