sql2000 备份

 
 
    1. declare @filename varchar(80),@ymd varchar(10),@vsql varchar(100)
    2. select @ymd=convert(varchar(10),getdate(),112)
    3. select @ymd=substring(@ymd,1,4)+substring(@ymd,5,2)+substring(@ymd,7,2)
    4. select @filename='c:/'+@ymd+'.bak'
    5. --print @filename
    6. backup database  test  To  Disk=@filename
    7. --select ymd=convert(varchar(10),getdate(),112)
    --完全備份 
  1. BACKUP   DATABASE   TestDB   TO     DISK   =   N 
  2. 'D:/bak/Diff/TestDB_backup_200702281441.bak '   WITH   NOFORMAT,   NOINIT,    
  3.  NAME   =   N 'TestDB_backup_20070228144120 ',   SKIP,   REWIND,   NOUNLOAD,  
  4.    STATS   =   10 
  5. --差異備份 
  6. BACKUP   DATABASE   TestDB   TO     DISK   =   N 
  7. 'D:/bak/Diff/TestDB_backup_200702281443.bak '   WITH     DIFFERENTIAL   ,   
  8. NOFORMAT,   NOINIT,     NAME   =   N 'TestDB_backup_20070228144357 ',   SKIP, 
  9.   REWIND,   NOUNLOAD,     STATS   =   10 
  10. --------------------------
  11. 数据库的备份一般都会同时拥有三种:完全备份、差异备份、事务日志备份
  12. 完全备份是指整个数据的完整备份,差异备份则指现在数据与上次完整备份后的差异数据
  13. 备份;而事务日志备份则是备份日志文件.
  14. 根据以上的说明,一般在安排调度时就是完全备份的间隔期最长,差异备份其次,事务日志
  15. 的最短.比如一周进行一次完整备份,一天进行一次差异备份,每四小时进行一次事务日志
  16. 备份.当然安排执行时须根据具体实际情况来定.
  17. 备份:可以直接备份,也可利用维护计划,还可利用备份设备.要想周期性的自动执行,最好
  18. 是利用作业.下面介绍的就是备份设备+作业进行备份.
  19. 可以在企业管理器中可视化进行,也可利用T-SQL编写.一般后者更灵活.
  20. 当数据有丢失或其它系统故障需要恢复时,一般恢复顺序为:
  21. 1.备份当前的事务日志(如果还能备份的话);
  22. 2.恢复最近一次的完整备份;
  23. 3.恢复离最近一次的差异备份;
  24. 4.顺序恢复最近一次差异备份之后的每一个事务日志备份
  25. 5.恢复第一步备份的当前事务日志;
  26. 注意:1.如果数据没有损坏,原来数据文件还完好无损,请直接附加数据库.
  27.        2.在进行恢复完整备份时,就须指定norecovery.直到最后所有的事务日志恢复完
  28. 全才可recovery结束.
  29. 还有一种为文件,文件组备份,该备份还原更特殊,更灵活。做这种备份的情况是该文
  30. 件上的数据比较重要,改动比较频繁。而在恢复时,只要恢复受损的所在文件或文件组
  31. 及其相应的事务日志,对于大型数据库来说,将能大大恢复加快速度。其缺点是比较难
  32. 于管理。必须注意文件的完整性及事务日志备份的覆盖点。
  33. 下面示例为数据库DB05102的完全备份、差异备份、事务日志备份及其还原操作。呵,建
  34. 作业时用的是企业管理器。因为那样方便多了,当然如果只能用代码编写时,那再麻烦
  35. 也只能硬着头皮写啦^_^
  36. 1.建备份设备:
  37. use master
  38. alter database pubs
  39. set recovery simple
  40. go
  41. go
  42. if exists(select name from sysdevices where name='DB05102FBK')
  43. exec sp_dropdevice 'DB05102FBK'
  44. exec sp_addumpdevice 'disk','DB05102FBK','F:/0509/Backup/DB05102FBK'  --完全
  45. 备份设备
  46. go
  47. if exists(select name from sysdevices where name='DB05102DBK')
  48. exec sp_dropdevice 'DB05102DBK'
  49. exec sp_addumpdevice 'disk','DB05102DBK','F:/0509/Backup/DB05102DBK'     --差
  50. 异备份设备
  51. go
  52. if exists(select name from sysdevices where name='DB05102LBK')
  53. exec sp_dropdevice 'DB05102LBK'
  54. exec sp_addumpdevice 'disk','DB05102LBK','F:/0509/Backup/DB05102LBK'      --
  55. 事务日志备份设备
  56. go
  57. exec sp_addumpdevice  'disk','DB05102LBK2','F:/0509/Backup/DB05102LBK2'   --
  58. 当前事务日志备份设备
  59. go
  60. 2.在企业管理器中新建如下三种作业,安排调度为:
  61.   完全备份每1天执行1次;步骤中的T-SQL 语句为:backup database DB05102 to 
  62. DB05102FBK
  63.   差异备份每天每隔4小时执行1次;其中的T-SQL语句为:
  64.             backup database DB05102 to DB05102DBK with differential
  65.   事务日志备份每天每隔1小时执行1次:其中的t-sql语句为:
  66.             backup log DB05102 to DB05102LBK. 注意数据库在创建时,默认恢复模式
  67. 为simple.而要备份事务日志的话,必须将其改为full 或 bulk_logged.即alter 
  68. database DB05102 set recovery Bulk_logged.当然这个语句只执行一次就行了.没必要
  69. 每次执行事务日志备份都带进去
  70. 3.还原数据库:
  71. 备份当前活动事务日志:
  72. backup log DB05102 to DB05102LBK2 
  73. with no_truncate                     
  74. go
  75. 还原上一次的完全备份.file为要还原的备份集,一次备份产生一个备份集,norecovery说
  76. 明恢复未结束.直到最后一个日志恢复方指定为recovery或不指定 (默认为recovery) .
  77. restore database DB05102 
  78. from DB05102FBK 
  79. with file=4,norecovery   
  80. go  
  81. .还原上面完全备份后的离现在最近一次的差异备份                               
  82. restore database DB05102
  83. from DB05102dbk
  84. with file=29,norecovery
  85. go
  86. ----.还原上面的差异备份后的所有事务日志备份.必须按顺序执行.
  87. restore log DB05102
  88. from DB05102lbk
  89. with file=115,norecovery
  90. go
  91. restore log DB05102
  92. from DB05102lbk
  93. with file=116,norecovery
  94. go
  95. restore log DB05102
  96. from DB05102lbk
  97. with file=117,norecovery
  98. go
  99. 还原当前备份的事务日志备份.
  100. restore log DB05102
  101. from DB05102lbk2
  102. with file=8
  103. go
  104. 1
  105. ---------
  106. 备份数据库的命令是: 
  107. BACKUP DATABASE test 
  108. TO disk = 'c:/test' 
  109. WITH FORMAT, 
  110. NAME = 'Full Backup of MyNwind' 
  111. 解释如下: 
  112. BACKUP DATABASE test --这里的test指的是数据库名称 
  113. TO disk = 'c:/test' --这里指名的数据库路径 
  114. WITH FORMAT, 
  115. NAME = 'Full Backup of MyNwind' --这个是备注,无所谓。。随便写。 
  116. 还原数据库的命令是: 
  117. USE master 
  118. GO 
  119. RESTORE DATABASE test_wt 
  120. FROM disk = 'c:/test_wt' 
  121. GO 
  122. 解释如下: 
  123. USE master --所使用的数据库 
  124. GO 
  125. RESTORE DATABASE test_wt --所被恢复的数据库名称 
  126. FROM disk = 'c:/test_wt' --本地硬盘路径 
  127. GO 
  128. ====================
  129. 备份数据库和日志
  130. 本例创建了一个数据库和日志的完整备份。将数据库备份到称为 MyNwind_2 的逻辑备份设备上,然后将日志备份到称为 MyNwindLog1 的逻辑备份设备上。 
  131. 说明  创建逻辑备份设备需要一次完成。
  132. -- Create the backup device for the full MyNwind backup.
  133. USE master
  134. EXEC sp_addumpdevice 'disk''MyNwind_2',
  135.    'c:/Program Files/Microsoft SQL Server/MSSQL/BACKUP/MyNwind_2.dat'
  136. --Create the log backup device.
  137. USE master
  138. EXEC sp_addumpdevice 'disk''MyNwindLog1',
  139.    'c:/Program Files/Microsoft SQL Server/MSSQL/BACKUP/MyNwindLog1.dat'
  140. -- Back up the full MyNwind database.
  141. BACKUP DATABASE MyNwind TO MyNwind_2
  142. -- Update activity has occurred since the full database backup.
  143. -- Back up the log of the MyNwind database.
  144. BACKUP LOG MyNwind 
  145.    TO MyNwindLog1
  146. ==================
  147. 完整back
  148. declare @filename varchar(80),@ymd varchar(10),@vsql varchar(100)
  149. select @ymd=convert(varchar(10),getdate(),111)
  150. select @ymd=substring(@ymd,3,2)+substring(@ymd,6,2)+substring(@ymd,9,2)
  151. select @filename='e:/data-bk/'+@ymd+'.dat'
  152. backup database  userdb  To  Disk=@filename
  153. 差異back
  154. declare @filename varchar(80),@ymd varchar(10),@vsql varchar(200)
  155. select @ymd=convert(varchar(10),getdate(),111)
  156. select @ymd=substring(@ymd,3,2)+substring(@ymd,6,2)+substring(@ymd,9,2)
  157. select @filename='e:/data-bk/'+@ymd+'df.dat'
  158. BACKUP DATABASE userdb   TO Disk=@filename    WITH DIFFERENTIAL
  159. 還原
  160. 首先用的完整備份來強制還原一次然後執行以下代碼就可以了
  161. RESTORE DATABASE userdb   FROM disk='e:/data-bk/050523.dat'   WITH  NORECOVERY 
  162. RESTORE DATABASE userdb   FROM disk='e:/data-bk/050524DF.dat'   WITH  RECOVERY
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值