关于数据库备份和还原的问题

my_wei 2002-02-05 04:56:08
我这里需要备份数据库,请问vb里头如何备份,用什么方法备份到指定的文件?然后怎么还原数据库。谢谢,如有代码更好,谢谢
...全文
144 点赞 收藏 13
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
my_wei 2002-02-09
明白一点了,送分,
回复
limit 2002-02-05
to red9152:
如不用共享,则须dat文件和log文件同名,本也有代码的,但一时找不到。

to my_wei:
这是用SQL的存储过程在SQL中建备份设备进行备份的,
回复
my_wei 2002-02-05
我研究看看
回复
my_wei 2002-02-05
我看看,
回复
westgirl 2002-02-05
备份:sql = "BACKUP DATABASE xhj TO disk='C:\MSSQL7\BACKUP\xhj" & riqi & "' with noinit"
cn.Execute (sql)
恢复: sql = "RESTORE DATABASE xhj FROM disk='C:\mssql7\BACKUP\" & Trim(Txtfile.Text) & "'"
cn.Execute (sql)
回复
my_wei 2002-02-05
'添加备份设备
rst.Open "sp_addumpdevice 'disk','SQLbackuptemp','" & strPath & "\" & strDatabaseName & ".dat'", cnn, , adCmdTable

这句话不是很明白哦?设备?
回复
red9152 2002-02-05
用VB代码备份到本机上时本机目录必须完全共享,不知能不能不用共享
回复
limit 2002-02-05
只对网络路径有效,即"\\main\backdata"
引用ADO

备份
'参数:数据库服务器名,数据库名,备份路径
Public Function SQLBackup(ByVal strSrvName As String, ByVal strDatabaseName As String, ByVal strPath As String) As Boolean

'引擎,服务器名,数据库名,用户,密码
strConnect = "Provider=SQLOLEDB.1;User ID=sa;" & _
"Initial Catalog=master;Data Source=" & strSrvName
cnn.Open strConnect '连接数据库

rst.CursorLocation = adUseClient '参数设定
rst.CursorType = adOpenDynamic
rst.LockType = adLockOptimistic

'添加备份设备
rst.Open "sp_addumpdevice 'disk','SQLbackuptemp','" & strPath & "\" & strDatabaseName & ".dat'", cnn, , adCmdTable

'备份数据库
rst.Open "backup database " & strDatabaseName & " to SQLbackuptemp", cnn, , adCmdTable

'删除添加的设备
rst.Open "sp_dropdevice 'SQLbackuptemp' "

Set rst = Nothing
Set cnn = Nothing
SQLBackup = True '成功返回

Exit Function

ERRHandle:
SQLBackup = False '失败返回
End Function

'恢复
'参数:数据库服务器名,数据库名,备份路径
Public Function SQLRestore(ByVal strSrvName As String, ByVal strDatabaseName As String, ByVal strPath As String) As Boolean

On Error GoTo ERRHandle

Dim strConnect As String

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset

'引擎,服务器名,数据库名,用户,密码
strConnect = "Provider=SQLOLEDB.1;User ID=sa;" & _
"Initial Catalog=master;Data Source=" & strSrvName
cnn.Open strConnect '连接数据库

rst.CursorLocation = adUseClient
rst.CursorType = adOpenDynamic
rst.LockType = adLockOptimistic


'添加备份设备
rst.Open "sp_addumpdevice 'disk','SQLRestoreTemp','" & strPath & "'", cnn, , adCmdTable

'恢复数据库
rst.Open "restore database " & strDatabaseName & " from SQLRestoreTemp", cnn, , adCmdTable

'删除添加的数据库
rst.Open "sp_dropdevice 'SQLRestoreTemp' ", cnn, , adCmdTable

Set rst = Nothing
Set cnn = Nothing

SQLRestore = True '成功返回
Exit Function

ERRHandle:
SQLRestore = False '失败返回
End Function
回复
Fanks 2002-02-05
是覆盖的。
回复
my_wei 2002-02-05
恢复数据的时候原数据库的内容是覆盖还是累加进去呢?Fanks() 
回复
40Star 2002-02-05
什么DB?
如果是SQLSErver直接用ADOCON.execute "SQlServer中的Backup database细节查SqlServer online book"
回复
Fanks 2002-02-05
执行SQL语句"BACKUP DATABASE [数据库] TO DISK='带路径文件名'"即可备份
"RESTORE DATABASE [数据库] FROM DISK ='带路径文件名'"可恢复数据
回复
my_wei 2002-02-05
我的数据库里头有很多表,我想整个把它备份了,如果库损坏以便还原,
回复
发动态
发帖子

1180

社区成员

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