数据库还原
'引用sqldmo object library
dim gsqlserver as sqldmo.sqlserver
on error goto errhandler:
if gsqlserver is nothing then
set gsqlserver = new sqldmo.sqlserver
end if
gsqlserver.logintimeout = 15
frmselectserver.show 1
if frmselectserver.connecstring = "" then exit sub
gsqlserver.connect frmselectserver.connecstring, "sa", "sa"
dim orestore as sqldmo.restore
dim msg as string
dim response as string
set orestore = new sqldmo.restore
orestore.database = "data"
commondialog1.cancelerror = true
on error goto errhandler1
' 设置标志
commondialog1.flags = cdlofnhidereadonly
' 设置过滤器
commondialog1.filter = "all files (data*.*)|data*.*"
' 指定缺省的过滤器
commondialog1.filterindex = 2
' 显示“打开”对话框
'
dim riqi as string
commondialog1.filename = riqi
commondialog1.showopen
' 显示选定文件的名字
riqi = commondialog1.filename
orestore.files = riqi
'当连接的时候,鼠标变化
screen.mousepointer = vbhourglass
'恢复前断开所有的数据库连接
dim idb as adodb.connection, ire as adodb.recordset
set idb = new adodb.connection
set ire = new adodb.recordset
dim iconcstr as string
'连接数据库服务器
iconcstr = "provider=sqloledb;" & _
"data source=myservername;" & _
"initial catalog=master;" & _
"user id=myusername;" & _
"password=mypassword"
idb.open iconcstr
dim isql as string
isql = "select spid from master..sysprocesses where dbid=db_id('data')"
ire.open isql, idb, adopenkeyset, adlockreadonly
frmmoive.label1.caption = "数据库在还原过程中,请等候。"
frmmoive.caption = "数据库恢复"
frmmoive.show vbmodeless, me
doevents
me.enabled = false
dim spath as string
if right(app.path, 1) <> "\" then
spath = app.path & "\"
else
spath = app.path
end if
frmmoive.animation1.open spath & "working.avi"
frmmoive.animation1.play
while ire.eof = false
isql = "kill " & ire(0)
idb.execute isql
ire.movenext
wend
ire.close
idb.close
'恢复数据库
orestore.sqlrestore gsqlserver
'恢复后鼠标返回默认的状态
me.enabled = true
frmmoive.animation1.stop
unload frmmoive
set orestore = nothing
screen.mousepointer = vbdefault
msgbox "数据库还原成功!"
exit sub
errhandler:
msgbox "error " & err.description
exit sub
errhandler1:
' 用户按了“取消”按钮
exit sub