SQL2000的数据库如何备份与还原?求策略和源码。
我在还原时,遇到错误:
说SQL未能独占打开。还原失败。
我知道是由于其它程序或客户端还在打开数据库,
有没有办法在这种情况下也能还原成功呢?
我的代码有没有问题?
Private Sub cmdBack_Click()
'备份
On Error Resume Next
Dim adoBak As New ADODB.Recordset
Dim strSQL As String
Dim strFilePath As String '备份的文件的完整路径
Dim db as new AdoDb.Connect
db.Open "PROVIDER=MSDASQL;DRIVER={SQL Server};SERVER=" & GetIPHostName() & ";DATABASE=pubs;" 'UID=sa;PWD=" '& SQLPWD
strFilePath = App.Path & "\Data\Backup.Bak"
If Dir(strFilePath) = "" Then
MsgBox "备份的目标不文件不存在!"
Else
strSQL = "EXEC sp_addumpdevice 'Minerva','abc','" & strFilePath & "'"
adoBak.Open strSQL, db, adOpenDynamic, adLockBatchOptimistic
StatusBar.Panels(2) = "正在备份数据..."
strSQL = "BACKUP DATABASE Beauty TO Minerva"
adoBak.Open strSQL, db, adOpenDynamic, adLockBatchOptimistic
MsgBox "备份成功!"
End If
End Sub
-----------------------------------------
Private Sub cmdRestore_Click()
'还原
On Error GoTo Err:
Dim i As Long
Dim sqlPWS As String
Dim db as new AdoDb.Connect
sqlPWS = "1234"
If MsgBox("警告:如果你还原,则在你上次备份之后的数据会丢失!" _
& "你确定要还原数据吗?", vbYesNoCancel + vbQuestion) = vbYes Then
db.Open "PROVIDER=MSDASQL;DRIVER={SQL Server};SERVER=PCName" & ";DATABASE=pubs;" 'UID=sa;PWD=" '& SQLPWD
StatusBar.Panels(2) = "正在还原数据..."
adoPro.Open "RESTORE DATABASE Beauty FROM DISK='D:\Temp\MyBak.BBB' with replace ,RECOVERY" _
, db, adOpenDynamic, adLockBatchOptimistic
MsgBox "还原成功!"
StatusBar.Panels(2) = "正在还原成功!"
End
End If
Exit Sub
Err:
MsgBox "还原时出现错误:" & vbCrLf & Err.Description
End Sub