Sql server学习
sql server备份三种策略:
1.全量数据备份 (Full)
备份整个数据库,恢复时恢复所有。优点是简单,缺点是数据量太大,非常耗时
全数据库备份因为容易实施,被许多系统优先采用。在一天或一周中预定的时间进行全数据库备份使你不用动什么脑筋。使用这种类型的备份带来的问题是非常缺乏灵活性,而且当数据库被冲掉后,你面临丢失大量数据的潜在威胁。例如,假设你每天在午夜备份数据库。
如果服务器在晚上11点崩溃了,你将丢失前面23个小时对数据所做的全部修改。对大多数系统来说,这是无法接受的。对此规则,为数不多的例外如下:
1.系统中所存的数据可以很容易地再创建。这类服务器中一个很好的例子是报表服务器,其中所存的所有数据都由一个批处理过程装载的。如果这个数据库被冲掉了,你只需要再运行一次这个批处理过程,所有数据就可以恢复了。
2.不经常修改的数据库。一个例子是被收集存储在数据中心或数据仓库的历史数据。通常,查询这些数据以判断趋势,但是这些数据极少被修改。
3.一个遥远的站点,那里很少或没有数据库管理员支持。这种类型的站点常常依靠没受过足够培训的人来维持备份计划,并且他还从事其他工作。通常最好保证实施的备份计划非常简单,不必让那些用户监视和维护它。
4.系统中所存数据的重要性很低。一个很好的例子是开发用服务器。在这些类型的服务器上,开发者通常装载一些旧的或假定的数据来测试应用程序。这类数据库每天的备份是可接受的。
Sql语句:
BACKUP DATABASE [wxh] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\wxh.bak' WITH NOFORMAT, NOINIT, NAME = N'wxh-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
2.增量数据备份(Differential Backups)
所谓增量,就是以某个起始时间点的全量数据为基础,备份该时间点以后的数据。而起始时间点的全量数据,就是通过全量备份而为的。
如果有人告诉你“每周一进行全量备份,每天进行一次增量备份。”,这就意味着,星期一作一次全量配份,形成一个起始时间点的全量数据;星期二备份星期一以来的数据;星期三也备份星期一以来的数据;.......星期天也备份星期一以来的数据。到第二周的星期一时,又执行一次全量配份,再开始新的备份周期。
如果要恢复星期三的数据,则要先恢复星期一的全量数据,然后再恢复在星期一到星期三之间的增量数据。
增量备份是能用来帮助你实施备份计划的最新技术。这种备份,像事务日志备份一样,只备份你上次全数据库备份后所做的修改。与事务日志备份不一样的是这种备份不允许时间点恢复。它只允许你在实际所做的备份点上恢复。所以,这种备份通常要有事务日志备份作为补充。在下列情况下,增量备份非常有用:
1.你想通过联合使用全数据库备份、增量备份和事务日志备份最大程度地减少花费的时间。
2.数据库的大小使经常做全数据库备份很困难的情况。
3.一个遥远的站点,那里很少或没有数据库管理员支持。这种类型的站点常常依靠没受过足够培训的人来维持备份计划,而且他还经常从事其他工作。通常最好保证实施的备份计划非常简单,不必让那些用户监视和维护它。
4.系统中所存数据不是非常重要,所以所做的一些修改丢失后,不会导致灾难性的后果。对于这种类型的系统,手工重建数据比建立一个事务日志备份计划更容易。
Sql语句
BACKUP DATABASE [wxh] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\wxh.bak' WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'wxh-Differential Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
3.日志备份 (Transaction log)
周一做一次全量数据备份,周二时备份 周一至周二 的日志,周三时配份 周二至周三 的日志......。
若要恢复周三的数据,则先恢复到周一的全量数据,再按 周一至周二的日志、 周二至周三的日志 进行数据库操作
一个事务日志备份只备份事务日志中的信息。事务日志备份必须与至少一次全数据库备份联用,这是因为如果恢复数据,必须要有一个开始点。事务日志备份比全数据库备份少花费许多资源,经常执行也容易多了。这实际上有两个目的。首先是缩短了最后一次备份与服务器失败之间的时间间隔,因而减少了数据损失。事务日志备份还允许你实施一种特殊类型的恢复,即时间点恢复。这种类型的恢复允许你恢复数据到一个特定的时间点,比如到一次实际失败发生前5分钟时。
当某人所做的大量的数据修改或删除要取消时,它显得特别有用。你只需简单地恢复数据库到这次动作发生的时间点前。事务日志恢复在下列情况时非常有用:
1.数据库被高频率地修改。在发生大量的数据库修改时,数据库备份可能很快就过时了,如果把事务日志备份和全数据库备份联系起来使用,这些修改你都能记录下来。
2.你想采取时间点恢复。像我前面提到的,时间点恢复是非常重要和有用的,你可以通过事务日志备份来实现。
3.不能接受丢失大量数据的情况。在这种情况下,你可以每天做一个全数据库备份,再每小时或更频繁地做事务日志备份。这将减少数据丢失量。
4.数据库的大小使得经常做全数据库备份很困难。例如,非常大的数据仓库很容易达到上万亿字节。这种情况下,你可以做一次全数据库备份,然后当数据修改时,再做一次事务日志备份。
Sql语句:
BACKUP LOG [wxh] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\wxh.bak' WITH NOFORMAT, NOINIT, NAME = N'wxh-Transaction Log Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
清理日志:
- USE[master]
- GO
- ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT
- GO
- ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE --简单模式
- GO
- USE 要清理的数据库名称
- GO
- DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2, TRUNCATEONLY) --设置压缩后的日志大小为2M,可以自行指定
- GO
- USE[master]
- GO
- ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL WITH NO_WAIT
- GO
- ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL --还原为完全模式
- GO