2014-06-29 23 views
0

我想通過.NET的環境檢索sql localdb的備份副本,但是出現錯誤。用vb.net恢復sql localdb

錯誤:RESTORE無法處理數據庫'C:\ Users \ Emad-VB \ Desktop \ KizeN \ KizeN \ bin \ Debug \ Data \ Data \ DataStore.mdf',因爲該會話正在使用它。建議在執行此操作時使用主數據庫。 RESTORE DATABASE正在異常終止。

SQL查詢:

RESTORE DATABASE [C:\用戶\伊馬德-VB \桌面\ KizeN \ KizeN \ BIN \調試\數據\數據\ DataStore.mdf] FROM磁盤='C:\用戶\ Emad-VB \桌面\ bac \ test.bac'

我再次嘗試使用數據庫主復原,但我得到這個錯誤。

錯誤: 'Go'附近語法不正確。

SQL查詢:

使用主

轉到

RESTORE DATABASE [C:\用戶\伊馬德-VB \桌面\ KizeN \ KizeN \ BIN \調試\數據\數據\數據存儲密度纖維板] FROM磁盤= 'C:\用戶\伊馬德-VB \桌面\ BAC \ test.bac'

這是執行SQL查詢的代碼....

Sub query(ByVal que As String) 
    'On Error Resume Next 
    Try 
     con = New SqlConnection(My.Settings.KConS) 
     If con.State = ConnectionState.Closed Then 
      con.Open() 
     End If 
     cmd = New SqlCommand 
     cmd.Connection = con 
     cmd.CommandType = CommandType.Text 
     Dim mm As String = " que" 
     cmd.CommandText = mm 
     cmd.ExecuteNonQuery() 
     If con.State = ConnectionState.Open Then 
      con.Close() 
     End If 
    Catch ex As Exception 
    End Try 
End Sub 

什麼是能夠檢索到本地數據庫和感謝

回答

1

的解決方案,我看到兩個問題:

  1. 「GO」是不是T-SQL命令。它只對SQL實用程序 (如SQL Server Management Studio)有意義,因此您不應將其用於直接發送到服務器的代碼 。

  2. 我不確定您是否可以使用「USE MASTER」更改連接中的數據庫。相反,您應該爲 「master」創建另一個連接字符串,並在初始化將執行還原的連接時使用它。

+0

我從我的查詢中刪除了GO,並與master數據庫建立了新的連接,但仍然出現錯誤:由於數據庫正在使用而無法獲得獨佔訪問權限。 RESTORE DATABASE正在異常終止。我應該做的,感謝 –

+0

我找到了解決辦法 首先,我刪除我的查詢去然後我就與主數據庫的新連接, 我殺了我的恢復數據庫的所有連接,使恢復使用此代碼: 使用掌握 ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK立即 RESTORE DATABASE YourDatabase從磁盤= '備份' ALTER DATABASE YourDatabase SET MULTI_USER 爲 感謝如何幫助我。 –