2012-03-30 254 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中查看,以及這個messagebox告訴你什麼? – Carsten 2012-03-30 07:30:24

+0

你是對的有一個訪問問題。我會處理的。 Thanx – Darshana 2012-03-30 07:38:37

+0

我已將serviceProcessInstaller的屬性Account更改爲LocalSystem。現在它正在工作 – Darshana 2012-03-30 08:11:49

回答

0

我有serviceProcessInstaller的財產帳戶更改爲本地系統的情況。現在它的工作

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呼叫失敗並導致服務崩潰 – 2012-03-30 07:39:19

+0

我已將serviceProcessInstaller的屬性Account更改爲LocalSystem。現在它正在工作 – Darshana 2012-03-30 08:12:07