2013-08-20 2 views
0

Я написал какое-то консольное приложение, и я хочу выполнить его через 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, в любом случае.

+0

ожидания для консольного ввода в некоторых случаях? (например, psexec запрашивает удаленный пароль). Очевидно, что этот вид лучше подходит для процесса * вне * sqlservr.exe –

+0

Что вы подразумеваете под «psexec», запрашивающим удаленный пароль? » Мой psexec работает под пользователем Sql Server. мои консольные приложения работают без ввода (кроме параметров командной строки) – Ofir

+0

psexec не работает под учетной записью службы SQL Server, если вы подключаетесь к Windows login. Он будет работать под олицетворенной учетной записью и, таким образом, вызовет «двойной прыжок» Kerberos, требуя установки ограниченного делегирования. –

ответ

0

Попробуйте следующую конфигурацию прокси-сервера вашего консольного приложения в app.config:

<system.net> 
    <defaultProxy 
     enabled="false" 
     useDefaultCredentials="false" 
    /> 
</system.net> 
Смежные вопросы