以下问题一直困扰着我:
我有一个用于处理某些接口的dtsx-package。我在一个存储过程中调用它,如下所示:
SET @v_statement = 'DTEXEC /FILE "' + @v_if_ssis_package + '" /SET \Package.Variables[User::message_number].Properties[Value];' + CAST(@i_message_number AS VARCHAR(20))
+ ' /ConfigFile "' + REPLACE(@v_if_ssis_package, '.dtsx', '.xml') + '"'
EXECUTE AS USER = 'shell';
INSERT INTO #SSISResult
EXEC @v_ssis_returncode = xp_cmdshell @v_statement;
据我所知,Shell用户可以运行xp_cmdshell调用。尽管如此,我在运行存储过程时遇到以下错误:
Microsoft(R)SQL Server执行包实用程序版本10.50.1600.1(适用于32位版权所有(C)Microsoft Corporation 2010.保留所有权利。开始时间:10:12:28错误:2012-04-12 10:12:59.11代码:0x00000000来源:脚本任务脚本描述:超时已过期。操作完成之前经过的超时时间或服务器没有响应...
这是一直困扰我的事情..如果我会运行与独立查询完全相同的事情(如下所示),它运行得很好。关于什么是纳米人的任何想法?
EXECUTE AS USER = 'shell';
EXEC xp_cmdshell 'dtexec /FILE "C:\mypackage.dtsx" /SET \Package.Variables[User::message_number].Properties[Value];48644 /ConfigFile "C:\mypackage.xml"'
非常感谢能够就这个问题给我一些指示的人。
答案 0 :(得分:0)
可能是权限错误
快速猜测:
运行GRANT EXECUTE ON xp_cmdshell TO shell
也许是EXECUTE AS login = 'shell'
而不是用户