登录名:  密码:  验证码: 8827
设为首页 收藏本站 联系站长
2009年1月10日
农历戊子年(鼠)
腊月十五
 首页 | 最新上传 | 新闻 | 购物商场 | 招聘求职 | HTML学习 | java学习 | IT新闻 | 黑客技术 | 域名和空间 | 流量统计 | 故事小说
 GIF动画制作 | 图片素材 | 源码下载 | 书籍下载 | 视频资料 | ASP | 数据库 | PHP | 基本电脑知识 | 迅雷资源 | 兼职 | 组网工程
 英语学习 | FLASH专区 | ASP.NET | VB | 综合资源网 | 驱动下载 | 游戏下载 | 网站模板网页美工 | 韩文学习 | 论坛
 特别推荐:产品报价  漂亮网站网址  图片素材
  我要查找:  
欢迎您来这里。每天学一点,每天进步一点!
Google
 当前位置:首页 >> 数据库  >> SQL
怎样用SQL语句在程序中备份和恢复数据库
来源:csdn  发表日期:2008年5月10日 作者: 

 编辑:admin 级别: 司令 浏览次数:135
】    
?:我想在程序中用SQL   语句备份和恢复数据库,应该怎样写SQL   ??  
  在恢复数据库时,我应该连接哪个数据库,才能此不会冲突?

>>备份:  
  use   master  
  backup   database   yourdatabase   to   disk='d:\...\***.bak'  
  还原:  
  user   master  
  restore   database   yourdatabase   from   disk='d:\...\***.bak'  

>>恢复时不要联接哪个数据库!会根据你的命名产生一个数据库!也可以恢复到相应的数据库里!

>>--备份  
  backup   database   sys   to   disk='c:\目录\a.bak'   with   init  
   
   
  --还原    
  use   master  
  RESTORE   DATABASE   TestDB   FROM   DISK   =   'c:\2002.dat'

>>--备份  
  backup   database   sys   to   disk='c:\目录\a.bak'   with   init  
   
   
  --还原    
  use   master  
  RESTORE   DATABASE   TestDB   FROM   DISK   =   'c:\2002.dat'

>>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   @

>>在恢复数据库时,可以连接到MASTER库.  
   
   
  -----------------------------  
  BACKUP  
  备份整个数据库、事务日志,或者备份一个或多个文件或文件组。有关数据库备份和恢复操作的更多信息,请参见备份和还原数据库。    
   
  RESTORE  
  还原使用   BACKUP   命令所做的备份。有关数据库备份和还原操作的更多信息,请参见备份和还原数据库。  
   
   
  具体参考联机帮助.
(编辑:网站学习网)
Google
 ·上一篇文章: 给表增加一个字段的SQL怎写?(S
 ·下一篇文章: cooledit pro 2.0完美
 该篇文章的评论
 暂无相关评论
 姓名:  邮箱:
 内容:
                
 相关文章
 · Initial Catalog
 · 数据库1.2
 · SQL 里 如何显
 · 批量删除数据的SQL语句写
 · 第一章小结和习题
 · 数据库1.3
 · 用SQL删除数据
 · 请教一段按时间查询的sq
 · CAST 函数
 · Persist Security&
 · sql按多关键字递增递减排
 最新上传文章
 · 使用 cookie 
 · Asp Object 之
 · 建立企业信息化 &n
 · 80后IT四少:媒体塑造了我
 · 我国企业电子商务交易总
 · asp连接带有密码的acces
 · 互联网应用广泛 电
 · Adobe Illustrator
 · delphi程序打包安装制作
 · 企业邮件管理有新招&nbs
 · toolbar图标:ToolBar上的

服务说明 | 关于网站 | 联系我们 | 友情链接
网站学习网欢迎您!
http://www.studywebgood.com
浙ICP备07030755号 
联系邮箱:shuizhilang@126.com 如本网站侵犯了您的版权,请马上通知我.