2017年考的计算机一级还能查吗_2017计算机等考三级数据库辅导:SQLServer数据库恢复

副标题:2017计算机等考三级数据库辅导:SQLServer数据库恢复

时间:2023-11-02 01:53:01 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。


  今天一不小心把sqlserver数据库初始化了,在网上找了半天发现了几篇帖子,受益非浅,记录下:
DB2中可以使得数据库回复到指定的时间点,SQL Server数据库的Recovery Model为full 或者Bulk copy的时候,是可以从日志来恢复数据库的。实际上日志中记录的一条一条的transact sql语句,恢复数据库的时候会redo这些sql语句。 前提条件:myBBS是数据库test中的一个表,数据库test的Recovery Model为Full,Auto Close,Auto Shrink两个选项未选中。数据库test的data files和log files均为默认的自动增长状态。

A:2004/10/13,16:00进行数据库备份,backup database test to disk='d:\db\1600.bak' with init

B:2004/10/14,13:00对数据库进行了update,delete等操作;

C:2004/10/15,18:00使用delete mybbs where id>300时,语句误写成delete mybbs,因而删除了表mybbs中的所有数据。

现在在C点,C点对数据库进行了误操作,我们希望数据库能够恢复到C之前的状态,比如恢复到10月15日17:59分的状态。

要恢复数据库B点,使用的是A点备分的数据库1600.bak;而使用的日志备分是最新的备分1820.logs;因而进行如下操作:

--备分日志:

BACKUP LOG test TO DISK='d:\1820.logs' WITH INIT

--恢复数据库1600.bak,使用WITH NORECOVERY参数:

RESTORE DATABASE test from disk='d:\db\1640.bak' WITH NORECOVERY

--使用日志恢复数据库到10月15日17:59分:

RESTORE LOG test FROM disk='d:\1820.logs' WITH RECOVERY,SAT='10/15/2004 17:59'

上面的三条Transact SQL语句的对应过程:

1.恢复数据库到A点;

2.执行A-B之间的log记录,把数据库恢复到B点.

这样就恢复数据库到了指定的时间点。如果恢复不成功,可能的原因是:1.未使用正确的备分数据库;2.数据库选项选中了Auto Shrink.

Server 2005 联机丛书(2007 年 9 月)

执行数据库完整还原(完整恢复模式)

数据库完整还原的目的是还原整个数据库。整个数据库在还原期间处于离线状态。在数据库的任何部分变为在线之前,必须将所有数据恢复到同一点,即数据库的所有部分都处于同一时间点并且不存在未提交的事务。

在完整恢复模式下,数据库可以还原到特定时间点。时间点可以是最新的可用备份、特定的日期和时间或者标记的事务。

安全说明:

建议您不要从未知源或不可信源附加或还原数据库。这些数据库可能包含执行非预期 Transact-SQL 代码的恶意代码,或通过修改架构或物理数据库结构导致错误。使用来自未知源或不可信源的数据库前,请在非生产服务器上针对数据库运行 DBCC CHECKDB,然后检查数据库中的代码,例如存储过程或其他用户定义代码。

还原完整数据库

通常,将数据库恢复到故障点分为下列基本步骤:

备份活动事务日志(称为日志尾部)。此操作将创建尾日志备份。如果活动事务日志不可用,则该日志部分的所有事务都将丢失。

限制条件三:要对某些列取别名,并保证列名的。

在表关联查询的时候,当不同表的列名相同时,只需要加上表的前缀即可。不需要对列另外进行命名。但是,在创建视图时就会出现问题,数据库会提示“duplicate column name”的错误提示,警告用户有重复的列名。有时候,用户利用Select语句连接多个来自不同表的列,若拥有相同的名字,则这个语句仍然可以执行。但是,若把它复制到创建视图的窗口,创建视图时,就会不成功。

查询语句跟创建视图的查询语句还有很多类似的差异。如有时候,我们在查询语句中,可能会比较频繁的采用一些算术表达式;或者在查询语句中使用函数等等。在查询的时候,我们可以不给这个列“取名”。数据库在查询的时候,会自动给其命名。但是,在创建视图时,数据库系统就会给你出难题。系统会提醒你为列取别名。

