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
up 在程序通过 放一个adoconnection1控件。 连接到use master上。 再放一个adoquery1. or adodataset 组件.将adoquery1连接到adoconnection1 with adoquery1 dobegin active:=false; //name 是你的数据库 ,备份到c:盘 sql.add('use master backup database name to disk='c:\name.bak' with init'); execsql;end;
------------------------------------------------------------------ 最简单的SQL语句:备份与还原SQL Server自带的数据库在服务器上备份: use Northwind Backup database Northwind to disk='d:\Northwind_bak.dat' with initRESTORE DATABASE NorthNwind FROM DISK = 'd:\Northwind_bak.dat'------------------------------------------------------------------ 备份数据库这一操作在客户机上实现 客户机:machine 共享目录:share (要完全共享,可写权限)backup: bakcup database dbname to disk='\\machine\share\data.bak' with init \\machine\share目录要有写权限。restore: restore database dbname from disk='\\machine\share\data.bak' // 备注:restore 语句有很多的选项,可以查看企业管理器的在线帮助。如下 with replace, move 'dbname_dat' to 'c:\mssql7\data\dbname.mdf', move 'dbname_log' to 'c:\mssql7\data\dbname.log' 其中'c:\mssql7\data\'是服务器的目录,这点要注意------------------------------------------------------------------------------备份与还原数据库的相关内容: SQL Server 7.0数据库备份有四种:完全数据库备份、增量数据库备份、事务日志备份、数据库文件或文件组备份。在数据库崩溃时,应该首先尝试备份事务日志(这一点很重要),然后恢复最后的数据库备份、该次数据库备份后的所有增量备份,最后恢复事务日志备份,这样可以将数据库恢复到崩溃前的状态。备份是定期的,而不是实时的,所以利用备份并不能完全恢复数据库,它只能将数据库恢复到制作备份的那一刻 ...... 数据库日志是实时的,他忠实的记录下所有对数据库的更新操作。因此,当磁盘出现故障造成数据库损坏时,就可以首先利用备份恢复数据库(大部分数据),然后运行数据库日志,即将备份后所做的操作重新在做一遍,从而将数据库完全恢复。 --备份完整的数据库--------------------------------------------------------------- //创建一个备份设备: -- 1. Create the backup device for the full MyNwind backup./// USE master EXEC sp_addumpdevice 'disk', 'MyNwind_2', 'c:\mssql7\backup\MyNwind_2.dat'-- 2. Back up the full MyNwind database.BACKUP DATABASE MyNwind TO MyNwind_2--备份数据库的日志--------------------------------------------------------------- --1. Create the log backup device.USE master EXEC sp_addumpdevice 'disk', 'MyNwindLog1', 'c:\mssql7\backup\MyNwindLog1.dat'--2. Update activity has occurred before this point. Back up the log of the MyNwind database.BACKUP LOG MyNwind TO MyNwindLog1------- try AdoQuery1.Close; AdoQuery1.SQL.Clear; AdoQuery1.SQL.Add('backup database pubs'); AdoQuery1.SQL.Add('to disk='+''''+edtPath.Text+''''); AdoQuery1.ExecSQL; except ShowMessage('备份数据库失败!'); exit; end; 注:参阅了《大本营3.0》
@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
在程序通过 放一个adoconnection1控件。 连接到use master上。 再放一个adoquery1. or adodataset 组件.将adoquery1连接到adoconnection1 with adoquery1 dobegin active:=false; //name 是你的数据库 ,备份到c:盘 sql.add('use master backup database name to disk='c:\name.bak' with init'); execsql;end;
最简单的SQL语句:备份与还原SQL Server自带的数据库在服务器上备份:
use Northwind
Backup database Northwind to disk='d:\Northwind_bak.dat' with initRESTORE DATABASE NorthNwind FROM DISK = 'd:\Northwind_bak.dat'------------------------------------------------------------------
备份数据库这一操作在客户机上实现
客户机:machine
共享目录:share (要完全共享,可写权限)backup:
bakcup database dbname to disk='\\machine\share\data.bak' with init
\\machine\share目录要有写权限。restore:
restore database dbname from disk='\\machine\share\data.bak'
//
备注:restore 语句有很多的选项,可以查看企业管理器的在线帮助。如下
with replace, move 'dbname_dat' to 'c:\mssql7\data\dbname.mdf',
move 'dbname_log' to 'c:\mssql7\data\dbname.log'
其中'c:\mssql7\data\'是服务器的目录,这点要注意------------------------------------------------------------------------------备份与还原数据库的相关内容:
SQL Server 7.0数据库备份有四种:完全数据库备份、增量数据库备份、事务日志备份、数据库文件或文件组备份。在数据库崩溃时,应该首先尝试备份事务日志(这一点很重要),然后恢复最后的数据库备份、该次数据库备份后的所有增量备份,最后恢复事务日志备份,这样可以将数据库恢复到崩溃前的状态。备份是定期的,而不是实时的,所以利用备份并不能完全恢复数据库,它只能将数据库恢复到制作备份的那一刻 ...... 数据库日志是实时的,他忠实的记录下所有对数据库的更新操作。因此,当磁盘出现故障造成数据库损坏时,就可以首先利用备份恢复数据库(大部分数据),然后运行数据库日志,即将备份后所做的操作重新在做一遍,从而将数据库完全恢复。
--备份完整的数据库---------------------------------------------------------------
//创建一个备份设备:
-- 1. Create the backup device for the full MyNwind backup.///
USE master
EXEC sp_addumpdevice 'disk', 'MyNwind_2', 'c:\mssql7\backup\MyNwind_2.dat'-- 2. Back up the full MyNwind database.BACKUP DATABASE MyNwind TO MyNwind_2--备份数据库的日志---------------------------------------------------------------
--1. Create the log backup device.USE master
EXEC sp_addumpdevice 'disk', 'MyNwindLog1', 'c:\mssql7\backup\MyNwindLog1.dat'--2. Update activity has occurred before this point. Back up the log of the MyNwind database.BACKUP LOG MyNwind TO MyNwindLog1-------
try
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('backup database pubs');
AdoQuery1.SQL.Add('to disk='+''''+edtPath.Text+'''');
AdoQuery1.ExecSQL;
except
ShowMessage('备份数据库失败!');
exit;
end;
注:参阅了《大本营3.0》