2014-09-28 139 views
0

我想定期使用Windows服務來備份我的數據庫,但我無法運行此服務。下面是我的code.i能夠成功地將此服務安裝到我的本地系統但是,當我試圖啓動它給我錯誤「服務xyz.exe啓動,然後stopped.Some服務自動停止,如果他們使用其他服務。」當我手動從SERVICES.MSC啓動服務。我很無奈,請如果有人能幫助me.Below是我的代碼服務不從Services.msc開始

public static void BackupDatabase(string backUpFile) 
{ 

    ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings; 
    string MyConnectionString = connections["MDASconfig"].ConnectionString; 

    ServerConnection con = new ServerConnection(MyConnectionString); 
    Server server = new Server(con); 
    Backup source = new Backup(); 
    source.Action = BackupActionType.Database; 
    source.Database = "MDAS"; 
    BackupDeviceItem destination = new BackupDeviceItem(backUpFile, DeviceType.File); 
    source.Devices.Add(destination); 
    source.SqlBackup(server); 
    con.Disconnect(); 
} 

我已經通過事件查看器應用的增加等尺寸的一些解決方案,並使用相同的登錄帳戶啓動服務通過登錄該服務的屬性.Service在Services.msc中列出,但由於上述錯誤而未啓動。

+0

添加try catch塊在你的代碼和寫錯誤去的文件。在我看來,由於代碼錯誤,您的服務未啓動。 – user3514987 2014-09-28 09:56:05

+1

@vivek,我有一個問題:爲什麼使用Windows服務而不是Task Scheduler? – user3165438 2014-09-28 10:07:28

+0

檢查此問題http://stackoverflow.com/questions/125964/easier-way-to-start-debugging-a-windows-service-in-c-sharp。您應該調試Visual Studio的服務表單以查看正在發生的事情。 – 2014-09-28 11:25:28

回答

0

你需要保持在內存中運行的線程,使用下面的代碼:

Dim delPeriodicalCheck As New TimerCallback(AddressOf BackupDatabase) 
Dim objTimer As System.Threading.Timer 
Dim dueTime = 1000 '1 Sec, delay start 
Dim period = 60000 '1 Min, you may change this value 

Protected Overrides Sub OnStart(ByVal args() As String) 
objTimer = New System.Threading.Timer(delPeriodicalCheck, Nothing, dueTime,period) 
Catch ex As Exception 
EventLog1.WriteEntry(ex.Message) 
End Try 


Private Sub BackupDatabase(ByVal stateInfo As Object) 
'Your code 
End Sub