转载 自动备份所有数据库(MS SQL)收藏

新一篇: update与select结合使用 | 旧一篇: 表格的头不动,内容可以滚动

--查询分析器执行下边代码,创建存储过程

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  
--然后调用存储过程

p_backupdb 'C:\',''

发表于 @ 2008年09月19日 00:58:00|评论(loading...)|收藏

新一篇: update与select结合使用 | 旧一篇: 表格的头不动,内容可以滚动

评论

#c_h_r 发表于2008-09-19 14:58:44  IP: 210.21.7.*
sql2000用sql代理比较好,这样的备份,出错了都不好查

sql2005,2008可以用SSIS,更专业
#c_h_r 发表于2008-09-19 14:58:54  IP: 210.21.7.*
sql2000用sql代理比较好,这样的备份,出错了都不好查

sql2005,2008可以用SSIS,更专业
#AWUSOFT 发表于2008-09-22 13:35:13  IP: 202.105.146.*
我不是专业的DBA,希望大家见谅
#AWUSOFT 发表于2008-09-22 13:35:24  IP: 202.105.146.*
我不是专业的DBA,希望大家见谅
#AWUSOFT 发表于2008-09-22 13:35:26  IP: 202.105.146.*
我不是专业的DBA,希望大家见谅
#AWUSOFT 发表于2008-09-22 13:35:27  IP: 202.105.146.*
我不是专业的DBA,希望大家见谅
#AWUSOFT 发表于2008-09-22 13:35:56  IP: 202.105.146.*
我不是专业的DBA,希望大家见谅
Csdn Blog version 3.1a
Copyright © 苏华新