数据库恢复sql语句未选择数据库

数据库恢复sql语句未选择数据库,第1张

百度知道

SQL数据库怎么还原 用友SQL SERVER恢复数据库...展开

千锋教育

做真实的自己 用良心做教育

关注

成为第14位粉丝

SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:

1. 至少有一个误删除之前的数据库完全备份

2. 数据库的恢复模式(Recovery mode)是“完整(Full)”。

针对这两个前提条件,会有三种情况:

情况一、如果这两个前提条件都存在,通过SQL语句只需三步就能恢复(参考文章),无需借助第三方工具。

a) 备份当前数据库的事务日志:BACKUP LOG [数据库名] TO disk= N'备份文件名' WITH NORECOVERY

b) 恢复一个误删除之前的完全备份:RESTORE DATABASE [数据库名] FROM DISK = N'完全备份文件名' WITH NORECOVERY, REPLACE

c) 将数据库恢复至误删除之前的时间点:RESTORE LOG [数据库] FROM DISK = N'第一步的日志备份文件名' WITH STOPAT = N'误删除之前的时间点' , RECOVERY

恢复模式说明了工作丢失的风险,能否恢复到时点? SQL Server数据库有三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式。 相对于简单恢复模式而言,完整恢复模式和大容量日志恢复模式提供了更强的数据保护功能。这些恢复模式都是基于备份事务日志来提供完整的可恢复性及在最大范围的故障情形内防止丢失工作。通常,数据库使用完整恢复模式或简单恢复模式。 下面对三种恢复模式做一个比较: 恢复模式 日志备份 恢复点 优点 缺点 解决方案及建议 简单(Simple) 无日志备份。 自动回收日志空间以减少空间需求,实际上不再需要管理事务日志空间。 最新备份之后的更改不受保护。在发生灾难时,这些更改必须重做。只能恢复到备份的结尾。 简单恢复模式可最大程度地减少事务日志的管理开销,因为不备份事务日志。 如果数据库损坏,则简单恢复模式将面临极大的工作丢失风险。数据只能恢复到已丢失数据的最新备份。 在简单恢复模式下,备份间隔应尽可能短,以防止大量丢失数据。简单恢复模式并不适合生产系统,因为对生产系统而言,丢失最新的更改是无法接受的。在这种情况下,我们建议使用完整恢复模式。 完整(Full) 需要日志备份。 理论上可以恢复到任意时点。 数据文件丢失或损坏不会导致丢失工作。 此模式完整记录所有事务,占用大量空间。 大容量(Bulk-logged) 需要日志备份。 如果在最新日志备份后发生日志损坏或执行大容量日志记录 *** 作,则必须重做自该上次备份之后所做的更改。 可以恢复到任何备份的结尾。不支持时点恢复。 该模式是完整恢复模式的附加模式,允许执行高性能的大容量复制 *** 作。通过使用最小方式记录大多数大容量 *** 作,减少日志空间使用量。 比完整模式节省日志存储空间。 对于某些大规模大容量 *** 作(如大容量导入或索引创建),暂时切换到大容量日志恢复模式可提高性能并减少日志空间使用量。由于大容量日志恢复模式不支持时点恢复,因此必须在增大日志备份与增加工作丢失风险之间进行权衡。 注意: 1. 适合于数据库的恢复模式取决于数据库的可用性和恢复要求。 2. 在完整恢复模式和大容量日志恢复模式下,必须进行日志备份。

SQL Server数据库有三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式。

Simple 简单恢复模式,

Simple模式的旧称叫”Checkpoint with truncate log“,其实这个名字更形象,在Simple模式下,SQL Server会在每次checkpoint或backup之后自动截断log,也就是丢弃所有的inactive log records,仅保留用于实例启动时自动发生的instance recovery所需的少量log,这样做的好处是log文件非常小,不需要DBA去维护、备份log,但坏处也是显而易见的,就是一旦数据库出现异常,需要恢复时,最多只能恢复到上一次的备份,无法恢复到最近可用状态,因为log丢失了。

Simple模式主要用于非critical的业务,比如开发库和测试库,但是道富这边的SQL Server(即使是生产库)大都采用Simple模式,是因为这边的SQL Server大都用于非critical的业务(critical的数据库大都采用Oracle和DB2),可以忍受少于1天的数据丢失(我们的job每天都会定时备份全库)。

Full 完整恢复模式,

和Simple模式相反,Full模式的旧称叫”Checkpoint without truncate log“,也就是SQL Server不主动截断log,只有备份log之后,才可以截断log,否则log文件会一直增大,直到撑爆硬盘,因此需要部署一个job定时备份log。Full的好处是可以做point-in-time恢复,最大限度的保证数据不丢失,一般用于critical的业务环境里。缺点就是DBA需要维护log,增加人员成本(其实也就是多了定时备份log这项工作而已)。

Bulk-logged 大容量日志恢复

Bulk-logged模式和full模式类似,唯一的不同是针对以下Bulk *** 作,会产生尽量少的log:

1) Bulk load operations (bcp and BULK INSERT).

2) SELECT INTO.

3) Create/drop/rebuild index

众所周知,通常bulk *** 作会产生大量的log,对SQL Server的性能有较大影响,bulk-logged模式的作用就在于降低这种性能影响,并防止log文件过分增长,但是它的问题是无法point-in-time恢复到包含bulk-logged record的这段时间。

Bulk-logged模式的最佳实践方案是在做bulk *** 作之前切换到bulk-logged,在bulk *** 作结束之后马上切换回full模式。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9361591.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存