有没有办法在每个 SSIS 包之前和之后启动存储过程?
Posted
技术标签:
【中文标题】有没有办法在每个 SSIS 包之前和之后启动存储过程?【英文标题】:Is there a way to launch a stored procedure before and after every SSIS package? 【发布时间】:2019-12-25 08:52:37 【问题描述】:我正在寻找一种方法 - 使用内置 SSIS 功能或定制(第 3 方软件或内部编码) - 用特定代码“包装”每个已执行的 SSIS 包,例如在所有执行步骤之前和之后启动某些 SQL 过程。
这些用于记录流程步骤、处理错误、设置通知等。
这里的关键思想是避免手动编辑此代码并将其手动添加到每个 SSIS 捆绑包中 - 尽管可行,但如果上述设置有任何更改,维护起来会很痛苦。
非常感谢您 SSIS / SQL Server 专家就该主题提出的任何建议。
编辑:或者,有没有一种方法可以轻松重构现有已部署的 SSIS 包并一次性快速轻松地添加/修改该代码?
【问题讨论】:
当您在 DTS 上启用登录到 SQL Server 数据库时,您可以修改 SSIS 执行的 SP。 sp 被标记为系统 SP,它是dbo.sp_ssis_addlogentry
。 sqlcircuit.com/2013/08/…
感谢@EzLo,这听起来确实与我正在寻找的非常相似。 2个问题:1)我是否需要手动为每个包启用日志记录,或者有没有办法为所有部署的包设置参数来启用它? 2) 同时对日志记录参数进行更改会覆盖我自己添加到“dbo.sp_ssis_addlogentry”的内容吗?
1) 如果您使用此方法,则必须编辑所有 DTS 以启用日志记录并将它们定向到同一数据库连接。您可能能够使用一些黑魔法来大量更改 DTS(实际上是 xml 文件)并通过 c# 或任何其他编程语言添加日志记录步骤,但这并不容易,我不知道该怎么做,除非您有 非常大 数量的 dts 并且它们都使用相同的版本,否则我不建议您尝试它。 2) 我相信 SSIS 只会在 SP 不存在的情况下尝试创建它,但我会对其进行测试以确定。
【参考方案1】:
1.我正在寻找一种方法 - 使用内置 SSIS 功能或定制(第三方软件或内部编码) - 用特定代码“包装”每个已执行的 SSIS 包,例如在所有执行步骤之前和之后启动某些 SQL 过程。
请参考Execute SQL Task。
2.这些用于记录流程步骤、处理错误、设置通知等。
日志流程步骤--请参考SSIS Logging。
处理错误--请参考Integration Services (SSIS) Event Handlers和
Capturing SQL Server Integration Services Package Errors Using OnError Event Handlers.
设置通知--请参考SSIS Script Task和Getting started with the SSIS Script Task。
3. 或者,有没有一种方法可以轻松重构现有已部署的 SSIS 包并一次性快速轻松地添加/修改该代码?
请参考Editing Published SSIS Package in SQL Server 2012。
【讨论】:
很遗憾,您提供的链接中没有一个链接可以回答我在最初帖子中提出的问题。以上是关于有没有办法在每个 SSIS 包之前和之后启动存储过程?的主要内容,如果未能解决你的问题,请参考以下文章