请问如何实现数据的备份

riqnw 2003-03-05 10:56:52
谢谢!
...全文
23 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-03-06
  • 打赏
  • 举报
回复
with adoquery1 do
begin
active:=false;
sql.add('exec 库名..GY_DBBak 你的参数');
execsql;
end;
pengdali 2003-03-06
  • 打赏
  • 举报
回复
调用下过程:

create PROCEDURE GY_DBBak
@bakequip int, -- 备份设备:磁盘&磁带
@bakpath varchar(50), -- 带全路径的备份文件名
@baktype int, -- 完全备份&增量备份
@baklog int, -- ‘0’备份日志
@bakdb int, -- ‘0’备份数据库
@kind varchar(7), --备份还是恢复

@retmsg varchar(20) output --返回信息
AS


DECLARE @DevName_data varchar(50)
DECLARE @DevName_log varchar(50)
declare @db_path varchar(100)
declare @log_path varchar(100)

DECLARE @RC INT

SELECT @db_path = @bakpath + '.dat'
SELECT @log_path = @bakpath + 'log.dat'
SELECT @RC=0

DBCC CHECKDB(Northwind)
/***********************************************************
** CREATE BACKUP AND RESTORE DEVICES
************************************************************/
IF @RC=0
BEGIN

EXEC sp_addumpdevice 'disk', @DevName_data,@db_path

exec sp_addumpdevice 'disk', @DevName_log,@log_path
select @rc=@@error
IF @RC<>0
begin
EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log
SELECT @RC=-1000
return @rc
end
END

IF @kind='backup'
BEGIN
IF @bakequip=0
BEGIN
IF @baktype=0
BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE Northwind TO DISK=@Devname_data
WITH INIT
END
IF @baklog=0
BEGIN
BACKUP LOG Northwind WITH NO_LOG
BACKUP LOG Northwind TO DISK=@DevName_log
WITH INIT,NO_TRUNCATE
END
END
ELSE BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE Northwind TO DISK=@DevName_data
WITH NOINIT
END
IF @baklog=0
BEGIN
BACKUP LOG Northwind WITH NO_LOG
BACKUP LOG Northwind TO DISK=@DevName_log
WITH NOINIT,NO_TRUNCATE
END
END
END
SELECT @retmsg='数据库备份成功!'
END

IF @kind='restore'
BEGIN
RESTORE DATABASE Northwind FROM DISK= @DevName_data WITH REPLACE
SELECT @retmsg='恢复数据库成功!'
END

RETURN 0
My_first 2003-03-05
  • 打赏
  • 举报
回复
在程序通过

放一个adoconnection1控件。

连接到use master上。

再放一个adoquery1. or adodataset 组件.
将adoquery1连接到adoconnection1

with adoquery1 do
begin
active:=false; //name 是你的数据库 ,备份到c:盘
sql.add('use master backup database name to disk='c:\name.bak' with init');
execsql;
end;
riqnw 2003-03-05
  • 打赏
  • 举报
回复
是SQL SERVER
能说详细一些么?我是菜鸟
My_first 2003-03-05
  • 打赏
  • 举报
回复
数据库是什么。

SQL SERVER

use master

backup database name to disk='c;\a.bak' with init; //恢复
restore database name from disk='c:\a.bak' with replace //备份。

在恢复之前需要将所有的连接断开。备份就不必了。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