怎样用SQL语句在程序中备份和恢复数据库

zhanghf 2003-08-20 10:18:16
我想在程序中用SQL 语句备份和恢复数据库,应该怎样写SQL ??
在恢复数据库时,我应该连接哪个数据库,才能此不会冲突?
...全文
576 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
CrazyFor 2003-08-20
  • 打赏
  • 举报
回复
在恢复数据库时,可以连接到MASTER库.


-----------------------------
BACKUP
备份整个数据库、事务日志,或者备份一个或多个文件或文件组。有关数据库备份和恢复操作的更多信息,请参见备份和还原数据库。

RESTORE
还原使用 BACKUP 命令所做的备份。有关数据库备份和还原操作的更多信息,请参见备份和还原数据库。


具体参考联机帮助.
pengdali 2003-08-20
  • 打赏
  • 举报
回复
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
select @DevName_data='dali',@DevName_log='dalilog'

DBCC CHECKDB(数据库名)
/***********************************************************
** 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 数据库名 TO DISK=@Devname_data
WITH INIT
END
IF @baklog=0
BEGIN
BACKUP LOG 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 TO DISK=@DevName_log
WITH INIT,NO_TRUNCATE
END
END
ELSE BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE 数据库名 TO DISK=@DevName_data
WITH NOINIT
END
IF @baklog=0
BEGIN
BACKUP LOG 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 TO DISK=@DevName_log
WITH NOINIT,NO_TRUNCATE
END
END
END
SELECT @retmsg='数据库备份成功!'
END

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

EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log

RETURN 0

---测试:
declare @ varchar(100)
exec gy_dbbak 0,'aa',0,0,0,'backup',@ output
select @
pengdali 2003-08-20
  • 打赏
  • 举报
回复
--备份
backup database sys to disk='c:\目录\a.bak' with init


--还原
use master
RESTORE DATABASE TestDB FROM DISK = 'c:\2002.dat'
pengdali 2003-08-20
  • 打赏
  • 举报
回复
--备份
backup database sys to disk='c:\目录\a.bak' with init


--还原
use master
RESTORE DATABASE TestDB FROM DISK = 'c:\2002.dat'
hjb111 2003-08-20
  • 打赏
  • 举报
回复
恢复时不要联接哪个数据库!会根据你的命名产生一个数据库!也可以恢复到相应的数据库里!
hjb111 2003-08-20
  • 打赏
  • 举报
回复
备份:
use master
backup database yourdatabase to disk='d:\...\***.bak'
还原:
user master
restore database yourdatabase from disk='d:\...\***.bak'

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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