0

我编写了一些控制台应用程序,我想通过 Sql Server 使用xp_cmdshell.

所以我写了以下查询:

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

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

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

你知道我该如何解决吗?

顺便说一句 - 我的两个组件都完成了运行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 退出值。

4

1 回答 1

0

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

<system.net>
   <defaultProxy
      enabled="false"
      useDefaultCredentials="false"
    />
</system.net>
于 2013-10-31T10:36:50.210 回答