文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>数据库紧急恢复过程

数据库紧急恢复过程

时间:2011-04-10  来源:心雨纷扬

  数据库紧急恢复过程 当数据库失效时,请记录下当前时间,然后遵循下面步骤进行恢复。   1.         备份数据库。 成功,使用备份文件还原数据库,转第2步。 失败,转第3步。   2.         还原数据库(在另一个服务器操作) (1)DECLARE @backup_device nvarchar(128), @log_backup_device nvarchar(128) set @backup_device = N'F:\database\myDb.bak'   restore database MyDb     from disk = @backup_device WITH REPLACE , file=5 (2)根据事务日志来恢复到具体某个时间点 --首先基于一个完全备份点开始做事务日志还原,注意[NORECOVERY]参数     RESTORE database (数据库名) from 完全备份设备名with REPLACE,NORECOVERY,     MOVE 'MyDb' TO 'D:\FMyDb_0606.mdf',     MOVE 'FMyDb_Log' TO 'D:\FMyDb_Log_0606.ldf'       --开始事务日志     A.查看事务日志点:RESTORE HEADERONLY from disk='事务日志的备份的文件完全路径或备份设备名'       B.开始恢复     restore LOG 数据库名from事务日志备份设备名with FILE=1, NORECOVERY     restore LOG 数据库名from事务日志备份设备名with FILE=2, NORECOVERY     restore LOG 数据库名from事务日志备份设备名with FILE=3,NORECOVERY   --倒数第二个备份日志     restore LOG 数据库名from事务日志备份设备名with FILE=4,RECOVERY --最后一个备份日志     执行失败的话,转下一步。   3.         复制数据库mdb, ldf文件。 执行 net stop mssqlserver 停止SQL Server服务,复制数据库mdb, ldf文件。 成功复制2个文件已经其他文件组,转第4步。 只能复制mdb文件,转第5步。 只能复制ldf文件,转第8步。   4.         附加数据库(数据库文件与日志文件) CREATE DATABASE [MyDb2] ON ( FILENAME = N'F:\back\MyDb.mdf' ) ,( FILENAME = N'F:\back\MyDb_log.ldf' )  FOR ATTACH 如果出现失败,转第5步。   5.         附加数据库(只有数据库文件) CREATE DATABASE [MyDb2] ON ( FILENAME = N'F:\back\MyDb.mdf' ) FOR ATTACH_REBUILD_LOG 如果失败,在SQL2000下,可以尝试(2005版本没有该功能) dbcc   rebuild_log('MyDb','F:\MyDb_log.ldf')   转第6步。 当服务器因为硬件失败导致数据库失效时,可能出现以下错误,转第6步: 文件激活失败。物理文件名称'f:\database\MyDb\MyDb_log.ldf'可能不正确。 由于数据库没有完全关闭,无法重新生成日志。   6.         强制附加数据库 a)         新建一个同名数据库 CREATE DATABASE [MyDb_temp]      ON (NAME=MyDb_temp,     FILENAME = N'F:\temp\MyDb.mdf' )  LOG ON (NAME=MyDb_temp _Log, FILENAME = N'F:\temp\MyDb_log.ldf') b)         停止SqlServer c)         将备份的数据库覆盖F:\temp\MyDb.mdf d)         启动SqlServer,(MyDb_temp将变为不可用) 查看数据库状态 SELECT * FROM SYS.DATABASES SELECT * FROM sys.database_recovery_status   e)         将数据库改为紧急恢复模式 ALTER   DATABASE   MyDb   SET   EMERGENCY f)   修复数据库 DBCC CheckDB ('MyDb') g)         将数据库改为但用户模式 ALTER   DATABASE   MyDb   SET   SINGLE_USER h)         再带参数修复数据库 DBCC CheckDB ('MyDb',   REPAIR_REBUILD   ) i)           将数据库改为正常模式 ALTER   DATABASE   MyDb   SET   ONLINE 如果无法创建数据库日志,i步骤将失败,这时候如果能看到数据库表,和进行Select操作,转第7步。   7.         提取数据库数据 a)   创建一个新的临时数据库 b)   导出数据 执行 SELECT 'SELECT * INTO MyDb2..'+name+' FROM '+ name  FROM sys.objects WHERE TYPE = 'U' AND name!='sysdiagrams' 产生数据导出语句,执行他们,将数据复制到新数据库 c)   导出存储过程:待续 d)   导出触发器:待续 e)   导出函数:待续 f)   导出自定义数据类型:待续 g)   导出用户:待续 h)   将新数据库还原到目标服务器 备份/还原这个新建的数据库到目标服务器 i)   修复孤立用户(SQL 2005 版) a)   EXEC sp_change_users_login 'Auto_Fix', 'GameServer'; b)   EXEC sp_change_users_login 'Auto_Fix', 'backoffice'; c)   EXEC sp_change_users_login 'Auto_Fix', 'adminsoft'; j)           修复数据库拥有者 EXEC sp_changedbowner 'sa'     总结:还是定时备份好。。。 本文转自CSDN:http://blog.csdn.net/greenery/archive/2008/06/20/2570242.aspx,非本人原创.
相关阅读 更多 +
排行榜 更多 +
瓢虫少女

瓢虫少女

飞行射击 下载
潜艇鱼雷

潜艇鱼雷

飞行射击 下载
网络掠夺者

网络掠夺者

飞行射击 下载