2012-03-30 4 views
0

Я хочу вызвать хранимую процедуру из службы Windows и после этого хочу самостоятельно остановить службу. Вот что у меня есть:Служба Windows автоматически останавливается

public DailyChecker() 
{ 
    InitializeComponent(); 
} 

protected override void OnStart(string[] args) 
{ 
    SqlConnection connection = new SqlConnection(connectionString); 

    try 
    { 
     connection.Open(); 
     SqlCommand cmd = new SqlCommand("sp_ChangeState", connection); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.ExecuteNonQuery(); 
    } 
    finally 
    { 
     connection.Close(); 
    } 
} 

protected override void OnStop() 
{ 
    base.OnStop(); 
} 

Проблема у меня в том, что, когда я запустить службу, он автоматически останавливается в случае и показывает окно сообщения.

+3

в стороне от того факта, что я не знаю, зачем вам Windows-сервис в этом случае я не могу понять, почему служба должна остановиться, но я думаю, что учетная запись, с которой работает служба, имеет некоторые права доступа проблемы с вашей базой данных ... вы пробовали смотреть в windows-eventlogs и что сообщение сообщает вам? – Carsten

+0

Вы правы, есть проблема с доступом. Я буду иметь дело с этим. Thanx – Darshana

+0

Я изменил свойство свойства serviceProcessInstaller на LocalSystem. Теперь он работает – Darshana

ответ

0

У меня есть учетная запись изменить свойство в serviceProcessInstaller к LocalSystem. Теперь он работает

0

Не уверен, что я полностью понимаю ваш appraoch, но это должно быть просто случай вызова base.OnStop

try 
{ 
    connection.Open(); 
    SqlCommand cmd = new SqlCommand("sp_ChangeState", connection); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.ExecuteNonQuery(); 
} 
finally 
{ 
    connection.Close(); 
} 
base.OnStop(); 
+1

Попробуйте добавить блок catch после попытки и отслеживания ошибки. Возможно, ваш вызов SP не работает и сбой службы –

+0

Я изменил свойство свойства serviceProcessInstaller на LocalSystem. Теперь он работает – Darshana

Смежные вопросы