当前位置:首页 » 编程语言 » sql简单恢复模式
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql简单恢复模式

发布时间: 2023-03-25 19:51:36

㈠ 日志文件丢失或出错的情况下如何恢复sql数据库

1. 新建数据库(同名)
2. 停掉数据库
3. 删除新建数据库的日志文件,用要恢复的覆盖mdf文件
4. 启动数据库服务器
5. 设置数据库允许直接操作系统表
6. 设置数据库为紧急修复模式
update sysdatabases set status=-32768 where dbid=DB_ID('dbDataHome')
7. 重建数据库日志文件
dbcc rebuild_log('dbDataHome','D:\Data\dbData_Data.LDF')
8. 验证数据库一致性(可省略)
dbcc checkdb('dbDataHome')
9.设置数据库为正常状态
exec sp_dboption 'dbDataHome','dbo use only','false'
10. 最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。

㈡ sql数据库删除了怎么恢复数据

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
情况二、如果第1个前提条件不存在,第2个前提条件存在,需要借助第三方工具。
情况三、如果第2个前提条件不存在,无法恢复。所以,一定要将数据库恢复模式设置为“完整(full)”。
我现在面临的是第二种情况,需要找第三方工具。
开始找的是log
explorer
for
sql
server,不支持sql
server
2008。
后来找的是sql
log
rescue,也不支持sql
server
2008。
接着找到的是systools
sql
recovery,支持sql
server
2008,但需要购买,demo版并没有数据恢复功能。
最终在officerecovery.com上找到recovery
for
sql
server,虽然也是商业软件,需要购买,但demo版可以恢复数据,只要数据库文件不超过24gb。幸好朋友的数据库文件不大,用它完成了误删除数据的恢复。
下面分享一下用recovery
for
sql
server进行恢复的操作步骤:
1.
运行recovery
for
sql
server
2.
点击菜单中的
file
>
recover,选择要恢复的数据库的数据文件(.mdf)
3.
next
>
next,进入
recovery
configuration
界面,选择custom(选择了custom才可以选择从日志中恢复误删除的数据)。
4.
next
进入
recovery
options
窗口,选中
search
for
deleted
records,并选择要恢复的数据库的日志文件路径(log
file
path)。
5.
next
并选择目标文件夹(destination
folder),用于存放恢复过程中生成的sql语句与bat文件。
6.
点击start,开始恢复操作(在上一步选择的目标文件夹中生成相应的sql文件与bat文件),然后,出现
sql
server
database
creation
utility
窗口。
7.
next,选择被恢复数据存放的目标数据库。
8.
next,
选择
import
availiable
data
from
both
database
and
log
files
9.
next,
next,
然后就完成数据的恢复!

㈢ SQL SERVER恢复策略

Microsoft SQL Server的数据库备份和恢复策略
一、概述
备份和恢复是数据库管理员维护数据库安全性和完整性的重要操作。备份是恢复数据库最容易和最能防止意外的保证方法。没有备份,所有的数据都可能会丢失。备份可以防止表和数据库遭受破坏、介质失效或用户错误而造成数据灾难。恢复是在意外发生后,利用备份来恢复数据库的操作。
Microsoft SQL Server数据库中对于数据的备份和恢复有几种不同的方法,本人结合以往的一些经验,对其归纳如下。

二、常用的备份和恢复数据库的方法
1、Microsoft SQL Server中的备份和恢复:
1)备份类型,分别为:
•数据库备份(Database Backups)
•事务日志备份(Transaction Log Backup)
•差异备份(Differential Database Backups)
•文件和文件组备份(File and File Group Backup)
A.数据库备份(Database Backups)
数据库备份是指对数据库的完整备份,包括所有的数据以及数据库对象。实际上备份数据库过程就是首先将事务日志写到磁盘上,然后根据事务创建相同的数据库和数据库对象以及拷贝数据的过程。由于是对数据库的完全备份,所以这种备份类型不仅速度较慢,而且将占用大量磁盘空间。
B.事务日志备份(Transaction Log Backup)
事务日志备份是指对数据库发生的事务进行备份,包括从上次进行事务日志备份、差异备份和数据库完全备份之后,所有已经完成的事务。
C.差异备份(Differential Database Backups)
差异备份是指将最近一次数据库备份以来发生的数据变化备份起来,因此差异备份实际上是一种增量数据库备份。与完整数据库备份相比,差异备份由于备份的数据量较小,所以备份和恢复所用的时间较短。但是它却无法像事务日志备份那样提供到失败点的无数据损失备份。
D.文件和文件组备份(File and File Group Backup)
文件或文件组备份是指对数据库文件或文件夹进行备份,但其不像完整的数据库备份那样同时也进行事务日志备份。使用该备份方法可提高数据库恢复的速度,因为其仅对遭到破坏的文件或文件组进行恢复。
2)数据库恢复模式
•简单恢复(SimpleRecovery)
•完全恢复(Full Recovery)
•批日志恢复(Bulk-logged Recovery)
A.简单恢复(Simple Recovery)
所谓简单恢复就是指在进行数据库恢复时仅使用了数据库备份或差异备份,而不涉及事务日志备份。简单恢复模式可使数据库恢复到上一次备份的状态,但由于不使用事务日志备份来进行恢复,所以无法将数据库恢复到失败点状态。
B.完全恢复(Full Recovery)
完全数据库恢复模式是指通过使用数据库备份和事务日志备份将数据库恢复到发生失败的时刻,因此几乎不造成任何数据丢失,这成为对付因存储介质损坏而数据丢失的最佳方法。
C.批日志恢复(Bulk-logged Recovery)
批日志恢复在性能上要优于简单恢复和完全恢复模式,它能尽最大努力减少批操作所需要的存储空间。

