2012-03-30 9 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-eventlogを調べてみましたか?メッセージボックスはあなたに何を伝えていますか? – Carsten

+0

アクセス問題が発生しました。私はそれに対処します。 Thanx – Darshana

+0

私はserviceProcessInstallerのプロパティAccountをLocalSystemに変更しました。今すぐ動作しています – Darshana

答えて

0

を呼び出した場合でなければなりません。今は動作しています

0

ない私は完全にあなたのappraochを理解しておくが、これは単に私がLocalSystemにserviceProcessInstallerのプロパティのアカウントを変更する必要がありbase.OnStop

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

tryの後でcatchブロックを追加し、エラーをトレースしてみてください。あなたのSPコールが失敗し、サービスがクラッシュする可能性があります。 –

+0

私はserviceProcessInstallerのプロパティAccountをLocalSystemに変更しました。今それは働いている – Darshana

関連する問題