我编写了一些控制台应用程序,我想通过 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 退出值。