还原SharePoint 2013网站集时出现本机堆栈错误

时间:2015-09-28 05:57:27

标签: sharepoint sharepoint-2013 sitecollection

我有一个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

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

有人可以建议我们如何进行?

1 个答案:

答案 0 :(得分:0)

您可以尝试的几种方法:

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

可能安装了服务器修补程序,安装了SharePoint服务,安装了SQL修补程序,等待重新启动或您最初可能要排除的任何其他因素。然后执行备份和还原操作。这很容易从列表中删除(经常被忽视)。

2:匹配环境补丁级别

最好的&amp;建议的修复方法是确保您匹配SharePoint配置数据库版本和/或累积更新/修补程序级别以匹配这两种环境 - 您进行备份的环境可能与您要恢复的环境处于不同的修补程序级别补丁到。 (转到中央管理员 - &gt;系统设置 - &gt;管理此服务器场中的服务器,并验证是否有任何待处理操作。请确保不要使用版本来验证环境之间的任何版本不匹配

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

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

3:使用STSADM

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

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

4:内容数据库还原

尝试内容数据库备份和还原。在执行此操作之前,您可能需要检查中央管理员(查看所有网站集 - >>选择网站集并检查上安装它的内容数据库)所有网站集将受到影响如果您还原特定的内容数据库。您不希望丢失共享相同内容数据库的任何其他网站集。

5:编辑备份文件

不推荐 - 但像魅力一样

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

  

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

取得了成功

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

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

现在要知道要放在哪个版本号,您只需打开ULS日志(15 \ Logs {latestlogfile})并搜索文本&#34; 架构版本& #34 ;.你应该看到类似这样的消息:

  

无法从E:\ SiteCollection1.bak反序列化网站。   Microsoft.SharePoint.SPException:备份的架构版本   15.0.YYYY.YYYY与Microsoft.SharePoint.SPSite.Restore上的当前架构版本15.0.XXXX.XXXX不匹配(String filename,Boolean   isADMode,Boolean&amp; readOnlyMode,Boolean&amp; hadWriteLock)

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

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

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

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

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

我选择#1&amp;选项的成功率更高#5。选项#2是长期应该完成的事情。

您也可以在我的帖子here上阅读更多内容。