100分下班揭帖!求如何通过delphi备份数据库数据,还有还原!

yetti 2003-08-21 08:52:55
不管结果如何,下班揭帖,请大家帮忙!
...全文
46 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
nyf1220 2003-09-21
  • 打赏
  • 举报
回复
高人,
学习!
Drate 2003-09-21
  • 打赏
  • 举报
回复
备份与恢复数据库的存储过程

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
abcccccc 2003-09-21
  • 打赏
  • 举报
回复
学习强烈 关注!
hnhb 2003-09-21
  • 打赏
  • 举报
回复
同意一楼
waller 2003-09-21
  • 打赏
  • 举报
回复
我还是在找怎样备份\还原。尤其是bde+odbc方式的。
空中居士 2003-09-21
  • 打赏
  • 举报
回复
通过文件复制可以实现备份,恢复好像sql server 不支持直接复制恢复,总是提醒共享错误.

procedure TFrmMain.mnuBakDataClick(Sender: TObject);
var
ssFileName:string;
begin
//目录管理.mdb 文件备份
ssFileName:=sAppPath+'\目录管理.mdb';
try
SaveDialog1.Execute;
CopyFile(PChar(ssFileName),PChar(savedialog1.FileName),False);
except
begin
showmessage('文件备份过程中出错');
end;
end;
end;
这是备份aceess 的,
mib3000 2003-09-21
  • 打赏
  • 举报
回复
学习
zengwj 2003-09-21
  • 打赏
  • 举报
回复
procedure TMainForm.btnBackupCreatClick(Sender: TObject);
var
filePath,fSQLStr:string;
begin
filepath:='';
backupdialog.Title:='备份到';
if backupdialog.Execute then filepath:=backupdialog.FileName+'.bak';
if length(filepath)<4 then exit;
fSQLStr := 'BACKUP DATABASE ' + fDB_name +
' TO DISK = ' + '''' + filepath + ''''+'with init';
if Ado_BackUp.Active then Ado_BackUp.Close;
Ado_BackUp.SQL.Clear;
Ado_BackUp.SQL.Add(fSQLStr);
Try
Ado_BackUp.ExecSQL;
Except
MessageDlg('数据库备件失败.',mtwarning,[mbOk], 0);
exit;
end;//try
MessageDlg('数据库备件成功.',mtinformation,[mbOk], 0);
end;

fDB_name是数据库的名称
kingtech 2003-09-21
  • 打赏
  • 举报
回复
提示共享错误是 DELPHI 数据集ACTIVE 属性未关.

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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