从以上两个例子中,我们可以看出,虽然视图是对SQL语句的封装,但是,两者仍然有差异。创建视图的查询语句必须要遵守一定的限制。如要保证视图的各个列名的;如果自阿视图中某一列是一个算术表达式、函数或者常数的时候,要给其取名字,等等。

限制条件四:权限上的双重限制。

为了保障基础表数据的安全性,在视图创建的时候,其权限控制比较严格。

一方面,若用户需要创建视图,则必须要有数据库视图创建的权限。这是视图建立时必须遵循的一个基本条件。如有些数据库管理员虽然具有表的创建、修改权限;但是,这并不表示这个数据库管理员就有建立视图的权限。恰恰相反,在大型数据库设计中,往往会对数据库管理员进行分工。建立基础表的就只管建立基础表;负责创建视图的就只有创建视图的权限。

其次,在具有创建视图权限的同时,用户还必须具有访问对应表的权限。如某个数据库管理员,已经有了创建视图的权限。此时,若其需要创建一张员工工资信息的视图,还不一定会成功。这还要这个数据库管理员有美誉跟工资信息相关的基础表的访问权限。如建立员工工资信息这张视图一共涉及到五张表,则这个数据库管理员就需要拥有者每张表的查询权限。若没有的话,则建立这张视图就会以失败告终。

第三,就是视图权限的继承问题。如上面的例子中,这个数据库管理员不是基础表的所有者。但是经过所有者的授权,他就可以对这个基础表进行访问,就可以以此为基础建立视图。但是,这个数据库管理员有没有把对这个基础表的访问权限再授权给其他人呢?如他能否授权给A用户访问员工考勤信息表呢?答案是不一定。默认情况下,数据库管理员不能够再对其他用户进行授权。但是,若基础表的所有者,把这个权利给了数据库管理员之后,则他就可以对用户进行重新授权。让数据库管理员可以给A用户进行授权,让其可以进行相关的操作。

可见,视图虽然灵活,安全,方便,但是其仍然有比较多的限制条件。根据笔者的经验,一般在报表、表单等等工作上,采用视图会更加的合理。因为其SQL语句可以重复使用。而在基础表更新上,包括纪录的更改、删除或者插入上,往往是直接对基础表进行更新。对于一些表的约束,可以通过触发器、规则等等来实现;甚至可以通过前台SQL语句直接实现约束。作为数据库管理员,要有这个能力,能够判断在什么时候使用视图,什么时候直接调用基础表。

重要提示:

在大容量日志恢复模式下,备份任何包含大容量日志操作的日志都需要访问数据库中的所有数据文件。如果无法访问该数据文件,则不能备份事务日志。在这种情况下,您必须手动重做自最近备份日志以来所做的所有更改。

有关详细信息,请参阅尾日志备份。

还原最新完整数据库备份而不恢复数据库 (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY)。

如果存在差异备份,则还原最新的差异备份而不恢复数据库 (RESTORE DATABASE database_name WITH NORECOVERY)。

从还原备份后创建的第一个事务日志备份开始,使用 NORECOVERY 依次还原日志。

恢复数据库 (RESTORE DATABASE database_name WITH RECOVERY)。此步骤也可以与还原上一次日志备份结合使用。

数据库完整还原通常可以恢复到日志备份中的某一时间点或标记的事务。但是,在大容量日志恢复模式下,如果日志备份包含大容量更改,则不能进行时点恢复。有关详细信息,请参阅将数据库还原到备份中的某个时间点。

还原整个数据库时,应使用单一还原顺序。下面的示例说明还原顺序中用于将数据库还原到故障点的数据库完整还原方案的关键选项。还原顺序由通过一个或多个还原阶段来移动数据的一个或多个还原操作组成。将省略与此目的不相关的语法和详细信息。

数据库将还原并前滚。数据库差异用于减少前滚时间。此还原顺序用于避免丢失工作;上次还原的备份为尾日志备份。

还原顺序的基本 RESTORE 语法是:

