ssis - 何时将错误写入 SSISDB?
问题描述
在我的On Error事件处理程序的主包中,一个子包Logging被触发。这个包触发他/她自己的子包:SendMail。 Sendmail对 SSISDB 执行查询。此查询收集具有最新 execution_id 的所有错误。结果被写入一个平面文件。然后将平面文件附加到电子邮件并发送给我。
但是,如果我在 SSDT 中运行它,效果会很好。在服务器上运行此文件时,该文件为空。该查询正在寻找导致最新执行的错误。但是,如果我更改查询以查找较旧的执行,则一切运行正常。在我尝试收集错误时,错误似乎尚未写入数据库。但是,简单地让查询等待 5 秒并不意味着我会得到结果。
我能否以某种方式确保在我需要错误时已将错误写入 SSISDB?
这是我用来从 SSISDB 中提取错误的查询。当我更改 (SELECT MAX(execution_id) FROM SSISDB.catalog.executions)
为先前的 execution_id 错误时,一切正常。(但我看到了上一次运行的错误)
SELECT distinct
cast(message_time as datetime2) as message_time
,cast(REPLACE(REPLACE(REPLACE(REPLACE(messaGE, CHAR(13) + CHAR(10), ' ... '),
CHAR(10) + CHAR(13), ' ... '), CHAR(13), ' '), CHAR(10), ' ... ') as nvarchar(400)) AS MESSAGE
,cast(execution_path as nvarchar(400)) as execution_path
FROM (
SELECT em.*
FROM catalog.event_messages em
WHERE em.operation_id = (SELECT MAX(execution_id) FROM SSISDB.catalog.executions)
AND event_name NOT LIKE '%Validate%'
)q
WHERE event_name = 'OnError'
解决方案
推荐阅读
- ionic-framework - 使用 Firebase Cloud 功能创建用户(注册用户时删除自动登录)
- c# - 在进行大量计算时如何避免 DevExpress 电子表格冻结?
- python - LinAlgError:使用单项式基执行多项式插值时的奇异矩阵
- r - 通过函数传递列表并创建摘要 df
- azure - Azure Durable 编排功能 ILogger 输出日志两次
- javascript - 画布文本渲染
- javascript - 如何更改数组中所有项目的日期格式
- c - 带有 char* 变量的 serialPutchar
- typescript - 如何将 yup 的 object.shape 与打字稿一起使用?
- python - 调用类方法但得到'str'对象没有属性'method'错误