最近在用VB撰寫備份與還原資料庫的程式,備份沒有問題,發現還原是提示錯誤。撰寫代碼如下:
Private Sub Command2_Click()
If Text1.Text = "" Then
MsgBox "請選擇要恢復的資料檔案!", vbInformation, "提示"
Exit Sub
Else
ret = MsgBox("資料恢復操作將會覆寫以前的所有資料并且覆寫后無法恢復,您確定要進行恢復操作嗎?", vbQuestion + vbOKCancel, "提示")
If ret = vbOK Then
Dim cn As New ADODB.Connection
Dim sn As New ADODB.Recordset
Dim s_restore As String
Me.MousePointer = 11
cn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;server=" & d1 & ";Initial Catalog=master;Data Source=127.0.0.1;user id=sa;password=" & d3 & ""
sn.Open "select spid from sysprocesses where dbid=db_id('" & Me.Combo1.Text & "')", cn
Do While Not sn.EOF
cn.Execute "kill " & sn("spid")
sn.MoveNext
Loop
sn.close
s_restore = "restore database " & Me.Combo1.Text & " from disk='" + Trim(Text1.Text) + "' with REPLACE"
cn.Execute s_restore
'Debug.Print gs_conn_string
'此時需要連接master資料庫才能完成資料恢復操作
'同上student1為需要恢復的資料庫
s_restore = "restore database " & Me.Combo1.Text & " from disk='" + Trim(Text1.Text) + "'"
'text1一個用于記錄需要恢復檔案的地址的textbox
cn.Execute s_restore
cn.BeginTrans
If Err.Number = 0 Then
cn.CommitTrans
MsgBox "資料恢復成功!", vbInformation, "提示"
Command1.Enabled = True
Label1.Visible = False
Else
cn.RollbackTrans
MsgBox "資料恢復失敗!", vbCritical, "提示"
Command1.Enabled = True
End If
cn.close
Set cn = Nothing
Me.MousePointer = 1
Else
Exit Sub
End If '''''''''''''''''''''''''''''''''''''''''
On Error Resume Next
Dim DBC As New Connection
If db.State = 1 Then
db.close
End If
db.ConnectionString = DBC.SqlConnectString(d1, d2, d3)
rs.CursorType = adOpenDynamic
rs.CursorLocation = adUseClient
rs.LockType = adLockOptimistic
db.CursorLocation = adUseClient
db.Open

Set cmd.ActiveConnection = db
If Err.Number Then
MsgBox Err.Description, 16 + vbOKOnly, Err.Number
Exit Sub
End If
db.DefaultDatabase = " & Me.Combo1.Text & "
If Err.Number Then
MsgBox Err.Description, 16 + vbOKOnly, Err.Number
Exit Sub
End If
End If
提示錯誤為:無法重寫檔案‘d:\sql\sql az\MSSQL\data\water_hammer_data.MDF'。資料庫'water_hammer'正在使用該檔案。求各位大神幫忙解答!

uj5u.com熱心網友回復:
崩潰的時候在彈出的對話框按相應按鈕進入除錯,按Alt+7鍵查看Call Stack里面從上到下列出的對應從里層到外層的函式呼叫歷史。雙擊某一行可將游標定位到此次呼叫的源代碼或匯編指令處,看不懂時雙擊下一行,直到能看懂為止。uj5u.com熱心網友回復:
'Debug.Print gs_conn_string'此時需要連接master資料庫才能完成資料恢復操作
請先理解這句注釋的正確含義
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
先用管理器把這個資料庫分離試下?轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/101120.html
上一篇:求教excel組合框的使用~!
下一篇:如何在vb代碼內輸入特殊字符
