如何记录 SSIS 包的 termination/any 结尾?
How can I log the termination/any end of an SSIS package?
我有一个 SSIS 包(针对 SQL Server 2012),我目前正在调试它。我所追求的是如何通过任何方法记录 SSIS 包已完成 或停止。
最接近的看起来是 'OnExecStatusChanged'、'OnPostExecute' 和 'OnPostValidate',但是当我 中断执行时,其中 NONE 会提供任何日志消息 在 Visual Studio.
截图如下:
我怀疑答案可能是"you can't",但我想在我放弃之前看看是否有更多奇特的解决方案。
我知道这是部分答案。这里介绍的是检测一个包被成功的错误完成。这可以通过从另一个父包调用包来完成。
但是如果包被强制停止那么这不会有任何影响。
我能想到的有两个选项。
上面已经强调了使用 pre 和 post execute 函数。如果您要使用此解决方案,我建议您使用 table(Dim_Package_Log?)并在执行前和 post 上使用存储过程插入此 table。
澄清:这不会捕获包中断,只是开始、结束和错误。
正如您正确识别的那样,尽管这不会记录包裹中断。为了捕获这一点,我实现了一个使用两个 tables.
的视图
SSISDB.catalog.event_messages
SSISDB.catalog.executions
如果您进行一些 "exotic" 连接,您可以利用来自执行的 execution_status
和来自 event_messages
的消息来查找您想要的信息。
我不记得是在哪个 msdn 页面找到的,但这就是 catalog.executions
中 execution_status 的意思
The possible values are created (1), running (2), canceled (3), failed (4), pending (5), ended unexpectedly (6), succeeded (7), stopping (8), and completed (9).
澄清:
下面是 SSISDB.catalog.executions 为作业中的每个包执行输出的示例行:
43198 FolderName ProjectName PackageName.dtsx NULL NULL NULL NULL 10405 GUID SERVICEACCOUNTNAME 0 200 2015-02-16 00:00:03.4156856 +11:00 20 18 7 2015-02-16 00:00:05.4409834 +11:00 2015-02-16 00:00:58.4567400 +11:00 GUID SERVICEACCOUNTNAME 10324 NULL NULL ID SERVER SERVER 16776756 3791028 20971060 8131948 2
在此示例中,有一个值为 7 的列。如上所述,此状态会根据包执行的结束状态而变化。在这种情况下,成功。如果包裹中途破损,将被捕获到此状态。
有关此 ssidb 功能的更多信息位于 this MSDN 页面。
我有一个 SSIS 包(针对 SQL Server 2012),我目前正在调试它。我所追求的是如何通过任何方法记录 SSIS 包已完成 或停止。
最接近的看起来是 'OnExecStatusChanged'、'OnPostExecute' 和 'OnPostValidate',但是当我 中断执行时,其中 NONE 会提供任何日志消息 在 Visual Studio.
截图如下:
我怀疑答案可能是"you can't",但我想在我放弃之前看看是否有更多奇特的解决方案。
我知道这是部分答案。这里介绍的是检测一个包被成功的错误完成。这可以通过从另一个父包调用包来完成。
但是如果包被强制停止那么这不会有任何影响。
我能想到的有两个选项。
上面已经强调了使用 pre 和 post execute 函数。如果您要使用此解决方案,我建议您使用 table(Dim_Package_Log?)并在执行前和 post 上使用存储过程插入此 table。
澄清:这不会捕获包中断,只是开始、结束和错误。
正如您正确识别的那样,尽管这不会记录包裹中断。为了捕获这一点,我实现了一个使用两个 tables.
的视图SSISDB.catalog.event_messages
SSISDB.catalog.executions
如果您进行一些 "exotic" 连接,您可以利用来自执行的 execution_status
和来自 event_messages
的消息来查找您想要的信息。
我不记得是在哪个 msdn 页面找到的,但这就是 catalog.executions
The possible values are created (1), running (2), canceled (3), failed (4), pending (5), ended unexpectedly (6), succeeded (7), stopping (8), and completed (9).
澄清:
下面是 SSISDB.catalog.executions 为作业中的每个包执行输出的示例行:
43198 FolderName ProjectName PackageName.dtsx NULL NULL NULL NULL 10405 GUID SERVICEACCOUNTNAME 0 200 2015-02-16 00:00:03.4156856 +11:00 20 18 7 2015-02-16 00:00:05.4409834 +11:00 2015-02-16 00:00:58.4567400 +11:00 GUID SERVICEACCOUNTNAME 10324 NULL NULL ID SERVER SERVER 16776756 3791028 20971060 8131948 2
在此示例中,有一个值为 7 的列。如上所述,此状态会根据包执行的结束状态而变化。在这种情况下,成功。如果包裹中途破损,将被捕获到此状态。
有关此 ssidb 功能的更多信息位于 this MSDN 页面。