【问题标题】:Control-M Execute SSIS package via batch file, capture ssis Error in calling batch file outputControl-M 通过批处理文件执行 SSIS 包,在调用批处理文件输出时捕获 ssis 错误
【发布时间】:2018-04-05 11:31:00
【问题描述】:

我们有很多通过 Control-M 中的 .bat(batch) 文件运行的 SSIS 包。我们遇到的问题是,如果 SSIS 包失败,批处理文件(通过 Control-M 作业执行)永远不会显示真正的 SSIS 错误消息,生产支持团队希望在批处理文件输出日志中看到这些错误,得到显示在 control-m 中,而不是单独进入 SSIS 错误报告。

例如 批处理文件错误输出为(当前输出)

IS 服务器上的包执行失败。执行 ID:118475,执行状态:4。 要查看执行的详细信息,请右键单击集成服务目录,然后打开 [All Executions] 报告

但 SSIS 中的真正错误是(预期的输出将附加到当前输出)

ExtractConform_Master:错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。 OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0”Hresult:0x80004005 描述:“用户 'UK\blah' 登录失败。”。 OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80004005 描述:“无法打开登录请求的数据库“Blah”。登录失败。”。

当前示例批处理文件如下所示 "

echo off

set PackageName=Publish.dtsx
set EnvironmentName=BlahEnvironment
set BasePath=%~dp0..

REM Parameters
REM ====================================================

set Cluster=Clustername
set Subcluster=SubclusterName
set QueueName=QueueName



"%DTExecFilePath%" /ISSERVER     "\%SSISCatalog%\%FolderName%\%ProjectName%\%PackageName%" /SERVER %SSISSERVER% /Envreference %env% /Par "$ServerOption::SYNCHRONIZED(Boolean)";True /Par "Cluster";%Cluster% /Par "Subcluster";%Subcluster% /Par "$Package::QueueName";%QueueName%

echo ERROR LEVEL is %ERRORLEVEL%

IF %ERRORLEVEL% GEQ 1 EXIT /b 1
IF %ERRORLEVEL% EQU 0 EXIT /b 0 code here

有什么建议吗?

【问题讨论】:

    标签: batch-file error-handling ssis control-m


    【解决方案1】:

    我建议您使用 Control-M for Database 模块从 SSIS SQL Server 运行 DTSX。这将允许您使用数据库作业类型,您可以在其中启用选项以追加 DTSX 执行输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 2010-12-10
      相关资源
      最近更新 更多