我的任务是在Windows Server 2012 R2上运行的Microsoft SQL Server 2012 Enterprise 64位(11.0.6020.0)上部署一些SSIS包。
通过右键单击包并使用适当的参数单击execute,从SQL Management Studio运行时,包运行完美。
但是,当我安排它们在SQL Server代理程序下运行时,其中一些会失败。我无法确定任何区分失败的包和工作包的模式。
所有软件包都使用可能非常规的方法运行,这种方法涉及在作业中创建作业步骤SQL Server Integration Services Package
而不是dtexec
步骤。这是因为程序包依赖于对特定SMB共享的访问权限,并且必须首先提供凭据才能访问此共享。 CmdExec步骤调用包装器批处理文件并传递包名称和set ETL_PACKAGE=%1
set ETL_ENV_REF=%2
net use \\remote-share.some-domain.local\dropfolder\in /user:ssisagent mypassword
dtexec /Envreference %ETL_ENV_REF% /ISSERVER \SSISDB\%ETL_PACKAGE%
if "%errorlevel%"=="1" (
exit /b %errorlevel%
)
的环境引用以运行包。
这是文件bat文件:
Message Source Name: Transact-SQL stored procedure
Operation is not valid due to the current state of the object.;
at Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ISServerExecutionEvents.LoadPackage(PackageItem item)
at Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ProjectOperator.StartPackage()
at Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ProjectOperator.PerformOperation()
当代理通过右键单击作业并选择“在步骤中启动作业...”来运行这些作业时,作业会成功启动,但是当您提取执行报告时,它会因此错误而失败:
{{1}}
我很欣赏任何可能导致此错误的信息,或者我如何排除错误以缩小原因。
我尝试使用自己的管理员凭据来设置代理帐户以排除可能的权限问题,但它并没有改变任何事情。我已经检查了所使用的SSIS环境的权限,但这并没有改变任何内容。
有问题的包与DB2,MS SQL和各种文件共享与CSV / XML文件交互。