备份所有数据库代码

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

/*--备份所有数据库

备份的文件名为数据库名+.bak
将所有的用户数据库(或指定的数据库列表)
备分到指定的目录下.

--邹建 2003.10(引用请保留此信息)--
*/

/*--调用示例

--备份所有用户数据库
exec p_backupdb @bkpath='c:/',@dbname=''

--备份指定数据库
exec p_backupdb @bkpath='c:/',@dbname='客户资料,xzkh_new'
--
*/

create proc p_backupdb
@bkpath nvarchar(260)='', --备份文件的存放目录,不指定则使用SQL默认的备份目录
@dbname nvarchar(4000)='' --要备份的数据库名称列表,不指定则备份所有用户数据库
as
declare @sql varchar(8000)

--检查参数
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
else if right(@bkpath,1)<>'/' set @bkpath=@bkpath+'/'

--得到要备份的数据库列表
if isnull(@dbname,'')=''
declare tb cursor local for
select name from master..sysdatabases where name not in('master','tempdb','model','msdb')
else
declare tb cursor local for
select name from master..sysdatabases
where name not in('master','tempdb','model','msdb')
and(@dbname like '%,'+name+',%' or @dbname like name+',%' or @dbname like '%,'+name)

--备份处理
open tb
fetch next from tb into @dbname
while @@fetch_status=0
begin
set @sql='backup database '+@dbname
+' to disk='''+@bkpath+@dbname
+'.bak'' with format'
exec(@sql)
fetch next from tb into @dbname
end
close tb
deallocate tb
go
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、 需求分析目前在不少部门存储着大量的数据,包括数据库数据和文件数据,并处于不断更新、不断扩充的状态。数据量大,数据源分布广,同一设备上数据分布散等特点使得对这些数据维护和管理有一些困难。为防止数据因某些不可控制的事故而丢失,对上述数据必须进行备份,以备在主数据丢失时,进行还原。目前的备份手段多为人工定期(不定期)地进行,这样就存在着以下一些问题:1.人工备份多在正常工作期间进行,这样数据备份时很可能会影响数据在正常业务中的使用,会造成业务应用系统性能不稳定,严重的还会造成数据丢失。2.由于数据分布散,人工备份时难于及时掌握数据更新动态,为防止数据备份有丢失,往往只能“一锅炖”,每次都做完整性拷贝,这样每次备份量将叠加,备份延时将增加,造成网络资源浪费,网络流量增加,从而可能会对网络的日常通信造成影响。3.工作烦琐,操作不方便。 二、 系统介绍1. 系统简介软件可自动完成SQL Server数据库和文档的数据定时自动备份,由用户选择对哪些数据库或文档进行数据备份,提供对备份、还原数据作业的管理、分析、日志跟踪等功能。2.软件功能: (1)自动生成备份指令,减少备份的难度,一般用户也可操作,也可由技术人员设好后发给用户。 (2)定时备份按用户的设定的作业时间自动执行。 (3)支持用户任意时刻的手动备份。 (4)支持数据的完整备份、差异备份、增量备份(该项功能目前只用于文件项目)。 (5)完善的数据库还原功能,随时可能数据进行还原操作。 (6)操作日志跟踪功能。用户的操作都保留在日志中,以供备备察。 (7)系统维护提供对备份数据、日志、操作日志的清理功能。3.解决问题针对人工数据备份存在的问题,结合单位生活生产情况,该软件能够基本上解决目前人工数据备份的弊端。(1)通过设置定时备份时刻,从而可以避开数据日常的业务工作期,选择夜间没有数据访问或很少数据访问的时间进行。(2)通过设置备份方式(如:差异备份、增量备份),可以避免每次备份不必要重复备份量。(3)通过对日志的跟踪,可以很快很及时地了解数据备份情况(包括每次的耗时、备份量等)。(4)人力资源消耗降低到几乎为零。
数据库备份与恢复的代码可以根据不同的数据库管理系统而异。下面给出几种常见数据库备份与恢复代码示例: 1. MySQL数据库 备份MySQL数据库代码: ``` mysqldump -h hostname -u username -p dbname > backup.sql ``` 其中,hostname是主机名,username是用户名,dbname是要备份数据库名,backup.sql备份文件名。执行该命令后,会将数据库备份到backup.sql文件中。 恢复MySQL数据库代码: ``` mysql -h hostname -u username -p dbname < backup.sql ``` 其中,hostname是主机名,username是用户名,dbname是要恢复的数据库名,backup.sql备份文件名。执行该命令后,会将backup.sql文件中的数据库内容恢复到dbname数据库中。 2. PostgreSQL数据库 备份PostgreSQL数据库代码: ``` pg_dump -h hostname -U username -F c -b -v -f backup.dump dbname ``` 其中,hostname是主机名,username是用户名,dbname是要备份数据库名,backup.dump是备份文件名。执行该命令后,会将数据库备份到backup.dump文件中。 恢复PostgreSQL数据库代码: ``` pg_restore -h hostname -U username -d dbname backup.dump ``` 其中,hostname是主机名,username是用户名,dbname是要恢复的数据库名,backup.dump是备份文件名。执行该命令后,会将backup.dump文件中的数据库内容恢复到dbname数据库中。 3. SQL Server数据库 备份SQL Server数据库代码: ``` BACKUP DATABASE dbname TO DISK='backup.bak' ``` 其中,dbname是要备份数据库名,backup.bak是备份文件名。执行该命令后,会将数据库备份到backup.bak文件中。 恢复SQL Server数据库代码: ``` RESTORE DATABASE dbname FROM DISK='backup.bak' ``` 其中,dbname是要恢复的数据库名,backup.bak是备份文件名。执行该命令后,会将backup.bak文件中的数据库内容恢复到dbname数据库中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值