还原SharePoint 2013网站集时发生本机堆栈错误

还原SharePoint 2013网站集时发生本机堆栈错误,sharepoint,sharepoint-2013,sitecollection,Sharepoint,Sharepoint 2013,Sitecollection,我有一个SharePoint 2013网站集备份,我正在尝试在另一个SharePoint 2013网站集上还原此备份。两个SharePoint网站位于同一域上。但是,当我尝试从备份还原网站集时,我得到一个错误,即- Restore-SPSite : <nativehr>0x80070003</nativehr><nativestack></nativestack> At line:1 char:1 + Restore-SPSite-Identity

我有一个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 -DatabaseServer KSQL2012SP\SQL
TESTDB -DatabaseName WSS_Content_KSPTESTINST2_9999
但这两个命令都给出了相同的错误


有人能建议我们如何进行吗?

您可以尝试以下几种方法:

1:在两台服务器上运行SharePoint配置向导 可能安装了服务器修补程序、SharePoint services、SQL修补程序、挂起的重新启动或任何其他您可能希望在开始时排除的因素。然后执行备份和恢复操作。这是一个容易划掉的列表(经常被忽略)

2:匹配环境补丁级别 建议的最佳修复方法是确保您匹配SharePoint配置数据库版本和/或累积更新/修补程序级别,以匹配这两个环境—从中进行备份的环境可能与要将修补程序还原到的环境处于不同的修补程序级别。(转到管理中心–>系统设置–>管理此服务器场中的服务器,并验证是否存在任何挂起的操作。保留版本以验证环境之间的任何版本不匹配)

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

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

3:使用STSADM 这是一个非常有趣的解决方法。但有时我觉得“老是金”。打开SP管理控制台的电源,并尝试使用旧的STSADM命令行执行恢复操作。有时,当新的powershell commandlets失败时,stsadm为我工作

stsadm –o restore –url "site url" -filename "backup filename"
4:内容数据库还原 尝试内容数据库备份和还原。在执行此操作之前,您可能希望签入管理中心(查看所有网站集–>选择网站集并检查其上安装的内容数据库),了解如果还原特定的内容数据库,所有网站集将受到哪些影响。您不希望丢失共享同一内容数据库的任何其他网站集

5:编辑备份文件 (不推荐使用-但效果很好)

这是你可以尝试的快速而不整洁的修复方法之一。首先,在记事本++中打开备份文件(从backup SPSite命令获得的文件)。(或任何其他文本编辑器;但要避免使用记事本)。特殊角色可能看起来很有趣,但暂时忽略所有这些

如果文件太大,无法在记事本++(>100MB)中打开,则可以使用任何标准文件拆分程序将文件拆分为多个较小的文件,例如10MB。我在这方面取得了成功

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

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

现在要知道放在那里的版本号,只需打开ULS日志(15\logs{latestlogfile})并搜索文本“schema version”。您应该会看到类似的消息:

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

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

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

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

Restore-SPSite -Identity {{SiteCollectionURL}} -Path "E:\SiteCollection1-New.bak" -Force
这些只是您可以尝试的几个选项(不是详尽的列表,但希望是一个好的开始)

我使用选项1和选项5成功的可能性更大。从长远来看,选项2是应该做的事情


你也可以从我的帖子中读到更多关于这方面的内容。

尝试使用out-Identity。。。。然后检查ULS日志,看看上面写的是什么……按照您的建议,尝试删除-identity。现在它说-对SSPI的调用失败了。(错误与前一步相同)第5步。。。我同意不建议。。。但是,如果您正在开发环境中工作,并且备份的版本更高,那么您的本地开发场和您只需要恢复->执行一些修复->构建包。。。这个解决方案是最好的。节省了我很多工作时间。。。谢谢:)
Restore-SPSite -Identity {{SiteCollectionURL}} -Path "E:\SiteCollection1-New.bak" -Force