如何在VB中使用SQL中的BACKUP命令
编号:QA004253
建立日期: 2001年6月12日 最后修改日期:2003年8月15日
所属类别:
Q
贾瑜:
操作系统: windows
编程工具: visual basic
问题:
如何在VB中使用SQL中的BACKUP命令??我指的是如何在VB中挂这个函数!(例如:使用EXECUTE挂SELECT的,而BACKUP如何使用)
水平: 中级
A回答:
在VB中使用sql命令备份,我没试过。但SQL中有一个自动功能,可以试一试。
在数据库上右击,选择All Tasks>>Backup Database>>Schedule....
binny的意见:
我写的一个比较完整的备份函数,供参考
'以下是对该函数的详细解释,其中有些函数要靠自己编
Public Function CBNBackupDatabase() As Boolean
Dim sFile As String
Dim sSQL As String
Dim lTimeOut As Long
Dim adoTempRS As ADODB.Recordset
On Error GoTo ErrLabel
With gDBRecordConn '本连接为ADODB.Recordset类型的连接
'函数gclsInclude.MyGetFileName的功能是得到要备份的程序文件名称,会显示保存画面
sFile = gclsInclude.MyGetFileName(False, _
"数据库备份文件 (*.BAK)|*.bak", , _
gTAppLicInfo.FileDBRestore, _
"请选择存储的数据库备份文件 ")
If sFile <> "" Then '如果文件名称和路径合法的话,函数gclsInclude.MyGetFileName会返回一个非空的字符串
DoEvents '给鼠标足够的时间显示漏斗状态
Screen.MousePointer = vbHourglass '鼠标显示漏斗为忙的状态
DoEvents
gclsCommon.CBNSplashShow '本函数将出现一个画面,显示备份的进度
gclsCommon.CBNSplashSetMessage "正在备份数据库" '在进度上面显示“正在备份数据库……”的文字动画
DoEvents '给函数gclsCommon.CBNSplashShow足够的时间显示文字动画
sSQL = "USE master" '使用master数据库进行工作
.Execute sSQL '同上
'看一下当前有那些系统设备在使用 gTAppLicInfo.SoftSQLDBase 数据库,其中,gTAppLicInfo.SoftSQLDBase 数据库是被备份的SQL数据库名称
Set adoTempRS = gDBRecordConn.Execute("SELECT * FROM sysdevices WHERE name = '" & gTAppLicInfo.SoftSQLDBase & "'")
If adoTempRS.RecordCount = 0 Then '如果没有人在使用要备份的饿数据库,则建立一个类型为disk的设备,同时开辟一个备份文件名称
sSQL = "EXEC sp_addumpdevice 'disk', '" & gTAppLicInfo.SoftSQLDBase & "','" & sFile & "'"
.Execute sSQL
End If
'由于备份的时间比较长,因此要将ADO连接gDBRecordConn的命令超时延长,但要先将以前的超时使用变量lTimeOut保存下来
lTimeOut = gDBRecordConn.CommandTimeout
'根据需要将超时定为需要的值,这里是500
.CommandTimeout = 500
'开始备份数据库……
sSQL = "BACKUP DATABASE " & gTAppLicInfo.SoftSQLDBase & " TO " & gTAppLicInfo.SoftSQLDBase
.Execute sSQL
'备份完毕后将主ADO连接gDBRecordConn还原
sSQL = "USE " & gTAppLicInfo.SoftSQLDBase
.Execute sSQL
'将主ADO连接gDBRecordConn的超时设置还原
.CommandTimeout = lTimeOut
'如果没有任何错误,本函数将返回TRUE
CBNBackupDatabase = True
End If
End With
ErrLabel:
If Err Then
MsgBox Error, vbCritical '如果出错,将显示错误
End If
' Resume Next
gclsCommon.CBNSplashUnload '将显示备份进度的Splash窗口卸载
gDBRecordConn.CommandTimeout = lTimeOut '还原连接的超时
Screen.MousePointer = vbNormal '鼠标显示正常
End Function
catzhou的意见:
execute "sp_aqddumpdevice ..."
还可以用execute "backup database {databasename} to <backup_file"
创建一个临时备份文件。
东东的意见:
最好使用SQLDMO的backup 对象,如何使用请查看Sql server的 book online。不过要懂点 COM。
lisle的意见:
Dim Svr As New SQLDMO.SQLServer
Dim DB As SQLDMO.Database
Dim BK As New SQLDMO.Backup
Dim DV As New SQLDMO.BackupDevice
Svr.Connect "(local)", "sa"
DV.Type = SQLDMODevice_DiskDump
DV.Name = "pubsbak"
DV.PhysicalLocation = "c:\mssql7\bakup\pubs.bak"
On Error Resume Next
Svr.BackupDevices.Add DV
On Error GoTo 0
BK.Database = "pubs"
BK.Devices = "pubsbak"
BK.Initialize = True
BK.SQLBackup Svr
Svr.BackupDevices.Remove "pubsbak"
相关问题:
QA001758 "MS SQL Server数据库的恢复"
此问题由Frank Xu回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 数据库, database, query。
| |
|
|
| |
|
|