我有一个存储在SQL Server 2005数据库中的SSIS包 . 我试图从同一服务器上的存储过程执行此包 . 有没有比exec master..xp_cmdshell'dtexec / SQL更好的方法...
我遇到(我认为)xp_cmdshell阻止执行的文件系统权限问题
我不这么认为,这里有两篇好文章:
http://www.simple-talk.com/sql/sql-server-2005/executing-ssis-packages-/
http://www.codeproject.com/KB/database/Call_SSIS_from_SP.aspx
我推荐使用Agent代替:
为将运行作业的帐户创建代理代理帐户
创建运行此包的代理作业
使其使用在#1中创建的代理帐户
测试工作
在SQL代码中,使用 sp_start_job 开始此作业
sp_start_job
缺点是您无法通过这种方式轻松地将参数从SQL传递到包中 .
自2012年以来,MSSQL有一个SSIS目录,您可以在那里停放包 . 然后,您可以使用参数执行包 . 这样我们就可以避免 xp_cmdshell 在没有参数的情况下调用 dtexec 或 sp_start_job . 关键SP: create_execution , set_execution_parameter_value 和 start_execution .
xp_cmdshell
dtexec
create_execution
set_execution_parameter_value
start_execution
来自MSDN:
To run a package on the server using SQL Server Management Studio
Deploy and Execute SSIS Packages using Stored Procedures
3 回答
我不这么认为,这里有两篇好文章:
http://www.simple-talk.com/sql/sql-server-2005/executing-ssis-packages-/
http://www.codeproject.com/KB/database/Call_SSIS_from_SP.aspx
我推荐使用Agent代替:
为将运行作业的帐户创建代理代理帐户
创建运行此包的代理作业
使其使用在#1中创建的代理帐户
测试工作
在SQL代码中,使用
sp_start_job
开始此作业缺点是您无法通过这种方式轻松地将参数从SQL传递到包中 .
自2012年以来,MSSQL有一个SSIS目录,您可以在那里停放包 . 然后,您可以使用参数执行包 . 这样我们就可以避免
xp_cmdshell
在没有参数的情况下调用dtexec
或sp_start_job
. 关键SP:create_execution
,set_execution_parameter_value
和start_execution
.来自MSDN:
To run a package on the server using SQL Server Management Studio
Deploy and Execute SSIS Packages using Stored Procedures