还原备份数据库:编程实现备份和还原数据库来源: 发布时间:星期五, 2008年9月26日 浏览:239次 评论:0
注意,下面备份还原都是用存储过程实现!
if exists (select * from dbo.sysobjects where id = object_id(N\'[dbo].[p_backupdb]\') and OBJECTPROPERTY(id, N\'IsProcedure\') = 1) drop procedure [dbo].[p_backupdb] GO /*--备份数据库的通用存储过程 --邹建 2003.10--*/ /*--调用示例 --备份当前数据库 exec p_backupdb @bkpath=\'c:\\\',@bkfname=\'\\DBNAME\\_\\DATE\\_db.bak\' 存储过程实现备份和还原数据库: if exists (select * from dbo.sysobjects where id = object_id(N\'[dbo].[p_backupdb]\') and OBJECTPROPERTY(id, N\'IsProcedure\') = 1) drop procedure [dbo].[p_backupdb] GO /*--备份数据库的通用存储过程 --邹建 2003.10--*/ /*--调用示例 --备份当前数据库 exec p_backupdb @bkpath=\'c:\\\',@bkfname=\'\\DBNAME\\_\\DATE\\_db.bak\' --差异备份当前数据库 exec p_backupdb @bkpath=\'c:\\\',@bkfname=\'db_\\DATE\\_df.bak\',@bktype=\'DF\' --备份当前数据库日志 exec p_backupdb @bkpath=\'c:\\\',@bkfname=\'db_\\DATE\\_log.bak\',@bktype=\'LOG\' --*/ create proc p_backupdb @dbname sysname=\'\', --要备份的数据库名称,不指定则备份当前数据库 @bkpath nvarchar(260)=\'\', --备份文件的存放目录,不指定则使用SQL默认的备份目录 @bkfname nvarchar(260)=\'\', --备份文件名,文件名中可以用\\DBNAME\\代表数据库名,\\DATE\\代表日期,\\TIME\\代表时间 @bktype nvarchar(10)=\'DB\', --备份类型:\'DB\'备份数据库,\'DF\' 差异备份,\'LOG\' 日志备份 @appendfile bit=1, --追加/覆盖备份文件 @password nvarchar(20)=\'\' --为备份文件设置的密码(仅sql2000支持),设置后,恢复时必须提供此密码 as declare @sql varchar(8000) if isnull(@dbname,\'\')=\'\' set @dbname=db_name() if isnull(@bkpath,\'\')=\'\' begin select @bkpath=rtrim(reverse(filename)) from master..sysfiles where name=\'master\' select @bkpath=substring(@bkpath,charindex(\'\\\',@bkpath)+1,4000) ,@bkpath=reverse(substring(@bkpath,charindex(\'\\\',@bkpath),4000))+\'BACKUP\\\' end if isnull(@bkfname,\'\')=\'\' set @bkfname=\'\\DBNAME\\_\\DATE\\_\\TIME\\.BAK\' set @bkfname=replace(replace(replace(@bkfname,\'\\DBNAME\\\',@dbname) ,\'\\DATE\\\',convert(varchar,getdate(),112)) ,\'\\TIME\\\',replace(convert(varchar,getdate(),108),\':\',\'\')) set @sql=\'backup \'+case @bktype when \'LOG\' then \'log \' else \'database \' end +@dbname +\' to disk=\'\'\'+@bkpath+@bkfname +\'\'\' with \'+case @bktype when \'DF\' then \'DIFFERENTIAL,\' else \'\' end +case @appendfile when 1 then \'NOINIT\' else \'INIT\' end +case isnull(@password,\'\') when \'\' then \'\' else \',PASSWORD=\'\'\'+@password+\'\'\'\' end exec(@sql) go if exists (select * from dbo.sysobjects where id = object_id(N\'[dbo].[p_RestoreDb]\') and OBJECTPROPERTY(id, N\'IsProcedure\') = 1) 0
相关文章
读者评论
发表评论 |