1

我有一个 SharePoint 2013 网站集备份,我正在尝试在另一个 SharePoint 2013 网站集上恢复此备份。两个 SharePoint 网站都在同一个域中。但是当我尝试从备份中恢复网站集时,我收到一个错误,因为 -

Restore-SPSite : <nativehr>0x80070003</nativehr><nativestack></nativestack>
At line:1 char:1
+ Restore-SPSite-Identity http://ksptestinst2:9999 -Path
"E:\SiteBackup\BackupSPS ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
    + CategoryInfo          : InvalidData: (Microsoft.Share...dletRestoreSite:
   SPCmdletRestoreSite) [Restore-SPSite], DirectoryNotFoundException
    + FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletRestoreS
   ite

我用来恢复网站集备份的命令是 -

Restore-SPSite -Identity http://ksptestinst2:9999 -Path "E:\SiteBackup\BackupSPSite.bak" -Force

我尝试使用

Restore-SPSite -Identity "http://ksptestinst2:9999/" -Path "E:\SiteBackup\BackupSPSite.bak" -Force -DatabaseServer KSQL2012SP\SQL
TESTDB -DatabaseName WSS_Content_KSPTESTINST2_9999

但是两个命令都给出了相同的错误。

谁能建议我们如何进行?

4

1 回答 1

1

您可以尝试的几种方法:

1:在两台服务器上运行 SharePoint 配置向导

可能安装了服务器补丁、安装了 SharePoint 服务、安装了 SQL 补丁、挂起的重新启动或您最初可能希望排除的任何其他因素。然后执行备份和恢复操作。这是一个很容易从列表中划掉的选项(经常被忽视)。

2:匹配环境补丁级别

最佳和推荐的修复方法是确保您匹配 SharePoint 配置数据库版本和/或累积更新/补丁级别以匹配这两个环境 - 您进行备份的环境可能与您所在的环境处于不同的补丁级别将补丁恢复到。(转到 Central Admin –> System Settings –> Manage Servers in this Farm 并验证是否有任何待处理的操作。不要保留版本以验证环境之间的任何版本不匹配

在同一页面中,仔细检查您是否没有看到针对任何这些服务器提到的任何“需要升级”。如果此处提及,请确保在继续之前运行 SP 配置向导。

一旦情况看起来不错,并且您已经比较了版本,请从 Microsoft 下载最新的 KB 并安装它们以匹配 SharePoint 配置数据库架构版本。执行所有服务器修复和 CU(累积更新)安装。请记住为每个 CU 运行配置向导。

3:使用 STSADM

这是一个非常有趣的解决方法。但有时我觉得“老是金”。启动您的 SP 管理控制台并尝试使用旧的 STSADM 命令行执行恢复操作。有时,当新的 powershell commandlet 失败时,stsadm 对我有用。

stsadm –o restore –url "site url" -filename "backup filename"

4:内容数据库恢复

尝试内容数据库备份和恢复。在执行此操作之前,您可能需要检查 Central Admin(查看所有网站集 -> 选择网站集并检查安装它的内容数据库),如果您恢复特定的内容数据库,所有网站集都会受到影响。您不希望丢失共享同一 Content DB 的任何其他网站集。

5:编辑备份文件

不推荐 - 但像魅力一样工作

这是您可以尝试的快速而不整洁的修复之一。首先,在 Notepad++ 中打开备份文件(从 Backup-SPSite 命令获得的文件)。或任何其他文本编辑器;尽管避免记事本)。使用特殊字符可能看起来很有趣,但现在忽略所有这些。

如果文件太大而无法在 Notepad++ (>100MB) 中打开,您可以使用任何标准的文件拆分器程序将文件拆分为多个较小的文件,例如 10 MB。我在FFSJ上取得了成功

当您在 Notepad++ 中编辑文件(如果已拆分文件,请打开第一个拆分文件)并查找类似于 15.0.XXXX.XXXX 的版本号。它应该出现在开头几行的某处。

不要修改任何其他内容。有趣的是,这是 Restore-SPSite Commandlet 最初检查的版本号。如果它看到服务器版本与备份版本不同,它只会抛出错误

现在要知道将哪个版本号放在那里,您所要做的就是打开您的 ULS 日志 (15\Logs{latestlogfile}) 并搜索文本“架构版本”。您应该会看到与此类似的消息:

无法从 E:\SiteCollection1.bak 反序列化站点。Microsoft.SharePoint.SPException:备份 15.0.YYYY.YYYY 的架构版本与 Microsoft.SharePoint.SPSite.Restore 的当前架构版本 15.0.XXXX.XXXX 不匹配(字符串文件名,布尔 isADMode,布尔和 readOnlyMode,布尔和 hadWriteLock)

如果您无法在日志中找到上述消息,那么问题可能是其他问题,并且很少/没有机会让此选项起作用

如果您成功找到错误消息,请从上述 ULS 错误消息中选择它所期望的版本号,并在您在 Notepad++ 中编辑的备份文件中更新版本号。保存。如果您使用文件拆分器工具拆分文件,请将文件合并回单个备份文件。

现在使用新的备份文件运行 restore 命令,看看它是否有效。

Restore-SPSite -Identity {{SiteCollectionURL}} -Path "E:\SiteCollection1-New.bak" -Force

这些只是您可以尝试的几个选项(不是详尽的列表,但希望是一个好的开始)。

使用选项#1 和#5,我有更大的成功概率。选项#2 是从长远来看应该做的事情。

您也可以从我的帖子中阅读更多关于此的内容

于 2017-03-01T07:40:37.827 回答