2015-10-05 48 views
-1

我有一個具有恢復數據庫實用程序的C#應用​​程序。恢復過程在大約400MB時消耗大量內存,並且不會將其返回給操作系統,這對於內存不足的計算機來說有點問題。現在我不限制服務器實例的內存消耗,我正在給它任何想要的東西。使用C#3.5重新啓動SQL服務實例

我想使用C#代碼重新啓動服務器實例,它釋放了恢復過程使用的內存。我看了一下在.NET 3.5上不可用的ServiceController,所以我正在尋找其他選項。目前,我想去以下路徑之一:

  • SMO
  • 過程

你能給我兩個的​​優點和缺點?另外,還有其他的選擇可以做到這一點嗎?

+1

「恢復過程消耗大量內存,大約400MB,並且不會將其返回給操作系統」 - 讓我們看一些代碼.... –

+0

@MitchWheat它是導致問題的代碼嗎? – jmc

+0

您是否建議SQL實例在還原之後使用400 Mb以上的內存?以什麼方式?比較dbcc memorystatus的輸出前後的內容* SQL如何使用更多的內存。 –

回答

0

您可以使用下面的VB代碼 我想你可以將其轉換爲C#使用代碼轉換器自動

Dim managedComputer As New ManagedComputer() 
Dim sqlService As Service 
sqlService = managedComputer.Services("MSSQLSERVER") 

If sqlService.ServiceState = ServiceState.Stopped Then 
    sqlService.Start() 
End If 

您需要添加以下到您的項目

Microsoft.SqlServer.Smo引用

Microsoft.SqlServer.SqlWmiManagement

Microsoft.SqlServer.WmiEnum

相關問題