数据库系统崩溃后的一般处理步骤

数据|数据库

情况描述:

SQL Server 2000崩溃,重新安装数据库。

有以下准备:

1, 三个系统库(master,msdb,model)的完全备份:

2  两个用户数据库(user01,user02)的备份(周日的完全备份+除周日外每天的差异备份):

三个系统数据库是早期备份的,之间没有更新过帐号信息,没有增减过作业等等。

两个用户数据库在上周日晚做过完全备份(user01.bak和user02.bak)

 

准备重新安装数据库,希望能一次性恢复到用户数据库最后一个备份前的状态。

 

 

常规恢复过程大致如下

 

1. 备份可用的数据, 包含所有系统数据库和用户数据库的数据文件和日志文件(*.mdf/ldf/ndf)

2. 卸载原来的安装

3. 系统表查找和删除所有的MSSQLServer项

4. 磁盘上删除安装SQL SErver产生的所有文件

 

5. 重新安装SQL Server,所需安装的补丁的版本要求保持与备份系统数据库时安装的补丁版本一致

 

6. 单用户模式下恢复master数据库

7. 恢复其他系统数据库

8. 恢复用户数据库

 

 

可以做的尝试

如果时间比较充分,而且想尽量恢复数据到最近的时间点, 可以在上述步骤中做下面的尝试

 

1. 把6,7两步改为:

a. 停止MSSQL服务

b. 用步骤1备份的系统数据库的数据文件和日志文件替换安装后生成的系统数据库的对应文件

c. 建立与SQL Server系统崩溃之前一样的用户数据库的存放目录, 并且把用户数据库文件按原来的位置存放

d. 启动MSSQL服务

e. 如果MSSQL服务成功, 在企业管理看看用户数据库有没有置疑, 如果没有置疑, 则其他操作都不用做了, 数据已经恢复

 

注意:

    在做上面的步骤b之前, 先备份准备覆盖的文件

 

2. 如果步骤1的尝试不成功, 则再做下面的尝试, 把步骤8修改为下面的:

a. 停止MSSQL服务

b. 用备份的文件还原被覆盖的文件

c. 尝试用附加的方式恢复用户数据库

d. 如果成功, 则修复各用户数据库中的孤立用户

 

 

恢复过程会涉及到的一些具体处理

 

1. 恢复系统数据库:

在SQL Server数据库中,系统信息存储在系统数据库中,主要的系统数据库包括:

master-从整体上控制用户数据库和SQL Server操作,在创建了任何用户定义的对象后,都要备份它

model-为新数据库提供模版和原型

msdb-包含了有关作业、报警及操作员等信息

 

如果包含系统数据库的介质变了,那么必须重建系统数据库,如果你仍然可以启动SQL Server服务,则可以通过RESTORE语句从系统数据库的备份中恢复数据库。

如果master坏了,不能启动系统,可以按照下面步骤进行恢复

1. 重建系统数据库 运行c:\mssql7\binn\rebuildm.exe,按照提示进行即可,

过程中需要系统数据库样本的路径,可在安装光盘中找到;

 

2  重建系统数据库后,启动SQL Server服务,用系统数据库的备份恢复数据库

就行了通常恢复顺序为master->msdb->model

在恢复master的备份时要注意:必须在单用户(single user)模式下进行

进入单用户模式的方法:

a. 在命令行模式下输入:sqlservr -c -f -m或者输入sqlservr -m

其中:-c 可以缩短启动时间,SQL Server 不作为Windows NT的服务启动

-f 用最小配置启动SQL Server

-m 单用户模式启动SQL Server

 

b. 可以在控制面板-服务-MSSQLServer的启动参数中输入-c -f -m或者输入-m,点击开始

 

3. 进行master数据库的恢复

a. 直接进入查询分析器,有个提示不要理会它

输入恢复语句进行数据库恢复:

RESTORE DATABASE master from disk='c:\具体的备份文件名'

 

b. 或者用这个,在命令提示符下输入,注意大小写

使用"windows身份验证"的,输入:isql /E

使用"sql server和windows身份验证"的,输入:isql /U"用户名" /P"密码"

