症状
当你使用 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 联机丛书中的以下网站:
-
状态
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。