以下问题一直困扰着我一段时间:
我有一个 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 调用的一切。尽管如此,我在运行存储过程时遇到了以下错误:
适用于 32 位的 Microsoft (R) SQL Server 执行包实用程序版本 10.50.1600.1 版权所有 (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"'
非常感谢任何可以就这个问题给我一些指示的人。