然后在出现的提示符下输入(注意1>,2>是提示符):

1>RESTORE DATABASE master from disk='c:\具体的备份文件名'

2>GO

 

2. 还原数据库的具体步骤:

1. 恢复最近一次的完整备份

企业管理器--右键"数据库"--所有任务--还原数据库

--"还原为数据库库"中输入还原后的数据库名,设为:test

--还原选择"从设备"--选择设备--添加--添加你的备份文件

--确定,回到数据库还原的界面

--"还原备份集",选择"数据库--完全"

--选项--将"移至物理文件名"中的物理文件名修改为你的数据文件要存放的文件名

--如果要还原的数据库已经存在,选择"在现有数据库上强制还原"

--"恢复完成状态",选择"使数据库不再运行,但能还原其它事务日志"

--确定

 

--或用SQL语句:

RESTORE DATABASE 数据库名

FROM DISK = 'c:\你的完全备份文件名'

WITH NORECOVERY

 

 

2. 恢复完全备份后, 最近一次的差异备份(如果有的话)

企业管理器--右键"数据库"--所有任务--还原数据库

--"还原为数据库库"中选择数据库名:test

--还原选择"从设备"--选择设备--添加--添加你的备份文件

--确定,回到数据库还原的界面

--"还原备份集",选择"数据库--差异"

--"恢复完成状态",选择"使数据库不再运行,但能还原其它事务日志"

--确定

 

--或用SQL语句:

--或用SQL语句:

RESTORE DATABASE 数据库名

FROM DISK = 'c:\你的差异备份文件名'

WITH NORECOVERY

 

 

3. 按时间先后, 恢复差异备份后(如果没有差异备份,则是完全备份)的所有日志备份

企业管理器--右键"数据库"--所有任务--还原数据库

--"还原为数据库库"中选择数据库名:test

--还原选择"从设备"--选择设备--添加--添加你的备份文件

--确定,回到数据库还原的界面

--"还原备份集",选择"事务日志"

--"恢复完成状态"

   如果是恢复最后一个日志文件,选择"使数据库可以继续运行,但无法还原其它事务日志"

   否则选择"使数据库不再运行,但能还原其它事务日志"

--确定

 

--或用SQL语句:

RESTORE DATABASE 数据库名

FROM DISK = 'c:\你的日志文件名'

WITH RECOVERY

 

3. 解决孤立用户:

1. 查看某个数据库的孤立用户:

USE 库名

EXEC sp_change_users_login 'Report'

 

2. 自动修复某个孤立用户:

USE 库名

EXEC sp_change_users_login 'Auto_Fix', '孤立用户名', NULL, '密码' 

  --密码指用户对应的登录不存在时, 系统自动建立登录, 为登录分配的密码

 

时间: 2024-10-01 19:15:26

数据库系统崩溃后的一般处理步骤的相关文章

mssql数据库系统崩溃后的一般处理步骤与方法_MsSql

mssql数据库系统崩溃后的一般处理步骤  情况描述: SQL Server 2000崩溃,重新安装数据库. 有以下准备: 1, 三个系统库(master,msdb,model)的完全备份: 2  两个用户数据库(user01,user02)的备份(周日的完全备份+除周日外每天的差异备份): 三个系统数据库是早期备份的,之间没有更新过帐号信息,没有增减过作业等等. 两个用户数据库在上周日晚做过完全备份(user01.bak和user02.bak) 准备重新安装数据库,希望能一次性恢复到用户数据库

mssql数据库系统崩溃后的一般处理步骤与方法

mssql数据库系统崩溃后的一般处理步骤  情况描述: SQL Server 2000崩溃,重新安装数据库. 有以下准备: 1, 三个系统库(master,msdb,model)的完全备份: 2  两个用户数据库(user01,user02)的备份(周日的完全备份+除周日外每天的差异备份): 三个系统数据库是早期备份的,之间没有更新过帐号信息,没有增减过作业等等. 两个用户数据库在上周日晚做过完全备份(user01.bak和user02.bak) 准备重新安装数据库,希望能一次性恢复到用户数据库

SQL Server数据库崩溃后的恢复之法

