【发布时间】:2012-04-12 08:25:12
【问题描述】:
以下问题困扰了我一段时间:
我有一个 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 Execute Package Utility Version 10.50.1600.1 for 32-bit 版权所有 (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"'
非常感谢任何可以就这个问题给我一些建议的人。
【问题讨论】:
标签: sql timeout ssis xp-cmdshell