2014-03-19 47 views
0

我運行下面的代碼,它告訴我已經有一個打開的連接到數據庫。C#SQL恢復打開連接無法關閉

data source=ws-server02;initial catalog=SL_M2009; 
user id=sa;password=gregfhh 

我檢查了10次,但沒有找到任何開放的東西。也許我的代碼打開阻止恢復的連接?

的錯誤代碼是在這裏:

  1. http://grabilla.com/04313-7f69772a-f65c-4a3c-81c3-c118f39ea907.html
  2. http://grabilla.com/04313-4f78e5cc-27e3-4155-b92f-1da7976afdb7.html

我能爲讓現在做恢復完成?以下是相關的代碼塊。

string dbconnectstring = data source=ws-server02;initial catalog=SL_M2009;user id=sa; password=myownpw; 
SqlConnection sqlConn = new SqlConnection(dbconnectstring); 
Server sqlServer = new Server(new ServerConnection(sqlConn)); 

MessageBox.Show("Server Status: " 
+ sqlServer.Status 
+ "\r\nDatabase Name: " 
+ sqlConn.Database + " Active Connections: " 
+ sqlServer.GetActiveDBConnectionCount(sqlConn.Database)); 


Restore restoreDB = new Restore(); 
String file = NewestFile(dbsource); 
restoreDB.Action = RestoreActionType.Database; 
restoreDB.Database = sqlConn.Database; 
restoreDB.Devices.AddDevice(NewestFile(dbsource), DeviceType.File); 
restoreDB.ReplaceDatabase = true; 
restoreDB.NoRecovery = true; 
restoreDB.SqlRestore(sqlServer); 
+1

在這行你得到錯誤? –

+0

你不需要在這裏提供* actual *用戶名密碼! –

+0

@AtabtabAhmed在最後一行它告訴我 – user3428118

回答

0

試試這個代碼,希望它會工作

ServerConnection connection = new ServerConnection(serverName, userName, password); 
Server sqlServer = new Server(connection); 
MessageBox.Show("Server Status: " 
      + sqlServer.Status 
      + "\r\nDatabase Name: " 
      + sqlConn.Database + " Active Connections: " 
      + sqlServer.GetActiveDBConnectionCount(sqlConn.Database)); 
Restore rstDatabase = new Restore(); 
rstDatabase.Action = RestoreActionType.Database; 
rstDatabase.Database = databaseName; 
BackupDeviceItem bkpDevice = new BackupDeviceItem(backUpFile, DeviceType.File); 
rstDatabase.Devices.Add(bkpDevice); 
rstDatabase.ReplaceDatabase = true; 
rstDatabase.SqlRestore(sqlServer);