如何在 SSISDB 中将可执行错误公开为消息

2024-02-13

我们当前正在从作为每晚批处理作业的一部分运行的 SSIS 执行进程任务调用使用 python 构建的可执行文件。这一切都工作正常,但是当可执行文件失败时,只会引发非常基本的通用错误消息,而不会引用真正的底层错误。当通过命令行运行可执行文件时,底层错误会正确返回。

无论如何,当通过 SSIS 执行进程任务调用时,我们是否可以冒泡出可执行文件的底层错误,并将其写入或记录到 SSISDB 目录中?

请参阅下面的现有错误以及应返回的理想错误(当前从命令行运行时返回)。


执行流程任务上没有可用的选项可以在失败时重定向输出并将其重新记录到日志中。

为了实现这一点,您需要:

  • 定义一个变量来捕获输出
  • 在执行进程任务的 StandardOutputVariable 选项中进行设置
  • 在该任务的事件处理程序下,创建一个“OnTaskFailed”事件处理程序并使用脚本任务返回输出

Example:

String variable called "User::exe_output" which is then added the StandardOutputVariable on the Execute Process Task: enter image description here

The 文档 https://learn.microsoft.com/en-us/sql/integration-services/control-flow/execute-process-task?view=sql-server-2017 states:

标准输出变量选择一个变量来捕获输出 过程,或单击以创建新变量。

然后在事件处理程序下:

  • 在执行流程任务上添加“OnTaskFailed”事件
  • 添加脚本任务

打开脚本任务并将“User::exe_output”变量添加为 ReadOnlyVaraibles:

编辑脚本并添加以下代码:

public void Main()
{
    //Just assigning the exe_output to a local variable
    string exe_error = Dts.Variables["User::exe_output"].Value.ToString();

    //Checking it its blank
    if (exe_error != "")
    {
        //This brings back out whatever was captured in the output of the execute process task.
        //Depending on how you want it logged, warning or an error, either one will log the output.

        //Dts.Events.FireError(-1, "Execute Process Task Error", exe_error, String.Empty, 0);
        Dts.Events.FireWarning(-1, "Execute Process Task Error", exe_error, String.Empty, 0);
    }
    Dts.TaskResult = (int)ScriptResults.Success;
}

然后,当流程运行并失败时,您仍然会收到原始消息,但现在您还可以获得从执行流程任务的输出中捕获的内容:

