Я написал какое-то консольное приложение, и я хочу выполнить его через Sql Server, используя xp_cmdshell
.xp_cmdshell выполняет сборку и никогда не останавливается
Так что я написал следующий запрос:
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, в любом случае.
ожидания для консольного ввода в некоторых случаях? (например, psexec запрашивает удаленный пароль). Очевидно, что этот вид лучше подходит для процесса * вне * sqlservr.exe –
Что вы подразумеваете под «psexec», запрашивающим удаленный пароль? » Мой psexec работает под пользователем Sql Server. мои консольные приложения работают без ввода (кроме параметров командной строки) – Ofir
psexec не работает под учетной записью службы SQL Server, если вы подключаетесь к Windows login. Он будет работать под олицетворенной учетной записью и, таким образом, вызовет «двойной прыжок» Kerberos, требуя установки ограниченного делегирования. –