以下问题困扰了我一段时间:
我有一个 dtsx 包来处理一些接口。我在存储过程中调用它,如下所示:
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公司 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"'
感谢任何可以就此问题给我一些指示的人。
可能是权限错误
快速猜测:
运行GRANT EXECUTE ON xp_cmdshell TO shell
也许EXECUTE AS login = 'shell'
而不是用户