2、使用SQL SERVER的管理器ENTERPRISE MANAGER进行备份和恢复
1)完全手工方式。
在这种方式下,选择要备份和恢复的数据库,单击鼠标右键,在快捷菜单中的“ALL TASKS”下选择备份或者恢复数据库。
2)半手工方式。
这种方式就是管理员事先建立备份或者恢复数据库的作业,待到备份或者恢复数据库的时候,管理员打开“SQL SERVER ENTEPRISE MANAGER”,在“MANAGER”里找到相应的作业,然后执行之。
3)全自动方式。
在数据库管理器里面,管理员事先建立好恢复或者备份数据库的作业,然后定制一个执行计划,让计算机在特定的条件下自己执行备份和恢复操作。
作业是ENTERPRISE MANAGER提供的一种定期处理数据的一种方法,前面提到的半手工方式和全自动方式虽然利用了作业,但它需要在ENTERPRISE MANAGER里启动和关闭作业;现在还可以在应用程序客户端启动和关闭作业的机制以作业机制实现数据库的恢复和备份,就是事先在建立备份和恢复数据库的作业,在应用程序客户端用控制体启动相应的执行体来实现之。用这种方式实现数据库的备份和恢复,用户不必打开数据库管理器进行操作,用户可以在任何一个应用程序客户端完成操作。

3、异机备份策略
在局域网内的任何一台工作站计算机上安装Microsoft Windows NT及Microsoft SQL Server,并在该机上建立一个与服务器中的数据库同名的数据库,利用Microsoft SQL Server系统本身提供的异机传送工具(在Microsof SQL Enterprise Manager中的Tools菜单下的Database/Object Transfer)通过设置定时(可以是每周、每月、每日或每时)由计算机自动的把服务器中数据库的数据传送到该工作站机的数据库中,这样一旦服务器(操作系统)崩溃或Microsoft SQL Server系统崩溃时,只要重装服务器操作系统(Microsoft Windows NT)或重装Microsoft SQL Server仍然可以采用异机传送工具来通过该工作站机把数据传回至服务器的Microsoft SQL Server数据库中,以确保数据的安全恢复。

三、比较
上述这三种备份和恢复的方式,分别是在SQL Server之内、SQL SERVER的管理器中和异机中实现的。
SQL Server中的备份和恢复是数据库本身的一个功能,而且其提供了不同级别的备份和恢复策略,是一种比较完善的数据库安全保护措施,但由于此操作只能在数据库管理器中进行,所以对于人员和设备的要求比较高,仅限于有限个人和机器可以操作,所以操作起来有一定的局限性。
SQL SERVER的管理器中的备份和恢复可以利用作业机制在任何一个应用程序客户端完成操作,打破了我们常规对大型数据库备份和恢复必须在数据库管理器里进行的局限性,为在应用程序客户端实现复杂的数据库维护提供了一个思路,也大大方便了用户的操作。但是由于这种操作的方便性,也决定了其有一定的不安全性。
异机中的备份和恢复是最安全最可靠的方式,而且对于数据库的恢复来说也是最方便的一种,它完全避免了任何形式的数据损毁的威胁,特别是针对服务器崩溃和Microsoft SQL Server系统崩溃,其恢复效果是很理想的。因此对于一些重要的大型数据库来说是很可取的。但是由于成本较高,采用这种方法对于一些较小型的数据库系统是比较难以实现的。

