【问题标题】:Failing to export web from SharePoint无法从 SharePoint 导出网站
【发布时间】:2016-03-11 18:19:03
【问题描述】:

我正在尝试从 SharePoint 2010 导出网站,通过 powershell 从根网站集中导出,并且每个 Export-SPWeb 命令都失败并显示此消息。

Export-SPWeb : String or binary data would be truncated.
The statement has been terminated.

我测试过的任何网站集中的任何网站都会发生这种情况,而不仅仅是网络应用程序根目录。

据我了解,这是一个错误,表明 URL 的长度超过 260 个字符。但是,即使站点中没有文件,也会发生这种情况。如果相关,地址的 FQDN 为 28 个字符。

这是我尝试过的一个实际示例(当然使用不同的主机名)。

> new-spweb http://sharepoint.example.com/a

Url
---
http://sharepoint.example.com/a

> export-spweb http://sharepoint.example.com/a -path "a.cmp"
Export-SPWeb : String or binary data would be truncated.
The statement has been terminated.
At line:1 char:13
+ export-spweb <<<<  http://sharepoint.example.com/a -path "a.cmp"
    + CategoryInfo          : InvalidData: (Microsoft.Share...CmdletExportWeb:SPCmdletExportWeb) [Export-SPWeb], SqlException
    + FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletExportWeb

有谁知道发生这种情况的原因,以及由于错误消息似乎不正确而可能如何解决?

【问题讨论】:

  • 该 cmdlet 应在与导出包相同的位置生成一个导出日志文件。您是否检查过日志文件以查看它是否提供了更多信息?您可能还想尝试使用 different parameters 运行它,例如 -NoFileCompression 和 -Force
  • 抱歉耽搁了,我确实试过了。但是,它似乎在今天早上应用最新的 CU 后立即修复。可能是已修复的未记录错误。如果所有测试都成功,我会解决这个问题。
  • 最新的 CU 出现后也会出现同样的错误。

标签: powershell sharepoint sharepoint-2010


【解决方案1】:

在我们的案例中,解决此问题的方法似乎是将网站集备份并还原到新创建的网站集。在我们的目标中,我们使用Export-SPWeb 将一个大型网站集拆分为多个网站集,然后再将Import-SPWeb 拆分为新的家庭。

实际上,这就是我们所做的,以防它帮助遇到同样神秘问题的其他人。

首先确保主网站集备份的新 URL 不会导致它们超过 260 个字符的限制。如果超过 260 个字符,您仍然可以使用 Backup-SPSite,但使用 Restore-SPSite 将无法恢复。

example found on Microsoft forums 做了一些小的修改。这里的新网站集是sites/NewSC

declare @oldSiteCollection nvarchar(20) = N'sites/old'
declare @newSiteCollection nvarchar(20) = N'sites/NewSC'

SELECT
   concat([DirName], N'/', [LeafName]) AS [FullRelativePath],
   len(concat(@newSiteCollection, [DirName], N'/', [LeafName])) - len(@oldSiteCollection) AS [Length]
FROM 
   [dbo].[AllDocs]
where
    [DirName] not like 'sites/%'
    and len(concat(@newSiteCollection, [DirName], N'/', [LeafName])) - len(@oldSiteCollection) > 260
ORDER BY 
   [FullRelativePath] desc

此查询将列出在以下命令成功之前要处理的事情。您不希望在备份/恢复之前从查询中返回任何结果。

接下来在主网站集上添加Backup-SPSite

Backup-SPSite http://sharepoint.example.com/sites/old -Path e:\old.bak

之后Restore-SPSite 到新位置

Restore-SPSite http://sharepoint.example.com/sites/NewSC -Path e:\old.bak

在整个操作之后,Export-SPWeb 按预期工作。

如果我不得不猜测为什么会发生此问题,可能是因为我们自 SharePoint 2003 以来一直在使用相同的内容数据库。从 2003 年到 2007 年到 2010 年的这些年升级可能会对这些数据库产生影响。

考虑到这一点,将Move-SPSite 用于新的内容数据库也无法解决此问题。经过数周的各种尝试,唯一奏效的就是上述方法。

【讨论】:

    猜你喜欢
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    相关资源
    最近更新 更多