任何数据库系统都无法避免崩溃的状况,即使你使用了Clustered,双机热备--仍然无法完全根除系统中的单点故障,何况对于大部分用户来说,无法承受这样昂贵的硬件投资.所以,在系统崩溃的时候,如何恢复原 有的宝贵数据就成为一个极其重要的问题了. 在恢复的时候,最理想的情况就是你的数据文件和日志文件都完好无损了,这样只需要sp_attach_db,把数据文件附加到新的数据库上即可,或者在停机的时候把所有数据文件(一定要有master等)都copy到原有路径下也行, 不过一般不推荐这样的做法,sp_a

如何使电脑IE浏览器崩溃后自动恢复之前打开的页面

  如何使电脑IE浏览器崩溃后自动恢复之前打开的页面           1.打开IE浏览器,从右上角打开Internet选项; 2.切换到"高级"选项卡; 3.在设置列表找到"浏览"--"启用自动崩溃恢复"选项,并勾选,然后点击确定,重启IE浏览器即可生效. 在电脑中按照上述方法进行设置后,如果再出现IE浏览器崩溃意外关闭的情况,重新打开浏览器后会提示是否恢复之前的网页,选择是即可打开.

服务自动重启-使用inno setup制作安装包,如何实现该软件的服务崩溃后会自动重启

问题描述 使用inno setup制作安装包,如何实现该软件的服务崩溃后会自动重启 如同windows的服务-->属性-->恢复功能 解决方案 调用schttps://technet.microsoft.com/en-us/library/cc742019(v=ws.10).aspx actions= {"""" | {[run/] | [restart/] | [reboot/]}[/...]Specifies one or more failure

应用-程序崩溃后,dump分析不到具体原因?

问题描述 程序崩溃后,dump分析不到具体原因? 程序崩溃了,也用windbg抓取了dump文件,但是使用windbg分析后发现找不到问题点. 我用的是c#编写的程序,source code和pdb文件不知道如何挂在windbg上去.请大侠帮忙看下. FAULTING_IP: System_Windows_Forms_ni+3329bb 000007fe`e83829bb 498b03 mov rax,qword ptr [r11] EXCEPTION_RECORD: fffffffffffff

c++-程序崩溃后产生的Dump为什么有时是空的,大小为0kb

问题描述 程序崩溃后产生的Dump为什么有时是空的,大小为0kb C++ 写的程序有设置SetUnhandledExceptionFilter,而且崩溃时有时也可产生dump文件,但为什么有时候却产生0kb大小的dump文件?求解!!! 解决方案 http://bbs.csdn.net/topics/390831906 历史上有人问过这个问题呢- 解决方案二: http://bbs.csdn.net/topics/390831906

如何在崩溃后重启Cinnamon

如何在崩溃后重启Cinnamon Cinnamon是一个提供了高级创新特性和传统用户体验的Linux桌面环境.桌面布局和Gnome 2相似.底层的技术与Gnome Shell相似.它的重点是让用户以熟悉的方式得到简单和舒适的桌面体验. 本篇中我们会展示一个快速的方法来重启Cinnamon而不用在崩溃后登出或者重启. 下图是Cinnamon桌面崩溃后,文本和图标从菜单和面板消失了. 要重启Cinnamon,按下Alt + F2 将会打开一个命令菜单,输入r并按下回车. Cinnamon应该会重新在

ps崩溃怎么防止 photoshop崩溃后恢复文件教程

photoshop崩溃怎么防止 方法一:清理你的电脑 Photoshop能否流畅运转,很大程度上取决于你的电脑有多大的可用空间.先检查一下你的硬盘空间,看看还剩多少可用空间.删除一些文件,或者将它们移动到另外的外接硬盘中.   方法二:限制你的工作量 你会同时打开多个工作窗口吗?当你不再会用到一些工作窗口时,你可以先关掉它们,以防它们拖慢PS的速度,甚至导致PS崩溃. 当然,如果你的作品中用了许多的图层,那这个方法同样适用.不少数码艺术家都习惯用许多甚至上百个图层来创作他们的作品.为了不让PS变