四、结论
上述的三种方式都是数据库备份和恢复较为常用的一些方法,虽然各自实现的方式不同,但都达到了保护数据安全的目的。所以本人认为这三种方法都是可取的。
但是对于具体的案例,还需要仔细考虑各自系统的特性和方法的可操作性,例如一般中小型的数据库,网内工作站计算机的分布范围不是很大(象一座大厦内),距离服务器的比较近时,采用Microsoft SQL Server内的备份恢复策略就完全可以解决问题;而对于一些服务器距离较远的数据库系统,人员无法常常去到服务器所在地去实施备份和恢复的,采用SQL SERVER的管理器中的策略就很理想;再者对于数据库内数据比较庞大,恢复起来需要一定的时间的,就不防采用异机备份的策略,可以大大降低因系统崩溃所带来的损失。
总之,事物总有其两面性,没有哪种方法是适用于任何情况的,我们应该在实际工作中多总结、归纳,逐渐摸索出最适合自身系统的一种解决方案,这样才能使我们的工作顺利开展

㈣ SQL2008中三种恢复模式的区别在哪里

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

  1. 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每天都会定时备份全库)。

  2. Full 完整恢复模式,

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

  3. 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模式。


㈤ sql2005备份数据库怎么恢复

数据库数据恢复步骤

1、通过日志恢复SQLSERVER2005数据(也可通过LogExplorer工具查找进行恢复数据)

(A)......通过日志和时间点来恢复数据的前提条件:数据库的故障恢复改为非简单模式,去掉自动关闭和自动收缩两个选项,如果是简单模式:类似下面的语句操作数据就不会记录到日志中:select*intotfrom[表名].【采用LogExplorer工具可以在线操作,通过恢复日志(指定时间点恢复)来恢复数据,必须停止数据库或者再另一个数据库恢复(前提是必须有一个完全备份和日志备份)】

这时为保证数据的完整要将数据库的恢复模式改成“完整.

1.1、这时对数据库事务日志做备份(注意,如果没做个数据库完整备份,是不能做事务日志备份的)

这时新建一个数据库zp(将以前的数据库改名),恢复数据库

这时我们看到,有两个还原的数据库备份,因为我对zp数据库备份了两次,两次的备份的数据文件都一样。这里我们选择最近时间的备份默认在数据库的设置如下:是追加到备份集里,所以会有两个备份。

同时,在”选项“里设置”不回滚“事务,

注意:通过事务日志还原数据库,必须选择"不回滚"事务

确定后:出现下面情况:

这时发现,数据库一直是”正在还原“,这时还原数据库事务日志,

1.2、“常规”里选择时间,(刚删除的时间)

1.3、“选项”里将恢复状态设置为”回滚未提交“事务

确定后,查询数据库,发现数据回来了.

2、无日志的数据恢复

2.1.新建一个同名的数据库
2.2再停掉sqlserver(注意不要分离数据库)
2.3用原数据库的数据文件覆盖掉这个新建的数据库
2.4再重启sqlserver
2.5此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
2.6完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
数据库的脚本创建一个新的数据库,并将数据导进去就行了.

USEMASTER
SP_CONFIGURE'ALLOWUPDATES',1RECONFIGUREWITHOVERRIDE
UPDATESYSDATABASESSETSTATUS=32768WHERENAME='数据库名'
sp_dboption'数据库名','singleuser','true'
DBCCCHECKDB('数据库名')
updatesysdatabasessetstatus=28wherename='数据库名'
sp_configure'allowupdates',0reconfigurewithoverride
sp_dboption'数据库名','singleuser','false'

㈥ SQLServer2008数据库怎样备份还原和数据恢复

在完整恢复模式或大容量日志恢复模式下,必须先备份活动事务日志(称为日志尾部),然后才能在SQLServerManagementStudio中还原数据库。有关详细信息,请参阅如何备份事务日志(SQLServerManagementStudio)。若要还原已加密的数据库,您必须有权访问用于加密数据库的证书或非对称密钥。如果没有证书或非对称密钥,数据库将无法还原。

认识数据库备份和事务日志备份

数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点。

数据库备份

数据库备份可以手动备份和语句备份

一.手动备份数据库

1.鼠标右键选择你要进行备份的数据库-任务-备份

可以在常规选项页面你可以选择备份类型是进行完整数据库备份还是差异数据库备份

2.点击添加选项,选择数据库文件的存放路径

注意文件名记得加后缀.bak,便于恢复时的查找

3.你还可以在选项页面是追加到现有的备份集,还是覆盖所有的现有备份集,还可以选择备份验证完整性(建议选择),还可以选择是否压缩备份等。

二.语句备份数据库

use master goBACKUP DATABASE [test] TO DISK = N'D:Microsoft sql serverMSSQL10.MSSQLSERVERMSSQLBackup est.bak' WITH NOFORMAT, NOINIT, NAME = N'test-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO

数据库日志备份

首先需要注意,数据库日志的备份是基于数据库完整备份,也就是说你备份数据库日志之前你首先要先对数据库进行一次完整的备份,因为之间会涉及到坚持到检查点 lsn, 这也是本文接下来要讲的重点。

