-
- declare @filename varchar(80),@ymd varchar(10),@vsql varchar(100)
- select @ymd=convert(varchar(10),getdate(),112)
- select @ymd=substring(@ymd,1,4)+substring(@ymd,5,2)+substring(@ymd,7,2)
- select @filename='c:/'+@ymd+'.bak'
- --print @filename
- backup database test To Disk=@filename
- --select ymd=convert(varchar(10),getdate(),112)
- BACKUP DATABASE TestDB TO DISK = N
- 'D:/bak/Diff/TestDB_backup_200702281441.bak ' WITH NOFORMAT, NOINIT,
- NAME = N 'TestDB_backup_20070228144120 ', SKIP, REWIND, NOUNLOAD,
- STATS = 10
- --差異備份
- BACKUP DATABASE TestDB TO DISK = N
- 'D:/bak/Diff/TestDB_backup_200702281443.bak ' WITH DIFFERENTIAL ,
- NOFORMAT, NOINIT, NAME = N 'TestDB_backup_20070228144357 ', SKIP,
- REWIND, NOUNLOAD, STATS = 10
- --------------------------
- 数据库的备份一般都会同时拥有三种:完全备份、差异备份、事务日志备份
- 完全备份是指整个数据的完整备份,差异备份则指现在数据与上次完整备份后的差异数据
- 备份;而事务日志备份则是备份日志文件.
- 根据以上的说明,一般在安排调度时就是完全备份的间隔期最长,差异备份其次,事务日志
- 的最短.比如一周进行一次完整备份,一天进行一次差异备份,每四小时进行一次事务日志
- 备份.当然安排执行时须根据具体实际情况来定.
- 备份:可以直接备份,也可利用维护计划,还可利用备份设备.要想周期性的自动执行,最好
- 是利用作业.下面介绍的就是备份设备+作业进行备份.
- 可以在企业管理器中可视化进行,也可利用T-SQL编写.一般后者更灵活.
- 当数据有丢失或其它系统故障需要恢复时,一般恢复顺序为:
- 1.备份当前的事务日志(如果还能备份的话);
- 2.恢复最近一次的完整备份;
- 3.恢复离最近一次的差异备份;
- 4.顺序恢复最近一次差异备份之后的每一个事务日志备份
- 5.恢复第一步备份的当前事务日志;
- 注意:1.如果数据没有损坏,原来数据文件还完好无损,请直接附加数据库.
- 2.在进行恢复完整备份时,就须指定norecovery.直到最后所有的事务日志恢复完
- 全才可recovery结束.
- 还有一种为文件,文件组备份,该备份还原更特殊,更灵活。做这种备份的情况是该文
- 件上的数据比较重要,改动比较频繁。而在恢复时,只要恢复受损的所在文件或文件组
- 及其相应的事务日志,对于大型数据库来说,将能大大恢复加快速度。其缺点是比较难
- 于管理。必须注意文件的完整性及事务日志备份的覆盖点。
- 下面示例为数据库DB05102的完全备份、差异备份、事务日志备份及其还原操作。呵,建
- 作业时用的是企业管理器。因为那样方便多了,当然如果只能用代码编写时,那再麻烦
- 也只能硬着头皮写啦^_^
- 1.建备份设备:
- use master
- alter database pubs
- set recovery simple
- go
- go
- if exists(select name from sysdevices where name='DB05102FBK')
- exec sp_dropdevice 'DB05102FBK'
- exec sp_addumpdevice 'disk','DB05102FBK','F:/0509/Backup/DB05102FBK' --完全
- 备份设备
- go
- if exists(select name from sysdevices where name='DB05102DBK')
- exec sp_dropdevice 'DB05102DBK'
- exec sp_addumpdevice 'disk','DB05102DBK','F:/0509/Backup/DB05102DBK' --差
- 异备份设备
- go
- if exists(select name from sysdevices where name='DB05102LBK')
- exec sp_dropdevice 'DB05102LBK'
- exec sp_addumpdevice 'disk','DB05102LBK','F:/0509/Backup/DB05102LBK' --
- 事务日志备份设备
- go
- exec sp_addumpdevice 'disk','DB05102LBK2','F:/0509/Backup/DB05102LBK2' --
- 当前事务日志备份设备
- go
- 2.在企业管理器中新建如下三种作业,安排调度为:
- 完全备份每1天执行1次;步骤中的T-SQL 语句为:backup database DB05102 to
- DB05102FBK
- 差异备份每天每隔4小时执行1次;其中的T-SQL语句为:
- backup database DB05102 to DB05102DBK with differential
- 事务日志备份每天每隔1小时执行1次:其中的t-sql语句为:
- backup log DB05102 to DB05102LBK. 注意数据库在创建时,默认恢复模式
- 为simple.而要备份事务日志的话,必须将其改为full 或 bulk_logged.即alter
- database DB05102 set recovery Bulk_logged.当然这个语句只执行一次就行了.没必要
- 每次执行事务日志备份都带进去
- 3.还原数据库:
- 备份当前活动事务日志:
- backup log DB05102 to DB05102LBK2
- with no_truncate
- go
- 还原上一次的完全备份.file为要还原的备份集,一次备份产生一个备份集,norecovery说
- 明恢复未结束.直到最后一个日志恢复方指定为recovery或不指定 (默认为recovery) .
- restore database DB05102
- from DB05102FBK
- with file=4,norecovery
- go
- .还原上面完全备份后的离现在最近一次的差异备份
- restore database DB05102
- from DB05102dbk
- with file=29,norecovery
- go
- ----.还原上面的差异备份后的所有事务日志备份.必须按顺序执行.
- restore log DB05102
- from DB05102lbk
- with file=115,norecovery
- go
- restore log DB05102
- from DB05102lbk
- with file=116,norecovery
- go
- restore log DB05102
- from DB05102lbk
- with file=117,norecovery
- go
- 还原当前备份的事务日志备份.
- restore log DB05102
- from DB05102lbk2
- with file=8
- go
- 1
- ---------
- 备份数据库的命令是:
- BACKUP DATABASE test
- TO disk = 'c:/test'
- WITH FORMAT,
- NAME = 'Full Backup of MyNwind'
- 解释如下:
- BACKUP DATABASE test --这里的test指的是数据库名称
- TO disk = 'c:/test' --这里指名的数据库路径
- WITH FORMAT,
- NAME = 'Full Backup of MyNwind' --这个是备注,无所谓。。随便写。
- 还原数据库的命令是:
- USE master
- GO
- RESTORE DATABASE test_wt
- FROM disk = 'c:/test_wt'
- GO
- 解释如下:
- USE master --所使用的数据库
- GO
- RESTORE DATABASE test_wt --所被恢复的数据库名称
- FROM disk = 'c:/test_wt' --本地硬盘路径
- GO
- ====================
- 备份数据库和日志
- 本例创建了一个数据库和日志的完整备份。将数据库备份到称为 MyNwind_2 的逻辑备份设备上,然后将日志备份到称为 MyNwindLog1 的逻辑备份设备上。
- 说明 创建逻辑备份设备需要一次完成。
- -- Create the backup device for the full MyNwind backup.
- USE master
- EXEC sp_addumpdevice 'disk', 'MyNwind_2',
- 'c:/Program Files/Microsoft SQL Server/MSSQL/BACKUP/MyNwind_2.dat'
- --Create the log backup device.
- USE master
- EXEC sp_addumpdevice 'disk', 'MyNwindLog1',
- 'c:/Program Files/Microsoft SQL Server/MSSQL/BACKUP/MyNwindLog1.dat'
- -- Back up the full MyNwind database.
- BACKUP DATABASE MyNwind TO MyNwind_2
- -- Update activity has occurred since the full database backup.
- -- Back up the log of the MyNwind database.
- BACKUP LOG MyNwind
- TO MyNwindLog1
- ==================
- 完整back
- declare @filename varchar(80),@ymd varchar(10),@vsql varchar(100)
- select @ymd=convert(varchar(10),getdate(),111)
- select @ymd=substring(@ymd,3,2)+substring(@ymd,6,2)+substring(@ymd,9,2)
- select @filename='e:/data-bk/'+@ymd+'.dat'
- backup database userdb To Disk=@filename
- 差異back
- declare @filename varchar(80),@ymd varchar(10),@vsql varchar(200)
- select @ymd=convert(varchar(10),getdate(),111)
- select @ymd=substring(@ymd,3,2)+substring(@ymd,6,2)+substring(@ymd,9,2)
- select @filename='e:/data-bk/'+@ymd+'df.dat'
- BACKUP DATABASE userdb TO Disk=@filename WITH DIFFERENTIAL
- 還原
- 首先用的完整備份來強制還原一次然後執行以下代碼就可以了
- RESTORE DATABASE userdb FROM disk='e:/data-bk/050523.dat' WITH NORECOVERY
- RESTORE DATABASE userdb FROM disk='e:/data-bk/050524DF.dat' WITH RECOVERY
sql2000 备份
最新推荐文章于 2025-08-15 09:00:49 发布