【问题标题】:native stack error while restoring SharePoint 2013 site collection还原 SharePoint 2013 网站集时出现本机堆栈错误
【发布时间】:2015-12-25 07:29:23
【问题描述】:

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

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

谁能建议我们如何进行?

【问题讨论】:

  • 尝试不使用 -Identity .... 然后检查 ULS 日志中的内容....
  • 尝试按照您的建议删除 -identity 。现在它说 - 对 SSPI 的调用失败。 (错误与前一个相同)

标签: sharepoint sharepoint-2013 sitecollection


【解决方案1】:

您可以尝试的几种方法:

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

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

2:匹配环境补丁级别

最佳和推荐的修复方法是确保您匹配 SharePoint 配置数据库版本和/或累积更新/补丁级别以匹配这两个环境 - 您进行备份的环境可能与您要将补丁恢复到的环境。 (Goto 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}) 并搜索文本“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 错误消息中选择预期的版本号,并更新您在 Notepad++ 中编辑的备份文件中的 VERSION NUMBER ONLY。保存。 如果您使用文件拆分器工具拆分文件,请将文件合并回一个备份文件。

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

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

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

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

您也可以从我的帖子here 中了解更多信息。

【讨论】:

  • 第 5 步...我同意不推荐... > 做一些修复-> 构建包...这个解决方案是最好的。节省了我很多工作时间...谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 2019-12-16
  • 1970-01-01
相关资源
最近更新 更多