当前位置:编程学习 > VB >>

VB还原备份SQL出错

Dim cPMasterConn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim mSqlMaster As String Private Sub Form_Load() ' mSqlMaster = "provider=SQLOLEDB;server=" & HostName & ";database=master;uid=" & ConnectUserName & ";pwd=" & ConnectPassWord mSqlMaster = "provider=SQLOLEDB;server=" & HostName & ";database=master;uid=adc;pwd=" cPMasterConn.CursorLocation = adUseClient cPMasterConn.CommandTimeout = 0 cPMasterConn.Open mSqlMaster Set rs = cPMasterConn.Execute("select * from sysdevices where left(name,5)='人事数据库'") If rs.RecordCount = 0 Then MsgBox "没有" & cboWeek & "的备份数据!", vbExclamation, "提示" rs.Close Exit Sub End If rs.Close End Sub Private Sub cmdOk_Click() On Error GoTo Err_Hand If MsgBox("此操作将恢复 " & Text1 & " !您确认吗(Y/N)?", vbYesNo + vbQuestion + vbDefaultButton2, "提示") = 7 Then Exit Sub cPMasterConn.Execute "RESTORE DATABASE 教学成绩管理数据库 FROM DISK = '" & "e:\" & Text1 & "'" Me.MousePointer = vbHourglass cPMasterConn.Close MsgBox "数据恢复完毕!", vbInformation, "提示" Unload Me Unload MainFrm Exit Sub Err_Hand: If cPMasterConn.Errors.Count = 0 Then MsgBox "错 误 号:" & Err.Number & vbCrLf & _ "错误描述:" & Err.Description & vbCrLf & _ "错误来源:" & Err.Source & vbCrLf & _ "请通知系统管理员...", vbExclamation, "提示" Me.MousePointer = vbDefault Exit Sub End If Select Case cPMasterConn.Errors(0).NativeError Case 3101 MsgBox "数据库还有别人在使用,请关闭后重试...", vbExclamation, "提示" Me.MousePointer = vbDefault Exit Sub Case Else MsgBox "错 误 号:" & cPMasterConn.Errors(0).NativeError & vbCr & vbLf & _ "错误信息:" & cPMasterConn.Errors(0).Description & vbCr & vbLf & _ vbCr & vbLf & "请通知系统管理员!", vbExclamation, "提示" Me.MousePointer = vbDefault Exit Sub End Select End Sub Private Sub cmdExit_Click() cPMasterConn.Close Unload Me End Sub 我的备份文件“人事数据库201206111328备份”确实存在,结果却提示下面错误 为什么呢 急救 急救!!!!
追问:不行啊  脱机的话 连备份都不行了   我直接进“企业管理器”里也可以还原
但用VB就不行呢
答案:在恢复数据库前做如下操作试试
Dim Temp_String As String
Temp_Recordset As ADODB.Recordset

Temp_String = "Select spid From master.dbo.sysdatabases  Where dbid=db_id('" & 教学成绩管理数据库 & "')"
Temp_Recordset.Open Temp_String, cPMasterConn, adOpenKeyset, adLockReadOnly
While Temp_Recordset.EOF = False
    Temp_String = "kill " & Temp_Recordset(0)
    cPMasterConn.Execute Temp_String
    Temp_Recordset.MoveNext
Wend
Temp_Recordset.Close
其他:打开数据库,在你用的数据库名“右键”选择“任务”,然后“脱机”。再试试重新备份一下。 先把"教学成绩管理数据库"数据库删除了试一下 这是你的数据库文件已经被打开了,所以不能复制。
1、请确保外界程序没有打开数据库。
2、确保你的程序在所有的连接 open 之后,一定要记得 close 

上一个:Private Sub CmdExit_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 49 Call Lbl1_Click Case
下一个:vb中如何用定时器判断text的长度变化

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,