SQL数据库置疑重附加失败解决办法
使用财务软件或其他需要SQL数据库的时常会因为主机突然断电或非正常的强制关机造成软件使用不了,经查是数据库被置疑所致。一般分离后重新附加即可。但大部分会提示事务日志出错,分离后就不能重新附加了。那数据怎么办?
本文教你如何重新附加提示事务日志错误的数据库。
修复方法
- 01
打开SQL企业管理器 按序打开 ,开始--所有程序(或程序)--Microsoft SQL Server--企业管理器 打开后按序点+号展开直到数据库
- 02
右键显示置疑的数据库--所有任务--分离数据库。 弹出对话框点击确定。 注,先记住数据库名。分离有时候会提示分离失败,右键随便一个数据库--刷新,就可以看到已经没了。
- 03
找到该置疑数据库的源文件,剪切到其他文件夹黏贴。 注,一般是同名的两个文件,后缀为*.mdf和*.ldf。
- 04
返回企业管理器新建一个同名的数据库名 右键随便一个数据库--新建数据库 弹出对话框中名称输入数据库名 然后点击上方选项卡数据文件,点后面的位置下的省略号选择存放路径,并把文件名改成和置疑数据库源文件名一样,然后确定 再点击上门选项卡事务日志,一样操作后确定。
- 05
停止SQL服务 右键数据库上的服务器名--停止,弹出提示点是。
- 06
打开新建数据库所在路径,把之前备份的置疑数据库的源文件.MDF后缀的复制过来覆盖,删掉新建数据库的后缀LDF的源文件。
- 07
启动SQL 右键数据库的服务器名--启动。
- 08
设置数据库允许直接操作系统表 点击上方的工具--SQL查询分析器--输入下列语句 sp_configure 'allow updates',1 reconfigure with override 点击上方竖三角号执行(或按F5) 或右键选择数据库服务器--属性--服务器设置,将“允许对系统目录直接修改”打钩,确定。
- 09
设置要修复的数据库为紧急修复模式 删掉之前的语句,输入下列语句 update sysdatabases set status=32768 where name='数据库名' 注,数据库名记得改成你实际的。 点击上方竖三角号执行(或按F5)
- 10
重建数据库日志文件 删掉之前的语句(也可再前面语句前输入--),输入下列语句 DBCC TRACEON (3604) DBCC rebuild_log('数据库名','数据库路径\数据库名.ldf') 注,数据库名和日志文件按实际修改。 点击上方竖三角号执行(或按F5) 提示如图视为成功
- 11
验证数据库一致性(虽然可以省略但是不易建议跳过) 删掉之前的语句(也可再前面语句前输入--),输入下列语句 dbcc checkdb('数据库名') 注,数据库名按实际修改。 点击上方竖三角号执行(或按F5)
- 12
设置数据库为恢复正常状态 删掉之前的语句(也可再前面语句前输入--),输入下列语句 update sysdatabases set status=0 where name='数据库名' 注,数据库名按实际修改。 点击上方竖三角号执行(或按F5)
- 13
设置数据库‘允许直接操作系统表’取消 点击上方的工具--SQL查询分析器--输入下列语句 sp_configure 'allow updates',0 reconfigure with override 点击上方竖三角号执行(或按F5) 或右键选择数据库服务器--属性--服务器设置,将“允许对系统目录直接修改”打钩取消,确定。
- 14
重启SQL。