在我的示例中,我只是尝试复制一个不存在的文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 SSISDB 中将可执行错误公开为消息 的相关文章

  • Attunity 连接器未显示在 VS 2017、SQL Server 2017 的 SSIS 中

    我看过 VS 2015 的这篇文章 但没有看过 VS 2017 的文章 我已经测试了 Visual Studio 2017 SSDT Enterprise 和 Professional 以及 SQL Server 2017 我遵循了该帖子h
  • 将一行字段设置为其他 2 个字段的乘积

    我有一个这样的SQL表结构 Id A B C D 1 1 5 6 25 2 2 10 5 25 3 3 7 4 25 4 1 6 5 26 5 2 10 5 26 6 3 8 3 26 我想写一个脚本 它将更新所有B 和 C 列在行中A 3
  • 是否可以让 SQL Server 将排序规则转换为 UTF-8 / UTF-16

    在我正在处理的一个项目中 我的数据存储在 SQL Server 中 并具有排序规则Danish Norwegian CI AS 数据通过 FreeTDS 和 ODBC 输出到将数据作为 UTF 8 处理的 python 一些字符 如 和 编
  • CSV 数据中的逗号

    我有一个 CSV 文件 我将其直接导入到 SQL Server 表中 在 CSV 文件中 每一列都用逗号分隔 但我的问题是我有一个 地址 列 并且该列中的数据包含逗号 所以发生的情况是 地址列的一些数据将转到其他列 并将导入到 SQL Se
  • SQL 层次结构 - 解析给定节点的所有祖先的完整路径

    我有一个由邻接列表描述的层次结构 不一定有单个根元素 但我确实有数据来识别层次结构中的叶 终端 项 所以 一个看起来像这样的层次结构 1 2 4 7 3 5 6 8 9 将通过表格来描述 就像这样 NOTE 我没有能力改变这种格式 id p
  • 如何按月(“年”和“月”)对表进行分区并自动创建每月分区?

    我正在尝试按两者对表进行分区Year and Month 我将通过其进行分区的列是具有 ISO 格式 20150110 20150202 等 的日期时间类型列 例如 我有 2010 年 2011 年 2012 年的销售数据 我希望数据按年份
  • 如何研究.NET 中的非托管内存泄漏?

    我有一个通过 MSMQ 运行的 WCF 服务 内存随着时间的推移逐渐增加 表明存在某种内存泄漏 我在本地运行该服务并使用 PerfMon 监视一些计数器 CLR 内存托管堆字节总数保持相对恒定 而进程的私有字节随着时间的推移而增加 这让我相
  • 从同一个表复制行并更新 ID 列

    我有下表 我已将产品 B 插入其中 它给我的 ID 为 15 然后我有定义表 如下所示 我想选择 ProdID 14 的 ProductDefinition 行并复制相同的行并将其插入到 ProdID 15 中 如下所示 如何使用 SQL
  • 从 Perl 脚本 DBI 关闭 MSSQL 服务器

    我正在写一个 perl 脚本 其中我必须关闭我的 mssql 服务器 做一些操作 然后我必须重新启动它 我知道一种方法是使用 netstat 来停止服务 但我不能使用它 所以我尝试安装 DBI 和 DBD ODBC 模块 我可以通过以下代码
  • 验证 C# 中的小数是否存储在 SQL Server 中

    我有一个十进制数据库列decimal 26 6 据我所知 这意味着精度为 26 小数位数为 6 我认为这意味着该数字的长度总共可以是 26 位数字 其中小数点后可以有 6 位数字 在我的 WPF C 前端中 我需要验证传入的小数 以便我可以
  • 警告:mysqli_stmt::bind_param():变量数量与准备好的语句中的参数数量不匹配[重复]

    这个问题在这里已经有答案了 我收到以下错误 Warning mysqli stmt bind param Number of variables doesn t match number of parameters in prepared
  • 模拟 SQL Server 实例上的当前日期?

    是否可以更改 SQL Server 上特定数据库的日期时间 它与操作系统的日期 时间相关吗 我们希望模拟未来的日期时间以进行测试 即GETDATE 返回未来的日期 它必须处于半生产 暂存 环境中 因此不幸的是 我们无法选择更改操作系统日期
  • #DELETE 在 Access 中查看 SQL Server 表

    今天早上又出现了一个新问题 我的数据库驻留在 SQL Server 上 并使用 Access 作为前端 其中一个已经使用了至少 10 年的数据库今天突然停止工作 我发现这个问题影响了 2 个 可能更多 我没有检查所有 表 当我在访问中打开表
  • SqlCommand返回值参数

    也许查看此代码的其他人能够告诉我为什么 returnID 始终为 0 我正在尝试从插入的记录中检索新的 ID public int AddToInventory int PartID int QtyOnHand int SpokenFor
  • MySQL CREATE TABLE 语句上的外键错误(错误:150)

    我觉得我已经在一对非常简单的创建表语句上尝试了一切可能的方法 类型匹配 我尝试使用 ENGINE InnoDB 等 但很困惑为什么我收到外键错误 我已经离开 SQL 一段时间了 所以这可能是一个简单的问题 mysql gt CREATE T
  • SQL Server 将 SP_EXECUTESQL 识别为对象而不是过程名称

    我在用DBContext Database SqlQuery
  • 触发器以捕获服务器中的架构更改

    是否可以实现类似以下触发器的东西 CREATE TRIGGER tr AU ddl All Server ON DATABASE WITH EXECUTE AS self FOR DDL DATABASE LEVEL EVENTS AS D
  • SQL Server 2005 - 达到表行大小限制

    有没有一种干净的方法可以在向表添加新列之前确定表的行大小 并且不超过 8060 字节的限制 例如 如果表行长度当前为 8055 字节 并且我想添加日期时间 8 字节 则这将结束 因为它将变为 8063 字节 不包括空映射 但是 如果我添加一
  • SSIS ForEach File 循环 - 将文件名插入表

    我正在构建一个 SSIS 包 使用 VS 2017 来从特定文件夹加载一堆 CSV 文件 使用 ForEach File 循环效果很好 数据流任务具有平面文件源和 OLE DB 目标 我希望能够将文件名以及 CSV 文件中的数据保存在同一个
  • SQL Server 数据库中的表具有互斥外键的最佳实践

    在这里 我正在寻找针对以下问题的优缺点的最佳解决方案 Entity1 E1 pk 与其他不同的列 Entity2 E2 pk 与其他不同的列 Entity3 E3 pk 与其他不同的列 我需要创建之间的关系Entity1 and Entit