RESTORE DATABASE database FROM full database backup WITH NORECOVERY;

RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;

RESTORE LOG database FROM log_backup WITH NORECOVERY; 对于其他每个日志备份,重复此还原日志步骤。

RESTORE DATABASE database WITH RECOVERY;

对于以下示例,AdventureWorks 示例数据库已设置为在数据库备份之前使用完整恢复模式。此示例将创建 AdventureWorks 数据库的尾日志备份。接下来,示例将还原较早的完整数据库备份和日志备份,然后还原尾日志备份。示例将在最后的单独步骤中恢复数据库。

注意:

此示例使用在完整数据库备份的“在完整恢复模式下使用数据库备份”部分中创建的数据库备份和日志备份。 此示例以 ALTER DATABASE 语句开头,该语句将恢复模式设置为 FULL。复制代码:

USE master; --Make sure the database is using the full recovery model.
ALTER DATABASE AdventureWorks SET RECOVERY FULL;
GO
--Create tail-log backup.
BACKUP LOG AdventureWorks TO DISK
= 'Z:\SQLServerBackups\AdventureWorks.bak''Z:
\SQLServerBackups\AdventureWorks.bak' WITH NORECOVERY;
GO --Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
WITH FILE=1,
NORECOVERY;
--Restore the regular log backup (from backup set 2).
RESTORE LOG AdventureWorks
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
WITH FILE=2,
NORECOVERY;
--Restore the tail-log backup (from backup set 3).
RESTORE LOG AdventureWorks
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
WITH FILE=3,
NORECOVERY;
GO --recover the database:
RESTORE DATABASE AdventureWorks
WITH RECOVERY;
GO
恢复到故障点

还原完整数据库备份

sqlserver 还原到时间点

rs1_mainContentContainer_ctl25" |ctl00_rs1_mainContentContainer_ctl25',this);" href="http://msdn.microsoft.com/zh-cn/library/ms189895.aspx">如何还原数据库备份 (Transact-SQL)

如何还原数据库备份 (SQL Server Management Studio)

如何通过现有的数据库备份创建新的数据库 (SQL Server Management Studio)

还原差异数据库备份

如何还原差异数据库备份 (Transact-SQL)

如何还原差异数据库备份 (SQL Server Management Studio)

还原事务日志备份

还原数据备份之后,必须还原所有后续的事务日志备份,然后再恢复数据库。

如何应用事务日志备份 (Transact-SQL)

如何还原事务日志备份 (SQL Server Management Studio)

使用 SQL Server 管理对象 (SMO) 还原备份

SqlRestore

恢复到时间点

在完整恢复模式下,数据库可以还原到日志备份内的特定时间点。时间点可以是特定的日期和时间、标记的事务或日志序列号 (LSN)。有关详细信息,请参阅将数据库还原到备份中的某个时间点。

对 SQL Server 早期版本中备份的支持

在 SQL Server 2005 中,您可以还原使用 SQL Server 7.0 版、SQL Server 2000 或 SQL Server 2005 创建的数据库备份。但是,SQL Server 2005 无法还原使用 SQL Server 7.0 或 SQL Server 2000 创建的 master、model 和 msdb 备份。此外,包含创建索引操作的 SQL Server 7.0 日志备份无法还原到 SQL Server 2000 或 SQL Server 2005。

SQL Server 2005 使用与 SQL Server 早期版本不同的默认路径。因此,若要从备份还原在 SQL Server 7.0 或 SQL Server 2000 的默认位置中创建的数据库,必须使用 MOVE 选项。有关新默认路径的信息,请参阅 SQL Server 2005 的默认实例和命名实例的文件位置。

注意:

使用 SQL Server 6.5 或早期版本创建的数据库备份采用的格式不兼容,无法在 SQL Server 2005 中还原。有关如何将使用 SQL Server 6.5 或早期版本创建的数据库升级到 SQL Server 2005 的信息,请参阅从 SQL Server 6.5 或更早版本复制数据库。

2017计算机等考三级数据库辅导:SQLServer数据库恢复.doc

本文来源:https://www.wddqw.com/8U7O.html