KB2972285-修复:在 SQL Server 2012 中使用 SSISDB 作为部署存储时的性能问题

症状

当你使用 SSISDB 数据库存储和管理 Microsoft SQL Server Integration Services (SSIS)程序包并在 SSIS 目录上配置以下属性时:

  • 定期清理日志 (设置为 True)

  • 保留期 (设置为特定天数—问题可能出现的次数越多)

  • 定期删除旧版本 (设置为 true)

  • 每个项目的最大版本数

您可能会遇到以下一种或多种症状:

  • 从 SSDT 将 SSIS 程序包部署到 SSIS 数据库需要花费很长时间。

  • 在某些情况下,SSIS 程序包在运行 SSISDB 清理作业时可能会花费很长时间,甚至无法执行故障。

  • SQL Server 实例可能表现出性能问题。

  • SSIS 维护作业可能需要很长时间(一天以上)才能完成甚至失败。

  • SSISDB 可能已增长到较大的大小。

解决方案

SQL Server 2012 的 Service pack 信息

若要解决此问题,请获取最新的 Microsoft SQL Server 2012 服务包。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2755533 如何获取最新的 SQL Server 2012 服务包 应用 SQL Server 2012 Service Pack 2 (SP2)后,请按照以下步骤解决此问题:

  • 在托管 SSISB catalog 的 SQL Server 实例上应用 SQL Server 2012 SP2。

  • 在 SSISDB 中运行 内部.cleanup_server_log存储过程以执行完整清理。

    EXEC SSISDB.internal.cleanup_server_log
  • 将 SSISDB 数据库更改为单用户模式。

    ALTER DATABASE SSISDB SET SINGLE_USER
  • 与SEVER_OPERATION_ENCRYPTION_LEVEL参数一起调用configure_catalog ,将操作日志的加密级别从 PER_EXECUTION 的默认值(1)更改为PER_PROJECT (2) 。

    EXEC SSISDB.catalog.configure_catalog @property_name='SERVER_OPERATION_ENCRYPTION_LEVEL', @property_value='2'
  • 将 SSISDB 数据库更改回多用户模式。

    ALTER DATABASE SSISDB SET MULTI_USER
  • 运行 内部。Cleanup_Server_execution_keys存储过程清理事务级别的密钥。

    EXEC SSISDB.internal.Cleanup_Server_execution_keys @cleanup_flag = 1

更多信息

SQL Server 2012 Service Pack 2 引入了有助于缓解此问题的关键设计更改:

  • 在SSISDB.catalog_property表中引入了一个新属性(OPERATION_LOG_ENCRYPTION_LEVEL)以启用项目级安全选项。 此设置告诉 SSIS 为每个项目创建一个密钥或证书对,并为每个事务重复使用它,从而最大限度地减少保留的证书数量,并需要在将来清理。 从事务级别更改为项目级别之前,需要执行完全清理。

  • 引入了两个存储过程来帮助将现有 SSISDB 从事务级别传输到项目级别:

    • cleanup_server_log

    • cleanup_server_execution_keys

    有关这两个过程及其用法的详细信息,请转到 SQL Server 联机丛书中的以下网站:

    存储过程(Integration Services 目录)

状态

Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

你对翻译质量的满意程度如何?

哪些因素影响了你的体验?

是否还有其他反馈?(可选)

谢谢您的反馈意见!

×