SQL SERVER恢复策略

发布网友 发布时间:2022-04-24 04:35

我来回答

3个回答

热心网友 时间:2022-04-09 06:45

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的管理器中的策略就很理想;再者对于数据库内数据比较庞大,恢复起来需要一定的时间的,就不防采用异机备份的策略,可以大大降低因系统崩溃所带来的损失。
总之,事物总有其两面性,没有哪种方法是适用于任何情况的,我们应该在实际工作中多总结、归纳,逐渐摸索出最适合自身系统的一种解决方案,这样才能使我们的工作顺利开展

热心网友 时间:2022-04-09 08:03

--数据库日志模式不为simple时:
--创建测试数据库
CREATE DATABASE Db
GO

--对数据库进行备份
BACKUP DATABASE Db TO DISK='c:\db.bak' WITH FORMAT
GO

--创建测试表
CREATE TABLE Db.dbo.TB_test(ID int)

--延时1秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)
WAITFOR DELAY '00:00:01'
GO

--假设我们现在误操作删除了 Db.dbo.TB_test 这个表
DROP TABLE Db.dbo.TB_test

--保存删除表的时间
SELECT dt=GETDATE() INTO #
GO

--在删除操作后,发现不应该删除表 Db.dbo.TB_test

--下面演示了如何恢复这个误删除的表 Db.dbo.TB_test

--首先,备份事务日志(使用事务日志才能还原到指定的时间点)
BACKUP LOG Db TO DISK='c:\db_log.bak' WITH FORMAT
GO

--接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)
RESTORE DATABASE Db FROM DISK='c:\db.bak' WITH REPLACE,NORECOVERY
GO

--将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早
DECLARE @dt datetime
SELECT @dt=DATEADD(ms,-20,dt) FROM # --获取比表被删除的时间略早的时间
RESTORE LOG Db FROM DISK='c:\db_log.bak' WITH RECOVERY,STOPAT=@dt
GO

--查询一下,看表是否恢复
SELECT * FROM Db.dbo.TB_test

/*--结果:
ID
-----------

(所影响的行数为 0 行)
--*/

--测试成功
GO

--最后删除我们做的测试环境
DROP DATABASE Db
DROP TABLE #

方法有以下几种:

1,把该OU“属性”中“组策略”选项下的组策略删掉,就可以了
2,把启用“只运行许可的windows应用程序"与"阻止访问命令提示符"都选择不应用,就可以了
3,把该OU“属性”中“组策略”选项下的组策略禁用,再添加一个组策略就可以了。
4,把该OU中的用户移动到其他组策略默认配置的OU中,也可以了

以上方法都可以让该OU中的用户权限恢复到默认,答案2是直接解决你的问题。

如果按照你的补充来看,你仍然是用管理员来登陆的。那么:
1,你可以使用另外一个具用管理员权限的用户登陆试试,
2,如果没有另外的管理员用户,进入Dos模式下,使用net user aaa(用户名)bbb(密码)建立新用户,然后用net localgroup administrators aaa /add 将aaa用户添加到管理员组中。

在修复数据库的操作中经常需要重建日志,但是SQL的联机丛书里却没有对应的具体描述,现总结如下:

1、把数据库改成紧急模式:(可用如下语句)
sp_configure 'allow', 1--设置系统库可以修改
reconfigure with override
update sysdatabases set status = 32768 where name = '数据库名';

2、停止SQLSERVER的服务,然后把原日志文件(*.LDF)文件改名;

3、启动SQLSERVER的服务;

4、执行如下DBCC语句重建数据库日志:
DBCC REBUILD_LOG ('数据库名', 'E:\fdzz\database\newfilename.LDF' );
--如果成功,日志重建完成

5、恢复数据库紧急模式(可用如下语句):
update sysdatabases set status = 0 where name = '数据库名'
restore database 数据库名 WITH RECOVERY
sp_configure 'allow', 0--设置系统库不能修改
reconfigure with override

6、检查数据库是否有损坏DBCC CHECKDB

热心网友 时间:2022-04-09 09:37

http://tech.it168.com/database/sqlserver.shtml
这个网站里有详细的
希望对你有帮助

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com