有没有办法在每个 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 包之前和之后启动存储过程?的主要内容,如果未能解决你的问题,请参考以下文章

操作SSIS之前的准备工作

在 ssis 控制流中选择性地执行任务

如何记录SSIS执行SQL任务的输出

通过代码创建和执行的 SSIS 包需要在多次运行后重新启动服务

SSIS包瓶颈插入记录

有没有办法阻止底部导航在应用程序存在之前返回到每个访问过的选项卡?