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的长度变化