随机推荐

  • 获取matlab中fit函数的函数句柄并分配fit参数

    我正在将自定义函数拟合到我的数据中 获得拟合后 我想获得类似拟合函数的函数句柄之类的东西 包括设置为拟合找到的参数的参数 我知道我可以得到模型 formula fit 我可以通过以下方式获取参数 coeffvalues fit 但有没有什么
  • 为每个文件调用 Inno Setup AfterInstall 函数

    我想在安装文件夹后调用一个函数 但是InstallEnv函数似乎被调用了几次 也许每个文件都是文件夹 待确认 有没有办法在安装所有这些文件后只调用一次 我无法使用Run部分 因为我想用返回代码进行错误捕获 Source InputFiles
  • 使用 useRef 响应滚动导航

    我正在尝试制作一个单页应用程序 您单击链接 它会向下滚动到与菜单项对应的部分 我花了几天时间研究适合我标准的修复方案 不幸的是 我运气不佳 我的标准如下 无外部依赖 地址栏中必须包含 URL 以允许直接链接到特定部分 不能是 hacky 即
  • 关于默认捕获模式和 C++ lambda 表达式中的“this”的限制

    我想知道为什么 捕获默认值模式禁止this in 捕获列表 of C 拉姆达表达式 That is this error this OK 这是由 C 11 5 1 2 8 指定的 如果 lambda capture 包含捕获默认值 则 la
  • Firebase Functions 1.0.0 迁移:使用 Google 服务帐户凭据自定义initializeApp() 时出现问题

    我刚刚从 beta v0 9 1 更新到 v1 0 0 并遇到了一些初始化问题 根据迁移指南 https firebase google com docs functions beta v1 diff new initialization
  • 操作栏徽标左内边距

    操作栏在徽标左侧显示一个空格 我认为这个空间是为upindicator保留的 例如 我想给这个空间指定 20dp 的距离 我怎样才能做到这一点 我可以将图标的内边距设置为 0 但这不会消除徽标和屏幕左侧之间的空间 我尝试通过使用自定义布局来
  • SQL Server Express 2017 安装失败 [0x851A001A]

    安装 SQL Server 已经让我痛苦了好几个小时了 我无法得到任何工作 我设置了一个全新安装的 Windows Server 2016 虚拟机 并尝试安装 SQL Server Express 我按照建议将用户设置为网络服务here h
  • 为什么在未提供祖先的情况下查询不返回结果?

    为什么在未指定祖先时过滤器不起作用 无论祖先如何 它是否都应该适用于实体类型 我的用例 我已经设置了多个带有父键的实体 该键与另一个实体 主实体 相对应 以便我可以通过祖先 主实体键 获取子级 然而问题似乎是我无法再查询实体属性 除非我指定
  • Lucene 通配符匹配在化学符号上失败(?)

    使用 Hibernate 搜索注释 大部分只是 Field index Index TOKENIZED 我已经索引了一些与我的名为 Compound 的持久类相关的字段 我已经使用以下命令对所有索引字段设置了文本搜索MultiFieldQu
  • 当公式重新计算中仅特定 Excel 单元格发生更改时调用函数

    据我所知 Worksheet Calculate当工作表中任何单元格的值因公式重新计算而发生更改时调用 有没有办法让我只需要在公式重新计算中特定单元格发生更改时调用函数 要在更改特定单元格时发生某些事情 您需要在文件中嵌入相关的选择更改事件
  • 如何在 PowerShell 中正确/全局地对 UTF-8(无 BOM)文件进行分类? (到另一个文件)

    创建文件utf8 txt 确保编码为 UTF 8 无 BOM 将其内容设置为 In cmd exe type utf8 txt gt out txt 内容out txt is 在 PowerShell v4 中 cat utf8 txt g
  • 是否可以在 SAFEARRAY 中编组 ref 参数

    这是我的 C 服务器方法 public void Exec out int status string output status 3 Console WriteLine Exec 0 status output string Format
  • Android:如何通过 Http Post 将歌曲文件以及其他变量发送到服务器

    我要通过 HttpPost 向服务器发送歌曲文件 目前我正在使用此代码将数据发送到服务器 HttpPost postRequest new HttpPost try List
  • 定义 WCF 服务的 SLA

    我必须对一堆相互依赖的服务进行性能 负载测试 它们都使用 net tcp 并且大多数使用双工合约和内部队列 使用 lock syncRoot 手卷 POCO 队列类 if queue Empty Thread Wait 这是我想出的方法 确
  • 出现错误:尝试上传多个文件时出现意外字段

    如果我使用 multer 自述文件中的示例 我可以毫无问题地上传单个文件 但是 当我使用相同的示例时 我无法对多个文件执行此操作 我尝试使用常规 错误 意外的字段 在 makeError 处 Users mroker node projec
  • C++ 数组中每个 bool 1 位

    bool fp 81 根据我的理解 fp 应该使用 ceil 81 8 字节 因为它是连续的 我对么 我怎样才能证明这一点 不 缓冲区的大小是实现定义的 根据标准的引用 5 3 3 1 sizeof 运算符产生其操作数的对象表示中的字节数
  • 在java中删除字符串末尾的空格[重复]

    这个问题在这里已经有答案了 可能的重复 从 Java 字符串中去除前导和尾随空格 https stackoverflow com questions 6652687 strip leading and trailing spaces fro
  • Git Shell:我们如何从未跟踪的文件中删除特定文件

    我希望使用 shell 命令从 git 中未跟踪的文件中删除特定文件 但正如我所搜索的 只有一个解决方案 f force d directories too x remove ignored files too 让我们将文件视为gitign
  • 有 Firestore 安全规则的模拟器吗?

    我正在寻找一种有效测试新规则集的方法 我想在决定从实时数据库切换到 Firestore 之前测试规则 请提供解决方案或说明是否有任何正在进行的工作 2018 05 26 更新 现在 Firestore 安全规则模拟器已内置于Firebase
  • 如何在 SSISDB 中将可执行错误公开为消息

    我们当前正在从作为每晚批处理作业的一部分运行的 SSIS 执行进程任务调用使用 python 构建的可执行文件 这一切都工作正常 但是当可执行文件失败时 只会引发非常基本的通用错误消息 而不会引用真正的底层错误 当通过命令行运行可执行文件时