Batch file Control-M通过批处理文件执行SSIS包,在调用批处理文件输出时捕获SSIS错误

Batch file Control-M通过批处理文件执行SSIS包,在调用批处理文件输出时捕获SSIS错误,batch-file,error-handling,ssis,control-m,Batch File,Error Handling,Ssis,Control M,我们有很多SSIS包通过Control-M的.bat(批处理)文件运行。问题是,如果SSIS包失败,批处理文件(通过Control-M作业执行)永远不会显示真正的SSIS错误消息,生产支持团队希望在批处理文件输出日志中看到这些错误,它显示在control-m中,而不是单独转到SSIS错误报告 比如说 批处理文件错误输出为(当前输出) 在服务器上执行包失败。执行ID:118475,执行状态:4。 要查看执行的详细信息,请右键单击Integration Services目录,然后打开[All Exe

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

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

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

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

ExtractConform\u Master:错误:SSIS错误代码DTS\u E\u OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。 OLE DB记录可用。来源:“Microsoft SQL Server本机客户端11.0”Hresult:0x80004005描述:“用户“UK\blah”登录失败。 OLE DB记录可用。来源:“Microsoft SQL Server本机客户端11.0”Hresult:0x80004005说明:“无法打开登录请求的数据库“Blah”。登录失败。”

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


有什么建议吗?

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

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