SQL2000的数据库如何备份与还原?求策略和源码。

lyqof908 2002-05-08 11:45:51
我在还原时,遇到错误:
说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
...全文
11 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lyqof908 2002-05-09
你们用SQL做后台,备份是如何处理的?
回复
cm8983 2002-05-08
因为你的程序只有open connect没有close.
在end sub前加
adoBak.close
db.close
及异常退出时均加上,
看一下:
http://www.csdn.net/expert/topic/681/681045.xml?temp=.3255884
回复
zyb_8022 2002-05-08
可能跟打开数据集的属性有关吧如adOpenDynamic之类的
回复
lyqof908 2002-05-08
谢过。
回复
发动态
发帖子

1180

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
社区公告
暂无公告