内容部署的最佳实践 (SharePoint Server 2010)

 

适用于: SharePoint Server 2010

上一次修改主题: 2016-11-30

本文是 Microsoft SharePoint Server 2010 最佳实践系列文章之一,介绍了使用内容部署的最佳实践。有关内容部署的其他信息和资源,请参阅 SharePoint Server 2010 中的 Web 内容管理 (https://technet.microsoft.com/zh-cn/sharepoint/ff601874.aspx)。

有关本系列中的更多文章,请参阅最佳实践 (SharePoint Server 2010)。有关 SharePoint Server 2010 最佳实践的其他信息和资源,请参阅 SharePoint Server 2010 资源中心最佳实践(该链接可能指向英文页面) (https://technet.microsoft.com/zh-cn/sharepoint/hh189420.aspx)(该链接可能指向英文页面)。

1. 确保源服务器场和目标服务器场具有相同的更新

仅当源服务器与目标服务器上的更新级别相同时才支持内容部署。为了帮助确保内容部署作业成功完成,请遵循以下准则:

  • 确保服务器场中的所有服务器已应用所有最新的 SharePoint Server 2010、Windows Server 2008 R2 和 Windows Server 2008 SP2 更新。

    如果修补程序版本更改了导出包的架构,从而使源服务器的更新级别高于目标服务器的更新级别,则具有不同更新级别的服务器之间的内容部署作业可能会失败。这适用于使用管理中心网站或使用 Windows PowerShell Export-SPWebImport-SPWeb cmdlet 运行的内容部署作业。

  • 源网站集中使用的语言包还必须安装在目标服务器场中。如果目标服务器场中缺少必需的语言包,则内容部署作业会失败。有关详细信息,请参阅部署语言包 (SharePoint Server 2010)

  • 如果源服务器上有自定义代码或自定义 SharePoint 解决方案包,则还必须在目标服务器上部署这些项。这包括未包含在 .wsp 文件中的任何程序集,该程序集必须安装在目标服务器上的全局程序集缓存中。

  • 如果在源服务器上安装了某些功能,则在运行将内容部署到目标服务器的内容部署作业之前,还必须在目标服务器上安装(但不激活)这些功能。一般而言,部署解决方案包时应将所有功能安装到目标服务器。但是,如果未使用 .wsp 文件,则应确保安装所有功能但不激活。

    在目标服务器上进行导入的过程中,导入中包含的项目所需的任何网站集功能都会被激活。如果内容部署作业需要的功能未在目标服务器上安装,则该作业会失败。有关详细信息,请参阅内容部署 - 最佳实践(该链接可能指向英文页面) (https://blogs.technet.com/b/stefan\_gossner/archive/2009/01/16/content-deployment-best-practices.aspx)(该链接可能指向英文页面) 中的“问题 9:导出服务器中缺少网站集中使用的功能”。

2. 确保目标服务器可容纳要导入的 CAB 文件的大小

内容部署首先会将所有内容作为 XML 和二进制文件导出到文件系统,再将这些文件打包到 CAB 文件中。然后,使用 HTTP POST 将 CAB 文件上载到目标服务器,然后在目标服务器上提取和导入这些文件。由内容部署过程生成的 CAB 文件的预配置最大大小为 10 兆字节 (MB)。但是,IIS 7.0 具有 28 MB 的预配置上载限制。SharePoint Server 2010 不会将单个导出文件拆分为多个 CAB 文件。因此,如果 SharePoint Server 2010 站点包含无法压缩到 10 MB 以下的单个文件,且生成的 CAB 文件大小超出 IIS 7.0 的 28 MB 默认上载限制,则内容部署作业会失败。

如果服务器上的内容部署作业中的 CAB 文件的大小超过 28 MB,请确保通过修改管理中心网站的 Web.config 文件来调整目标服务器上允许的文件大小。若要执行此操作,请添加类似于下面的条目:

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="52428800"/>
         </requestFiltering>
    </security>
</system.webServer>

maxAllowedContentLength 属性的值是一个以字节为单位的数字,它表示要上载到服务器的 CAB 文件的最大大小。在本示例中,52,428,800 等于 50 MB。您应根据部署环境的特定需求调整此值。

有关详细信息,请参阅知识库文章 925083“您试图将一个大文件上载到 Windows SharePoint Services 3.0 网站上的文档库时收到错误消息:‘请求超时’” (https://support.microsoft.com/kb/925083/zh-cn)。

3. 确保目标 Web 应用程序上的最大上载大小的值足以容纳要部署的文件

在目标服务器上承载管理中心网站的 Web 应用程序通常使用默认值创建,这意味着最大上载大小将设置为 50 MB。如果源网站集包含大于目标服务器上的上载限制的文件,则内容部署作业会失败。

确保在目标服务器上承载管理中心网站的 Web 应用程序的最大上载大小至少与源网站集中最大项目的大小相等。有关如何更改 Web 应用程序的最大上载大小的信息,请参阅为 Web 应用程序配置设置 (SharePoint Server 2010)

备注

尽管内容部署作业成功完成,但可能还有部分站点尚未部署,因此请确保查看内容部署报告中是否有警告或非严重错误,即使该作业的状态为“已成功”也是如此。有关详细信息,请参阅查看内容部署作业报告和历史记录

4. 确保源服务器和目标服务器有足够的硬盘空间来存储导出和导入过程中使用的文件

在导出过程中,要包含在内容部署作业中的所有文件在发送到目标服务器以供导入之前,都会存储在导出服务器场中的一个临时目录中并进行压缩。同样,在导入过程中,要导入数据库的文件将存储在目标服务器场中的一个临时目录中。默认情况下,已压缩和未压缩的文件会放在不同的目录中。确保每个服务器场的临时目录的位置有足够的磁盘空间来容纳部署作业中包含的文件。有关详细信息,请参阅内容部署 - 完整指南 - 第 3 部分- 配置(该链接可能指向英文页面) (https://blogs.technet.com/b/stefan\_gossner/archive/2009/11/02/content-deployment-the-complete-guide-part-3-configuration.aspx)(该链接可能指向英文页面) 中的“临时文件”。

5. 导出和导入服务器必须各承载一个管理中心网站实例

为服务器场配置内容部署设置时,可在服务器场中选择服务器来指定为用于内容部署的导出服务器和导入服务器。必须在每台导出和导入服务器上部署管理中心网站。如果您配置了导出或导入服务器并在稍后从该服务器中删除了管理中心网站,则不会显示错误消息,且内容部署作业的导出或导入阶段不会开始。

6. 始终将初始内容部署作业部署到空网站集

如果网站集已包含内容,则初始内容部署作业可能会失败。若要在目标服务器上创建空网站集,请使用管理中心的“创建网站集”页的“自定义”选项卡上的“< 稍后选择模板 >”选项。内容部署作业首次运行时,正确的模板和所有关联配置设置将应用到目标服务器。

备注

不要使用“空白网站”模板来创建目标网站集。“空白网站”模板不会创建空白网站集,并会导致内容部署作业失败。

7. 如果内容部署作业将不常运行,请调整在更改日志中保留更改的时间

默认状态下,更改日志将配置为记录 60 天内的任何更改。如果两个增量部署作业之间的时间超过此时间(例如,自上次内容部署作业运行有 70 天),更改日志将不会包含上次更改标记之前的项目。如果两个作业之间时间将超过 60 天,请在管理中心更改为 Web 应用程序指定的天数。有关如何更改更改日志中的项目的保存时间长短的信息,请参阅了解和配置 SharePoint Server 2010 上的资源限制(该链接可能指向英文页面) (https://technet.microsoft.com/zh-cn/magazine/gg491393.aspx)(该链接可能指向英文页面)。

8. 如果两个内容部署作业使用相同的路径,则不要并行运行它们

一个作业进行的更改可能与在相同内容部署路径上同时运行的另一个作业进行的更改相冲突。如果出现这种情况,则内容部署作业可能会失败。

9. 在不同的时间运行自定义部署作业和计划内容部署作业

不要将计划内容部署作业与使用 Windows PowerShell 2.0、Stsadm 命令行工具或自定义代码创建的自定义内容部署作业混合。如果尝试同时运行这两种内容部署作业,则它们可能都会失败。

10. 启用快速部署作业前对用户进行培训

如果网页创作包括对网站、列表或尚未由“非快速部署”部署作业部署的其他项的引用,快速部署作业可能会失败。如果您计划在服务器场中启用快速部署作业,请确保用户了解内容部署过程和您的组织使用的内容部署作业的时间和范围,还要考虑限制属于快速部署用户组的用户的数量。有关快速部署作业的详细信息,请参阅内容部署 – 完整指南 – 第 5 部分 – 快速部署(该链接可能指向英文页面) (https://blogs.technet.com/b/stefan\_gossner/archive/2009/11/04/content-deployment-the-complete-guide-part-5-quick-deployment.aspx)(该链接可能指向英文页面)。

11. 不要直接编辑目标网站

如果必须快速部署内容更改,则不要直接编辑目标网站(因为下次部署内容时,所编辑的部分会被覆盖),而应使用快速部署作业来快速更新网站。有关详细信息,请参阅管理快速部署作业

12. 在导出服务器上使用 SQL Server 数据库快照

利用 SQL Server 数据库快照选项,可以避免用户在内容部署作业运行时编辑内容数据库中的内容。启用数据库快照选项后,将在内容部署作业的导出阶段开始之前创建源内容数据库快照。然后,内容部署作业使用数据库快照执行导出操作,而不是直接从实时内容数据库导出。导出成功完成后,将会删除快照。SQL Server 数据库快照选项仅当数据库服务器运行的是 Microsoft SQL Server 2008 Enterprise 时可用。

13. 编写感知内容部署的代码

当解决方案包部署主要用于向内容数据库添加数据时应特别小心。数据只能添加到源服务器场上的内容数据库中。内容部署会在部署作业过程中将所有必要数据从源网站移动到目标网站。为了在导入操作期间避免冲突,请确保用于修改目标网站上的网站内容的任何自定义事件接收器或功能接收器使用 SPImportContext 类。此类可以使事件处理程序和功能激活代码检测它们是否在导入操作上下文中运行。这样,开发人员便能实现避免内容部署的导入阶段的潜在问题的代码。例如,如果某个功能接收器包含用于向列表添加新项的自定义代码,则开发人员必须确保该功能接收器的算法能检测其是否在内容部署操作的上下文中运行,并且当检测到的角色是目标网站时,该功能接收器会跳过任何数据更新。在导入过程中,新的列表项功能接收器将会在目标网站上激活。如果功能接收器不检测网站的角色,则会向目标网站新添加一段内容。导入过程随后会尝试从源网站导入相同的内容。这可能导致目标网站上出现导入错误或重复内容。创建功能接收器的开发人员必须注意此限制并编写合适的代码。有关详细信息,请参阅 SPImportContext 类(该链接可能指向英文页面) (https://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.deployment.spimportcontext.aspx)(该链接可能指向英文页面) 和在 SP2010 中编写感知内容部署的事件处理程序和功能激活代码(该链接可能指向英文页面) (https://blogs.technet.com/b/stefan\_gossner/archive/2010/05/25/write-content-deployment-aware-event-handlers-and-feature-activation-code-in-sp2010.aspx)(该链接可能指向英文页面)。

感谢

SharePoint Server 2010 内容发布团队非常感谢以下参与编写这篇文章的人员:

  • Ethan Gur-Esh,Microsoft Enterprise Content Management

  • Israel Vega, Jr.,Microsoft Consulting Services

  • Josh Stickler,Microsoft Enterprise Content Management

  • Stefan Goβner,Microsoft SharePoint Escalation Services

  • Steve Walker,Microsoft SharePoint Customer Advisory Team

See Also

Concepts

最佳实践 (SharePoint Server 2010)