DTEXEC 执行超时 - 但仅在从存储过程调用时超时



以下问题困扰了我一段时间:

我有一个 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'而不是用户

相关内容

  • 没有找到相关文章

最新更新