我写了一些控制台应用程序,我希望使用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退出值。
答案 0 :(得分:0)
在app.config中尝试以下控制台应用程序的代理配置:
<system.net>
<defaultProxy
enabled="false"
useDefaultCredentials="false"
/>
</system.net>