实验8 SQL Server 2005灾难恢复
- 格式:doc
- 大小:81.00 KB
- 文档页数:5
SQL Server数据库1SQL Server 2005数据库可疑恢复日常对Sql Server 2005联系数据库执行操作时,有时对数据库(如:Sharepoint站点配置数据库名Sharepoint_Config)执行些不正常操作如数据库在读写时而无故停止数据库,从而导致Sql Server 2005数据库不正常中断,当再次打开数据库时会发觉某些数据库会被标记为“可疑”(suspect),即在数据库名旁加上了黄色的惊叹号,这时数据库就不能再被打开了,但数据库的结构及数据内容都还是存在的处理要领当数据库发生这种操作故障时,可以按如下操作步骤可处理此要领,打开数据库里的Sql 查询编辑器窗口,运行以下的命令●修改数据库为紧急模式ALTER DATABASE Sharepoint_Config SET EMERGENCY●使数据库变为单用户模式ALTER DATABASE Sharepoint_Config SET SINGLE_USER●修正数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象不正确。
当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修正报告的不正确。
但是,这些修正可能会导致一些数据丢失。
DBCC CheckDB (Sharepoint_Config , REPAIR_ALLOW_DATA_LOSS●使数据库变回为多用户模式ALTER DATABASE Sharepoint_Config SET MULTI_USER●开始->运行->输入cmd->打开DOS命令窗口,输入以下命令重启数据库服务Net stop mssqlserver --停止服务Net start mssqlserver --启动服务再次,打开Sql Server 2005时被标记为“可疑”的数据库已还原正常状态ALTER DATABASE v5_dl_g SET EMERGENCYALTER DATABASE v5_dl_g SET SINGLE_USERDBCC CheckDB (v5_dl_g , REPAIR_ALLOW_DATA_LOSS)ALTER DATABASE v5_dl_g SET MULTI_USER2SQL Server数据库文件恢复及数据库置疑SQL Server 2000数据库不知什么原因变成置疑,在企业管理器里面看是置疑,在DATA 里面有MDF和LOG这两个文件,换一台机器附加时报错:备份数据文件,然后按以下的步骤来进行处理:1.新建一个同名的数据库(数据文件与原来的要一致)2.再停掉sql server(注意不要分离数据库)4.再重启sql server5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用数据库的脚本创建一个新的数据库,并将数据导进去就行了。
SQL Server2005数据恢复原理与企业应用摘要:数据库系统以其强大的信息管理能力和容错功能,在商业、科研、政府机构等等单位获得了广泛的应用。
SQL Server2005拥有强大的权限管理和数据备份恢复能力,能够保障在定期的备份计划下,尽最大的可能恢复因给种不可预料的错误而造成的数据损毁。
研究SQL Server2005的数据恢复原理能够帮助用户更好的理解制定规范的备份计划的重要性和在突发情况下采取正确的措施来恢复数据。
关键词:SQL Server2005;数据恢复;数据备份中图分类号:TP311文献标识码:A文章编号:1007-9599 (2011) 04-0000-01The SQL Server2005 Data Recovery Theory and Enterprises ImplementationsZhang Yong(Xi’an Product Quality Supervision TestInstitute,Xi'an710068,China)Abstract:The database systems have met a widely use in business,research and government because of its powerful management capability in data processing.There is functional system that provides key management in safety and datarecovery in SQL Server 2005.Under the critical schedules of backup tries its best to guard the safety of critical information.The research into the recovery functionality helps better understanding of the importance backing up data with a periodical schedule.Keywords:SQL Server2005;Data recovery;Data backup一、引言SQL Server2005是美国微软公司开发的一款高效能的集成数据管理和分析系统,它使得大数据量的复杂任务处理的稳定性得到保证。
sql server 2005还原sql server 2000的数据库备份数据库 2009-06-25 10:43 阅读324 评论0字号:大中小用Sql Serv er 2000的数据库备份来还原Sql Ser v er 2005中的数据库DECLARE @c md VARCHAR(500);SET @cmd='';SELECT@cmd=@cmd+';KILL '+RTRIM(spid)FROM master.dbo.s y sproc essesWHERE dbid=db_id('数据库名');EXEC(@cmd);GORESTORE DATABASE dbname FROM DISK='D:\AAA.BAK' WITH REPLAC E;--返回由备份集内包含的数据库和日志文件列表组成的结果集。
--主要获得逻辑文件名USE masterRESTORE FILELISTONLYFROM DISK = 'g:\bac k.Bak'Go************************************************/**//*利用bak恢复数据库,强制还原(REPLACE)STATS = 10 每完成10%显示一条记录DBTest和DBTest_log是上面g:\bac k.Bak里的逻辑文件*/USE masterRESTORE DATABASE DBFROM DISK = 'g:\bac k.Bak'WITH MOVE 'DBTest' TO 'E:\Program Files\Microsoft SQL Server2005\D ata\D B.mdf',MOVE 'DBTes t_log' TO 'E:\Program Files\Microsoft SQL Ser v er2005\Data\DB_l og.ldf',STATS = 10, REPLACEGO++++++++++++++++++++++++++++++++/**//*备份数据DB 到.bak文件。
一、数据库备份 (1)
二、数据库还原 (7)
一、数据库备份
1 先打开SQL Server 2005
2 选中要备份的数据,点击右键,选择任务—>备份
3 点击添加,选择存放数据库备份文件的地址
4 在弹出对话框中,点击图示按钮,选择存放数据库备份文件的地址
5点击选项,进行备份设置,设置完成,点击确定,开始备份
二、数据库还原
1 先打开SQL Server 2005
2 选中要备份的数据,点击右键,选择任务—>还原
3在弹出对话框中,选择源设备,点击后面的按钮,弹出指定备份对话框,点击添加按钮,选择.bak源文件,找到后,点击确定
4 选择选项,进行还原设置,“覆盖现有数据”前面的小方框打勾; 点击“还原为”后面的按钮,要还原该数据库的数据文件和日志文件
5选定好要还原的数据文件和日志文件之后,点击“确定”按钮,完成数据库还原。
将SQLSERVER2005迁移到新的服务器上(在新的服务器上恢复)SQLSERVER2005迁移到新的服务器上(在新的服务器上恢复)当原先服务器出现故障,已经⽆法启动。
需要将整个SQLSERVER系统紧急迁移到⼀台备⽤服务器上,那么这个迁移步骤怎样做呢?在说之前复习⼀下各个系统数据库的主要作⽤,以便⼤家更清楚恢复这些系统数据库的好处master:记录SQLSERVER系统的所有系统级信息model:在SQLSERVER实例上为所有数据库创建的模版msdb:SQLSERVER代理⽤来安排警报和作业以及记录操作员信息的数据库,msdb数据库还包含历史记录表,错误页suspect_page 以及备份和还原历史记录表resource:包含SQLSERVER附带的所有系统对象副本的只读数据库,resource数据库是不能备份的,⽽且在SSMS⾥是看不见的tempdb:⽤于保存临时或中间结果集的⼯作空间。
每次启动SQLSERVER实例时SQLSERVER都会根据model数据库为蓝本重新创建此数据库。
服务器实例关闭时,将永久删除tempdb数据库中的所有数据---------------------------------------------------------华丽的分割线-----------------------------------------------------------------------好了,现在进⼊正题:先说⼀下具体环境:操作系统Windows2003企业版SP2;备⽤服务器名字叫:SQL2005PC;SQLSERVER是默认实例;数据库:SQL2005企业版备⽤服务器和原服务器不同名,SQLSERVER安装的路径也不⼀样。
(备⽤服务器安装路径为c:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL)现在⼿头有最新的master,msdb,model数据库备份,以及其他所有⽤户数据库备份将系统数据库恢复,以还原所有数据库系统信息(⽤户,密码,任务等),然后才能恢复⽤户数据库在这种情况下,恢复系统数据库需要修改系统数据库路径,还要修改SQLSERVER记录下⾃⼰的服务器名字友情提⽰:注意:命令⾏下运⾏的指令是⼤⼩写敏感的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!------------------------------------------------------------------华丽的分割线----------------------------------------------------------------正式开始拉!!不好意思让⼤家久等了1、确认备⽤服务器的SQL版本和原服务器⼀致1SELECT@@VERSION返回的号码必须跟原先服务器返回的号码完全⼀样2、确保你备⽤服务器的SQLSERVER在启动的时候没有程序连接进来,不然的话等⼀下连接数据库的时候就会报错以下是错误消息:消息 18461,级别 14,状态 1,服务器 XXX,第 1 ⾏⽤户 'XXX\Administrator' 登录失败。
SQLserver2005数据库还原数据库时错错?system.Data.SqlCli...--创建测试数据库CREATE DATABASE dbGO--使用磁盘媒体集备份测试数据库,备份完成后删除测试数据库BACKUP DATABASE dbTO DISK='c:\a.bak',DISK='c:\b.bak'WITH FORMATDROP DATABASE dbGO--1. 恢复时仅指定媒体集中的一个备份文件RESTORE DATABASE dbFROM DISK='c:\a.bak'/*--将收到错误信息服务器: 消息 3132,级别 16,状态 1,行 3数据库 'db' 的媒体集有 2 个家族成员,但只提供了 1 个。
必须提供所有的成员。
--*/--2. 再次备份时,仅指定备份媒体集中的一个备份文件BACKUP DATABASE pubsTO DISK='c:\a.bak'/*--将收到错误信息服务器: 消息 3132,级别 16,状态 1,行 11数据库 'pubs' 的媒体集有 2 个家族成员,但只提供了 1 个。
必须提供所有的成员。
--*/--3. 备份时,指定超过媒体集的备份文件数BACKUP DATABASE pubsTO DISK='c:\a.bak',DISK='c:\b.bak',DISK='c:\c.bak'/*--将收到错误信息服务器: 消息 3132,级别 16,状态 1,行 1数据库 'pubs' 的媒体集有 2 个家族成员,但只提供了 3 个。
必须提供所有的成员。
--*/--4. 重新初始化媒体集时指定所有的备份文件BACKUP DATABASE pubsTO DISK='c:\a.bak'WITH INIT/*--将收到错误信息服务器: 消息 3132,级别 16,状态 1,行 2数据库 'pubs' 的媒体集有 2 个家族成员,但只提供了 1 个。
寒山sql数据库修复中心/进入“C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn”,执行SQLSERVR.EXE –M打开SSMS工具,先断开连接,再新建查询,执行以下命名还原USE masterGORESTORE DATABASE masterFROM disk='c:\master.bak'GOSQL SERVER 2005 Master备份与还原时间:2009-07-31 13:04:58来源:网络作者:未知点击:505次一、备份Master 及相关的系统数据库一、备份Master 及相关的系统数据库由于系统数据库对Sql Server来说尤其重要,为了确保SQL SERVER系统的正常运行,除了日常备份用户的数据库之外,我们还需要备份系统数据库,如对Master,Model,Msdb (TempDB不需备份)进行完整备份二、还原Master数据库如果系统配置丢失或Master出现问题,可以进入单用户模式进行还原;如果出现下列情况,必须重新生成损坏的master 数据库:A. master 数据库的当前备份不可用。
B. 存在master 数据库备份,但由于Microsoft SQL Server 实例无法启动,因此无法还原该备份。
1、重新生成master 数据库:注意:在SQL Server 2005 中已废止Rebuildm.exe 程序。
若要重新生成master 数据库,请使用setup.exe。
1、Start /wait setup.exe /qn INSTANCENAME= REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=<NewStrongPassword>例:start /wait e:\setup.exe /qn INSTANCENAME=mssqlserver REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=abc123@!@注:INSTANCENAME:指定实例名,默认实例则用mssqlserver表示REINSTALL:指定引擎SAPWD:强密码Setup.exe:指定光盘1中的根目录下的文件/qn 开关用于取消所有安装程序对话框和错误消息。
一、数据库存储概述1、数据文件类型• Primary data files:每个数据库都有一个单独的主要数据文件,默认以.mdf扩展名。
主要数据文件不仅包含数据信息,还包含与该数据库结构相关的信息。
创建数据库时,数据库结构相关信息不仅存在于master 数据库中,同时还包含在primary data file 上.• Secondary data files 一个数据库可以有一个或者多个二级数据文件,默认以.ndf为扩展名。
一般来说二级数据文件并不是必须的,因为二级数据文件不包含文件位置等信息。
• Transaction logs: 数据库必须至少有一个事务日志文件,默认以.ldf 为扩展名。
日志是整个数据库的命脉,事务日志不可读的话,将无法对数据库进行任何操作。
当你在数据库上进行数据操作时,数据并不是直接写入数据文件,而是先将相关操作信息写入事务日志文件。
当一个事务结束时,该事务被标记为已提交,但这也并不意味着数据从日志文件写入了数据文件中。
一个标记为已提交的事务仅仅意味着所有与该事务相关的元素已经成功完成。
The buffer cache may be updated, but not necessarily the data file.检查点(checkpoint)会周期性的发生。
检查点发生时,是确认所有已提交的事务, 不管是在buffer cache 或者事务日志中,都被写入相关的数据文件中。
检查点(checkpoint)可以通过以下方式来触发:1、显示调用checkpoint 命令;2、Recover Interval 实例设置的周期达到(用来标识多久发生一次checkpoint )3、做了数据库备份(在简单模式下);4、数据库文件结构被改变(在简单模式下);5、数据库引擎被结束。
一般来说,写数据的过程是由系统自动完成的,如下图所示,但数据并不是直接写入.mdf或者.ndf文件中,而是先将有关变化写入事务日志中,这也是数据库中的write-ahead 机制。
实验8灾难恢复课堂练习一:备份数据库目标本次课堂练习的目标是能够通过使用Transact-SQL 备份带镜像和校验和选项的数据库。
备份数据库过程列表1.在C:\ 中创建一个新文件夹,命名为DataBackups,然后关闭“Windows 资源管理器”。
2.单击“开始”,依次指向“所有程序”和Microsoft SQL Server 2005,然后单击SQL Server Management Studio。
3.在“连接到服务器”对话框中,指定下表中的值,然后单击“连接”。
5.右击“备份设备”,然后单击“新建备份设备”。
6.在新建备份设备中,指定下表中列出的值。
然后单击“确定”。
注:对于下表中描述的备份设备使用T-SQL命令来创建该设备,并将T-SQL命令保存。
8.在master数据库下创建一个测试表test,字段属性随意。
9.在工具栏上,单击“新建查询”。
使用Transact-SQL 代码对Master与AdventureWorks数据库进行完整备份,将它们分别备份到设备MasterDev上,同时备份镜像到设备AdventureWorksDev上,并对备份设备进行数据校验。
10.单击工具栏上的“执行”按钮来执行该查询,保存该T-SQL代码。
验证数据库备份过程列表1.在工具栏上,单击“新建查询”。
2.在SQLQuery2.sql 窗口中,输入下列Transact-SQL代码分别对2个备份设备进行验证:RESTORE VERIFYONLY FROM MasterDevRESTORE VERIFYONLY FROM AdventureWorksDev3.单击工具栏上的“执行”按钮执行该查询。
这两个语句可以单独执行也可一起执行。
验证两个备份是否都有效。
课堂练习二:还原数据库目标本次课堂练习的目标是能够使用Transact-SQL还原数据库。
通过备份设备还原用户数据库过程列表1.在SQL Server Management Studio 中,单击工具栏上的“新建查询”按钮。
2.在查询窗口中,使用Transact-SQL语句删除AdventureWorks数据库。
3.在查询窗口中,使用Transact-SQL语句查看AdventureWorksDev设备上的备份信息。
4.在查询窗口中,使用Transact-SQL语句,通过备份设备AdventureWorksDev对AdventureWorks数据库进行还原,然后单击“执行”:如何在备份逻辑设备受损情况下使用其他备份还原用户数据库过程列表1.在AdventureWorks数据库中创建一个Test表,字段随意。
2.使用AdventureWorksDev对AdventureWorks数据库做一次差异备份。
3.此步骤模拟受损的备份设备:将C:\DataBackups\下的AdventureWorksDev.bak文件移动到其他分区根目录下。
删除AdventureWorks数据库。
4.输入以下代码后单击“执行”:RESTORE DATABASE AdventureWorks FROM AdventureWorksDev WITH REPLACE 注意“结果”面板中的消息。
5.新建查询,在查询窗口中,使用T-SQL命令对移走的AdventureWorksDev.bak进行还原(还原到最新状态),还原的数据库名为AdventureWorks,并将该数据库的数据文件和事务日志文件移动到D:\下,数据文件保存的文件名为AdventureWorks_Data.mdf,事务日志保存的文件名为AdventureWorks_log.ldf。
(注:没有备份尾日志,还原时使用REPLACE参数)6.保存T-SQL命令。
演示操作:还原master数据库(此操作要注意,如果恢复不当导致master数据库访问不了,会挺麻烦,尽量在实验操作,因为有还原卡)1.删除前面为master数据库创建的测试表test。
2.停止服务器上的MSSQLServer服务。
3.“开始”菜单上单击“运行”,输入“cmd”,弹出cmd窗口A。
4.找到MS SQL Server 2005的安装目录中的binn目录下的sqlservr.exe文件(默认安装在C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn)。
复制该路径。
5.在cmd窗口A中,输入:cd C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn 敲回车执行后再输入(默认实例输入mssqlserver,其它实例输入对应的实例名):sqlservr.exe -m -f mssqlserver6.敲回车运行命令,如果返回“This is an informational message only; no user action isrequired”表示进入单用户模式,否则重新执行步骤1-4。
7.cmd窗口A不关闭。
重新打开新的cmd窗口B。
8.在cmd窗口B中,输入(默认实例输入mssqlserver,其它实例输入对应的实例名):sqlcmd -s mssqlserver回车运行,进入SQLcmd模式。
9.在cmd窗口B中输入数据库还原的命令,最后使用go作为结束,回车运行便可以还原master数据库10.使用Ctrl + C结束A和B窗口的任务并关闭窗口,重启MSSQLServer服务,打开SSMS即可看来还原后的Master数据库了。
演示说明master前面演示的m aster数据库还原是有备份并且m aster可以访问的情况下执行的操作。
如果服务器上的m aster数据损坏根本不能访问的话,那就比较“杯具”了。
解决的方法:需要使用SQL Server 2005的安装光盘对m aster数据库进行重建了。
1.放入安装光盘。
2.在cm d窗口输入以下命令:start /wait X:\setup.exe /qn INSTANCENAME=实例名REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=SA的密码说明:X表示光盘的盘符,实例名为哪个实例的Master数据库损坏,就输入相应的实例,默认输入m sssqlserver,SA密码是要求强密码。
3.执行完后,Master数据库重建成功,再通过前面步骤将m aster数据库还原回来即可。
课堂练习三:使用数据库快照还原数据目标本次课堂练习的目标是能够使用Transact-SQL 创建数据库快照。
本次课堂练习将从AdventureWorks数据库创建数据库快照。
使用Transact-SQL 创建数据库快照过程列表执行以下步骤以使用Transact-SQL 创建数据库快照:1.单击工具栏上的“新建查询”按钮。
2.在查询窗口中,输入通过Transact-SQL为AdventureWorks数据库创建一个名为AdventureWorks_Snapshop的数据库快照,存放在E盘根目录下。
单击“执行”运行命令。
3.在“对象资源管理器”中,依次展开“数据库”和“数据库快照”,然后确认存在新的数据库快照。
在新的快照变得可见之前,你可能需要刷新数据库快照的列表。
4.单击工具栏上的“新建查询”按钮。
5.在新的空查询窗口中,输入下列Transact-SQL 代码:SELECT *FROM AdventureWorks_Snapshot.Sales.SalesOrderDetailORDER BY SalesOrderIDSELECT *FROM AdventureWorks.Sales.SalesOrderDetailORDER BY SalesOrderID6.单击工具栏上的“执行”按钮,然后查看结果。
两条语句将返回完全相同的信息。
7.单击工具栏上的“新建查询”按钮。
8.在新的空查询窗口中,输入下列Transact-SQL 代码:DROP TA BLE AdventureWorks.Sales.SalesOrderDetail9.单击工具栏上的“执行”按钮。
10.返回到以前包含SELECT 语句的查询窗口,然后单击“执行”按钮。
这次,“结果”选项卡将包含快照中的Sales.SalesOrderDetail表,但由于表不再存在,因此会在AdventureWorks 数据库的“消息”选项卡中返回一条错误消息。
11.单击工具栏上的“新建查询”按钮。
12.在新的空查询窗口中,输入下列Transact-SQL 代码:RESTORE DATABASE AdventureWorks FROM DATABASE_SNAPSHOT ='AdventureWorks_Snapshot'13.单击工具栏上的“执行”按钮,然后查看结果。
14.返回到以前包含SELECT 语句的查询窗口,然后单击“执行”按钮。
这次两条语句将返回完全相同的信息。
15.关闭SQL Server Management Studio 且保存脚本文件。