一.手动备份数据库日志

1.右键数据库-任务-备份-选择备份类型(事务日志)

2.点添加,添加日志文件备份存储路径

3.同数据库完整备份一样,你也可以选择覆盖现有备份集或者追加到现有备份集,这里现在覆盖现有备份集、验证完整性,然后确认备份

二.语句备份数据库事务日志

BACKUP LOG [test] TO DISK = N'D: est.trn' WITH NOFORMAT, INIT, NAME = N'test-事务日志 备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO

数据库还原

右键数据库-还原数据库-添加需要进行还原的数据库文件路径

在还原源选项中你可以选择‘源数据库’,‘源设备’。1.选择源数据库工具会自动显示该数据库之前的一些备份,然后直接选择需要还原的数据库备份集。

2.选择源设备点击后面的...,添加需要还原的数据库文件

2.点击确认还原数据库

数据库恢复

数据库恢复的前提是1.一个完整的数据库备份2.包含这个完整数据库备份的事务日志备份3.完整备份之间也可以存在数个差异备份

对于数据库维护空间始终是一个比较头疼的问题,特别是对于大型数据库而言,每天的日志文件增长是庞大的,很多数据库管理员会定时对数据库日志文件进行收缩,但是经常收缩会存在收缩完日志文件还是不能减少,这是因为存在很多活动的日志无法收缩可以用

DBCC LOGINFO('数据库名称')

我们看到
status=0的日志,代表已经备份到磁盘的日志文件;而
status=2的日志还没有备份。当我们收缩日志文件时,收缩掉的空
间其实就是
status=0的空间,如果日志物理文件无法减小,这里一
定能看到非常多status=2的记录

解决办法:1.可以分离要收缩的数据库,然后手动删除日志文件,然后附加数据库,数据库就会产生一个很小的日志文件(不推荐使用这种方法)

2.右键要出来的数据库选择“属性”-"选项",将恢复模式改成"简单",然后利用收缩工具可以讲日志文件收缩到很小,收缩完记得讲恢复模式改成"完整"

也可以用语句进行处理(dbname是你要进行收缩的数据库名,dbname_log是你要进行收缩的数据库的逻辑日志名称)

USE [master]
GO ALTER DATABASE [dbname] SET recovery SIMPLE WITH NO_WAIT GO
ALTER DATABASE [dbname] SET RECOVERY SIMPLE --简单模式
GO
USE [dbname]
GO
DBCC SHRINKFILE (N'dbname_log' , 11, TRUNCATEONLY) GO
USE [master]
GO
ALTER DATABASE [dbname] SET RECOVERY FULL WITH NO_WAIT ALTER DATABASE [dbname] SET RECOVERY FULL

对于第一种方法不赞同使用,首先对于数据库的分离与附加有时候会破坏数据库,造成数据库无法还原,还有就是对于在线数据库也不允许进行分离操作。

对于第二种方法是slq2008收缩日志文件的一种方法,但是此方法也不能使用过于频繁,因为进行数据库恢复模式的更改会截断事务日志文件,这样的话当时利用事务日志文件进行恢复的时候检查点不能包含数据库文件,而且当你要对事务日志进行备份的时候会重新提示你需要对数据库进行完整备份。

举个例子:比如你昨天晚上进行了一次完整备份,然后同时你也进行了一次日志备份(提前日志未被截断),然后你每个小时进行过一次差异备份,最近的差异备份时间点是14点,如果此时数据库错误修改了数据,你可以立马备份一个日志文件将数据库恢复到日志备份开始到日志备份终点前的任意时间点 。

如果此时你进行了修改数据库模式,截断日志进行了收缩,那么你的数据只能恢复到昨天晚上备份的那个日志备份时间前的任意时间点,也就是今天所做的数据库更改无法再恢复了,因为日志文件已经被截断了,不知道这样解释是否明白

因为日志文件的检查点(lsn)是连续的,每一次日志备份都是在上一次备份的基础上lsn往后增加的,lsn的范围也包括了数据库文件的lsn,也只有日志文件的lsn包括了数据库文件的lsn,才能将数据库文件进行回滚。

上图中总共有三个备份文件,一个完整备份、一个差异备份、一个日志备份,大家可以注意观察完整备份的第一个lsn与最后一个lsn,和检查点

第二个差异备份文件的的第一个lsn与最后一个lsn,和检查点,最后的日志备份的第一个lsn和最后一个lsn包含了前面两个备份文件的lsn,这种情况数据库就可以恢复到日志文件备份前的任意时间点,如果日志文件没有包含数据库文件的最后一个lsn也就无法恢复了。

㈦ SQL server数据库日志满了怎么处理

一、删除日志文件。

二、手动收缩。操作如下:

1、在数据库页面中选择“选项”;