xp_cmdshell执行程序集并永不停止

时间:2013-08-20 07:50:13

标签: sql sql-server sql-server-2008 psexec xp-cmdshell

我写了一些控制台应用程序,我希望使用xp_cmdshell通过Sql Server执行它。

所以我写了以下查询:

declare @sqlcmd varchar(200)
SET @SQLCmd = 'C:\Automation\ProfileCreator\ProfileManagement.exe ' + @someParameter
EXEC xp_cmdshell @SQLCmd 

控制台应用程序执行一些文件操作,而不是调用PSEXEC将另一个程序集复制到外部服务器并在那里执行。

当我尝试通过cmd运行它时它完美地工作(立即关闭)。当我通过我的存储过程运行它时,它永远不会停止。有时它执行所有的程序集逻辑,有时则不执行。我无法理解,运行方法之间有什么区别? (cmd vs xp_cmdshell)

你知道我怎么能解决它?

BTW - 我的两个装配完成了Enviorment.Exit(0 or 1)的运行。它们的结构就像这样:

  static void Main(string[] args)
        {

            try
            {
              logic..
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
                Environment.Exit(1);
            }
            finally
            {
                Environment.Exit(0);
            }
}

所以我非常确定我的程序集在任何情况下都会返回Sql Server退出值。

1 个答案:

答案 0 :(得分:0)

在app.config中尝试以下控制台应用程序的代理配置:

<system.net>
   <defaultProxy
      enabled="false"
      useDefaultCredentials="false"
    />
</system.net>