我自己做的!给你参考,不懂再问! Private Sub Command9_Click() On Error GoTo OYKRet Dim MDbConn As ADODB.Connection '---设置ADODB Connection Dim Ret As ADODB.Recordset If (Trim$(Combo1.Text) = "" Or Trim$(Combo2.Text) = "") Then MsgBox "您还没有数据库名称与单位名称。", , "警告信息" Else Dim response, msg, style, title As String style = "是否恢复此数据库?恢复后现在所有数据将丢失!" msg = vbYesNo + vbQuestion + vbDefaultButton1 title = "严重警告信息!" response = MsgBox(style, msg, title) If response = vbYes Then Dim Path As String Dialog1.Action = 1 Path = Dialog1.FileName If Path <> "" Then Label13.Caption = "正在恢复数据库..............." Set MDbConn = New ADODB.Connection MDbConn.Open "Provider=SQLOLEDB.1;Password='" & MPassWD & "';Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source='" & MServer & "'" MDbConn.CursorLocation = adUseClient s = "use [master]" Set Ret = New ADODB.Recordset With Ret .ActiveConnection = MDbConn .CursorType = adOpenDynamic .LockType = adLockOptimistic .Source = s .Open End With s = "select DISTINCT physical_name,logical_name, file_type from msdb..backupfile where backup_set_id in (6)" Set Ret = New ADODB.Recordset With Ret .ActiveConnection = MDbConn .CursorType = adOpenDynamic .LockType = adLockOptimistic .Source = s .Open End With s = "set noexec off set parseonly off" Set Ret = New ADODB.Recordset With Ret .ActiveConnection = MDbConn .CursorType = adOpenDynamic .LockType = adLockOptimistic .Source = s .Open End With s = "RESTORE DATABASE [" & Trim$(Combo1.Text) & "] FROM DISK = N'" & Path & "' WITH FILE = 1, NOUNLOAD , STATS = 10, RECOVERY" Set Ret = New ADODB.Recordset With Ret .ActiveConnection = MDbConn .CursorType = adOpenDynamic .LockType = adLockOptimistic .Source = s .Open End With s = "select name, DATABASEPROPERTY(name, N'IsDetached'), DATABASEPROPERTY(name, N'IsShutdown'), DATABASEPROPERTY(name, N'IsSuspect'), DATABASEPROPERTY(name, N'IsOffline'), DATABASEPROPERTY(name, N'IsInLoad'), DATABASEPROPERTY(name, N'IsInRecovery'), DATABASEPROPERTY(name, N'IsNotRecovered'), DATABASEPROPERTY(name, N'IsEmergencyMode'), DATABASEPROPERTY(name, N'IsInStandBy'), status, category, status2 from master..sysdatabases" Set Ret = New ADODB.Recordset With Ret .ActiveConnection = MDbConn .CursorType = adOpenDynamic .LockType = adLockOptimistic .Source = s .Open End With Combo1.Text = Combo1.List(0) Combo2.Text = Combo2.List(0) Set Ret = Nothing
MsgBox "数据库恢复成功", , "后台管理工具" Label13.Caption = "" End If End If End If Exit Sub OYKRet: MsgBox "数据库恢复没有成功" & Chr(13) & Err.Number & Err.Description, , "后台管理工具" Label13.Caption = "" End Sub ‖天天写程序‖ ‖夜夜泡小妞‖ ‖身兼数职做代码‖ ‖晚晚工作到天明‖ ‖为何人生如此苦‖ ‖泡妞消费数目高‖ ‖我看世俗本无趣‖ ‖程序伤神妞伤人‖ ‖不再见女人‖ ‖不想写程序‖
是你自己占用 先打开别的数据库,如master use master restore database db from ...
Private Sub Command9_Click()
On Error GoTo OYKRet
Dim MDbConn As ADODB.Connection '---设置ADODB Connection
Dim Ret As ADODB.Recordset
If (Trim$(Combo1.Text) = "" Or Trim$(Combo2.Text) = "") Then
MsgBox "您还没有数据库名称与单位名称。", , "警告信息"
Else
Dim response, msg, style, title As String
style = "是否恢复此数据库?恢复后现在所有数据将丢失!"
msg = vbYesNo + vbQuestion + vbDefaultButton1
title = "严重警告信息!"
response = MsgBox(style, msg, title)
If response = vbYes Then
Dim Path As String
Dialog1.Action = 1
Path = Dialog1.FileName
If Path <> "" Then
Label13.Caption = "正在恢复数据库..............."
Set MDbConn = New ADODB.Connection
MDbConn.Open "Provider=SQLOLEDB.1;Password='" & MPassWD & "';Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source='" & MServer & "'"
MDbConn.CursorLocation = adUseClient
s = "use [master]"
Set Ret = New ADODB.Recordset
With Ret
.ActiveConnection = MDbConn
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Source = s
.Open
End With
s = "select DISTINCT physical_name,logical_name, file_type from msdb..backupfile where backup_set_id in (6)"
Set Ret = New ADODB.Recordset
With Ret
.ActiveConnection = MDbConn
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Source = s
.Open
End With
s = "set noexec off set parseonly off"
Set Ret = New ADODB.Recordset
With Ret
.ActiveConnection = MDbConn
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Source = s
.Open
End With
s = "RESTORE DATABASE [" & Trim$(Combo1.Text) & "] FROM DISK = N'" & Path & "' WITH FILE = 1, NOUNLOAD , STATS = 10, RECOVERY"
Set Ret = New ADODB.Recordset
With Ret
.ActiveConnection = MDbConn
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Source = s
.Open
End With
s = "select name, DATABASEPROPERTY(name, N'IsDetached'), DATABASEPROPERTY(name, N'IsShutdown'), DATABASEPROPERTY(name, N'IsSuspect'), DATABASEPROPERTY(name, N'IsOffline'), DATABASEPROPERTY(name, N'IsInLoad'), DATABASEPROPERTY(name, N'IsInRecovery'), DATABASEPROPERTY(name, N'IsNotRecovered'), DATABASEPROPERTY(name, N'IsEmergencyMode'), DATABASEPROPERTY(name, N'IsInStandBy'), status, category, status2 from master..sysdatabases"
Set Ret = New ADODB.Recordset
With Ret
.ActiveConnection = MDbConn
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Source = s
.Open
End With
Combo1.Text = Combo1.List(0)
Combo2.Text = Combo2.List(0)
Set Ret = Nothing
MsgBox "数据库恢复成功", , "后台管理工具"
Label13.Caption = ""
End If
End If
End If
Exit Sub
OYKRet:
MsgBox "数据库恢复没有成功" & Chr(13) & Err.Number & Err.Description, , "后台管理工具"
Label13.Caption = ""
End Sub
‖天天写程序‖
‖夜夜泡小妞‖
‖身兼数职做代码‖
‖晚晚工作到天明‖
‖为何人生如此苦‖
‖泡妞消费数目高‖
‖我看世俗本无趣‖
‖程序伤神妞伤人‖
‖不再见女人‖
‖不想写程序‖
先打开别的数据库,如master
use master
restore database db from ...