CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

如何通过程序动态的恢复SQL数据库??????????

楼主newfang(传说中的MIC)2004-11-04 16:52:41 在 Delphi / 数据库相关 提问

我试着:  
   
  ADOCommand1.commandtext:='use   master   restore   database   test   from   disk='''+c:\123+'''';  
  ADOCommand1.execute;  
  ADOCommand1.commandtext:='use   test';  
  ADOCommand1.execute;  
   
  但是它不干活!! 问题点数:50、回复次数:6Top

1 楼jinjazz(近身剪)回复于 2004-11-04 17:13:30 得分 5

你搜索一下吧,有很多答案Top

2 楼masterjames(三月街)回复于 2004-11-04 17:43:25 得分 5

说明     所有的示例均假定已执行了完整数据库备份。  
   
   
  A.   还原完整数据库  
   
   
  说明     MyNwind   数据库仅供举例说明。  
   
   
  下例显示还原完整数据库备份。  
   
  RESTORE   DATABASE   MyNwind    
        FROM   MyNwind_1  
   
  B.   还原完整数据库备份和差异备份  
  下例还原完整数据库备份后还原差异备份。另外,下例还说明如何还原媒体上的另一个备份集。差异备份追加到包含完整数据库备份的备份设备上。  
   
  RESTORE   DATABASE   MyNwind  
        FROM   MyNwind_1  
        WITH   NORECOVERY  
  RESTORE   DATABASE   MyNwind  
        FROM   MyNwind_1  
        WITH   FILE   =   2  
   
  C.   使用   RESTART   语法还原数据库  
  下例使用   RESTART   选项重新启动因服务器电源故障而中断的   RESTORE   操作。  
   
  --   This   database   RESTORE   halted   prematurely   due   to   power   failure.  
  RESTORE   DATABASE   MyNwind  
        FROM   MyNwind_1  
  --   Here   is   the   RESTORE   RESTART   operation.  
  RESTORE   DATABASE   MyNwind    
        FROM   MyNwind_1   WITH   RESTART  
   
  D.   还原数据库并移动文件  
  下例还原完整数据库和事务日志,并将已还原的数据库移动到   C:\Program   Files\Microsoft   SQL   Server\MSSQL\Data   目录下。  
   
  RESTORE   DATABASE   MyNwind  
        FROM   MyNwind_1  
        WITH   NORECOVERY,    
              MOVE   'MyNwind'   TO   'c:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\NewNwind.mdf',    
              MOVE   'MyNwindLog1'   TO   'c:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\NewNwind.ldf'  
  RESTORE   LOG   MyNwind  
        FROM   MyNwindLog1  
        WITH   RECOVERY  
   
  E.   使用   BACKUP   和   RESTORE   创建数据库的复本  
  下例显示使用   BACKUP   和   RESTORE   语句创建   Northwind   数据库的复本。MOVE   语句使数据和日志文件还原到指定的位置。RESTORE   FILELISTONLY   语句用于确定待还原数据库内的文件数及名称。该数据库的新复本称为   TestDB。有关更多信息,请参见   RESTORE   FILELISTONLY。    
   
  BACKUP   DATABASE   Northwind    
        TO   DISK   =   'c:\Northwind.bak'  
  RESTORE   FILELISTONLY    
        FROM   DISK   =   'c:\Northwind.bak'  
  RESTORE   DATABASE   TestDB    
        FROM   DISK   =   'c:\Northwind.bak'  
        WITH   MOVE   'Northwind'   TO   'c:\test\testdb.mdf',  
        MOVE   'Northwind_log'   TO   'c:\test\testdb.ldf'  
  GO  
   
  F.   使用   STOPAT   语法还原到即时点和使用多个设备进行还原  
  下例将数据库还原到其在   1998   年   4   月   15   日中午   12   点时的状态,并显示涉及多个日志和多个备份设备的还原操作。  
   
  RESTORE   DATABASE   MyNwind  
        FROM   MyNwind_1,   MyNwind_2  
        WITH   NORECOVERY  
  RESTORE   LOG   MyNwind  
        FROM   MyNwindLog1  
        WITH   NORECOVERY  
  RESTORE   LOG   MyNwind  
        FROM   MyNwindLog2  
        WITH   RECOVERY,   STOPAT   =   'Apr   15,   1998   12:00   AM'  
   
  G.   使用   TAPE   语法还原  
  下例显示从   TAPE   备份设备还原完整数据库备份。  
   
  RESTORE   DATABASE   MyNwind    
        FROM   TAPE   =   '\\.\tape0'  
   
  H.   使用   FILE   和   FILEGROUP   语法还原  
  下例还原一个包含两个文件、一个文件组和一个事务日志的数据库。  
   
  RESTORE   DATABASE   MyNwind  
        FILE   =   'MyNwind_data_1',  
        FILE   =   'MyNwind_data_2',  
        FILEGROUP   =   'new_customers'  
        FROM   MyNwind_1  
        WITH   NORECOVERY  
  --   Restore   the   log   backup.  
  RESTORE   LOG   MyNwind  
        FROM   MyNwindLog1  
   
  I.   将事务日志还原到标记处  
  下例显示将事务日志还原到名为"RoyaltyUpdate"的标记处。  
   
  BEGIN   TRANSACTION   RoyaltyUpdate    
        WITH   MARK   'Update   royalty   values'  
  GO  
  USE   pubs  
  GO  
  UPDATE   roysched  
        SET   royalty   =   royalty   *   1.10  
        WHERE   title_id   LIKE   'PC%'  
  GO  
  COMMIT   TRANSACTION   RoyaltyUpdate  
  GO  
  --Time   passes.   Regular   database    
  --and   log   backups   are   taken.  
  --An   error   occurs.  
  USE   master  
  GO  
   
  RESTORE   DATABASE   pubs  
  FROM   Pubs1  
  WITH   FILE   =   3,   NORECOVERY  
  GO  
  RESTORE   LOG   pubs  
        FROM   Pubs1  
        WITH   FILE   =   4,  
        STOPATMARK   =   'RoyaltyUpdate'  
   
   
  请参见  
  Top

3 楼masterjames(三月街)回复于 2004-11-04 17:43:49 得分 0

其实就是SQL语句了Top

4 楼zdq801104(【☆这个杀手不太冷☆】)回复于 2004-11-04 17:44:03 得分 5

应该是这样写吧?  
  ADOCommand1.commandtext:='restore   database   数据库名from   disk='''+路径+'''   with   replace';  
  记得把数据库断掉就可以了,最好把数据模块释放掉,这样就真正断开了Top

5 楼ghy412(用心良苦)回复于 2004-11-04 18:05:30 得分 35

先kill掉数据库的所有进程  
   
  然后回复Top

6 楼ghy412(用心良苦)回复于 2004-11-04 18:06:41 得分 0

sql="select   spid   from   master..sysprocesses   where   dbid=db_id('goods')"  
      rs.Open   sql  
      While   rs.EOF   =   False  
              sql   =   "kill   "   &   rs(0)  
              conn.Execute   sql  
              rs.MoveNext  
        Wend  
        rs.close  
        sql="Restore   Database   goods   From   Disk='"&server.MapPath("databasebackup")&"\"&filename&"'   with   file=1"  
      conn.Execute   sqlTop

相关问题

  • 在程序中恢复sql数据库,如何解决用户占用sql数据库的问题?
  • sql 数据库恢复
  • 如何在vb程序中进行SQL数据库的备份、恢复!
  • 如何恢复SQL数据库
  • 如何恢复sql数据库,急!!!
  • sql数据库恢复报错,急!
  • SQL数据库恢复问题
  • VC程序访问SQL数据库的问题
  • 求完整的delphi+access或者delphi+sql数据库源程序!
  • 急:java程序中的SQL数据库连接问题

关键词

  • 数据库
  • database
  • 语法
  • 语句
  • 文件
  • mssql
  • mynwind
  • 还原
  • restore
  • 备份

得分解答快速导航

  • 帖主:newfang
  • jinjazz
  • masterjames
  • zdq801104
  • ghy412

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo