Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SSIS-捕获“;ExecutionResult";/&引用;“数据代码”;可变的?_Sql Server_Variables_Logging_Ssis - Fatal编程技术网

Sql server SSIS-捕获“;ExecutionResult";/&引用;“数据代码”;可变的?

Sql server SSIS-捕获“;ExecutionResult";/&引用;“数据代码”;可变的?,sql-server,variables,logging,ssis,Sql Server,Variables,Logging,Ssis,SSIS似乎在SSISDB/目录的internal.executable\u statistics下有一些名为execution\u result的未公开变量 但在某些地方它也被称为数据代码,但它本质上是针对每个可执行文件(任务或包级别等) 0=成功,1=失败,2=完成,3=取消 我正在滚动一些自定义日志记录,作为SSIS中ETL任务的简化/可理解视图,以便与SQL Server中SSIS目录“内部”模式中更多的“厨房水槽”日志记录配合使用 没有任何系统变量可以模拟/捕获任何特定可执行文件的Ex

SSIS似乎在SSISDB/目录的internal.executable\u statistics下有一些名为execution\u result的未公开变量

但在某些地方它也被称为数据代码,但它本质上是针对每个可执行文件(任务或包级别等)

0=成功,1=失败,2=完成,3=取消

我正在滚动一些自定义日志记录,作为SSIS中ETL任务的简化/可理解视图,以便与SQL Server中SSIS目录“内部”模式中更多的“厨房水槽”日志记录配合使用

没有任何系统变量可以模拟/捕获任何特定可执行文件的ExecutionResult。是否有任何方法可以捕获它并将其写入表或保存在变量中

我见过一些人试图在脚本任务中使用它,而脚本任务必须引用.dtsx文件路径等等——看起来很复杂,但有人知道一种优雅的方法吗

基本上,我需要一个日志级别(自定义编写),它基本上是:包XYZ,诸如此类,诸如此类,诸如此类,executionResult:1

我再次意识到这是在可执行的统计数据中,但不是我喜欢的,我目前只有SQL Server 2012,所以也不能自定义太多

本质上,我想知道一个包最终是“成功”还是“失败”。错误在正确的轨道上,但不同。因为包(或容器)可能会出现错误,并且最终仍然会成功


我想我可以根据包/容器是“成功”还是“失败”来装配两个单独的执行SQL任务,然后从那里开始。嗯。

使用事件处理程序时,ExecutionResult可用(在OnExecStatusChanged事件处理程序上):

因此,您可以在每个任务上添加一个
OnExecStatusChanged
事件处理程序,
@[System::ExecutionResult]
变量将可用

如果您不熟悉事件处理程序,可以参考以下文章:


更新1 您还可以从每个任务的
ExecValueVariable
属性中获益:


嗯,我不确定执行状态是否与executionresult相同——至少,这些文章中没有提到后者。但是,它可能更详细或功能相同。嗯,我可以试试看会发生什么。这似乎更像是一个“这是当前状态”循环列表,而不是“最终结果”,但它可以被有效地潜在地使用。遗憾的是,执行_值甚至从执行结果中进一步删除。它根据设置它的最后一个任务(例如执行SQL语句任务的插入次数)生成随机数据。我现在找到了一个简单的解决方案。只需对“表达式任务”执行一个成功条件,将变量设置为1。然后将失败条件设置为“Expression Task”,将变量设置为0。那里SSI不会以本机方式公开ExecutionResult,但使用其内置工作流,答案就在这里。这些二元表达式任务可以重新加入到单个流(或条件)中然后继续。@user45867您是否尝试过事件处理程序方法?如果您不同意下面的答案,那么您必须构建自己的日志逻辑,因为我认为SSIS没有提供其他选项。我找到了一个简单的方法——只需使用内置的“红色/绿色”箭头(优先级约束)。一个去执行表达式任务,另一个也去。在那里设置变量。虽然SSI不会在系统变量或属性中公开它,但它会使用其优先级约束本身“公开”。虽然从技术上讲,您可以使用超级复杂的语法“深入”并获取脚本任务中的实际变量,但何必麻烦呢?然后您实现了自己的逻辑