网页编程 - 数据库无法重新生成日志
SQL Server 附加数据库时报1813错误的解决方案 无法打开新数据库 'ASR'。CREATE DATABASE 中止。 文件激活失败。物理文件名称'E:\SqlServer\MSSQL\Data\ASR_log.LDF'可能不正确。 无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。如果事务日志文件被手动删除或者由于硬件或环境问题而丢失,则可能出现此错误。 (Microsoft SQL Server,错误: 1813) 解决方案: 1、新建一个同名数据库。 2、停止数据库服务,覆盖新建的数据库主文件(小技巧:最好放在同一个磁盘里面,把新建的数据库主文件删掉或移开,再把要恢复的数据库主文件剪切过去,这样就可以节省时间。) 3、启动数据库服务,数据库变为置疑或可疑状态。然后在查询分析器中运行: alter database 无日志文件的数据库名称 set emergency 设置为紧急状态。 4、再运行: alter database 无日志文件的数据库名称 set single_user 或者: Sp_dboption '无日志文件的数据库名称', 'single user', 'true' 设置为单用户模式。 5、检查并重建日志文件,运行: dbcc checkdb('无日志文件的数据库名称',REPAIR_ALLOW_DATA_LOSS) 这个时间比较长。耐心等待!如果有错误提示,再运行: dbcc checkdb('无日志文件的数据库名称',REPAIR_REBUILD) 进行修复。如果没有错误,可以跳过。 6、恢复成多用户模式 alter database 无日志文件的数据库名称 set multi_user 或者: Sp_dboption '无日志文件的数据库名称', 'single user', 'false' 刷新数据库,你就可以看到已经修复好的数据库了。 —————————————————————————————— 停掉sqlserver 服务,将需要附件的mdf文件替换掉创建数据生成的mdf,删除掉对应的ldf文件 再启动sqlserver 服务 执行下面的脚本 脚本一: ALTER DATABASE HunLianJiaoYou SET EMERGENCY ALTER DATABASE HunLianJiaoYou SET SINGLE_USER ALTER DATABASE HunLianJiaoYou REBUILD LOG ON (NAME=HunLianJiaoYou_log, FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\HunLianJiaoYou_log.ldf') 可能有警告“警告: 数据库 'HunLianJiaoYou' 的日志已重新生成。已失去事务的一致性。RESTORE 链已断开,服务器不再有以前的日志文件的上下文,因此您需要了解它们的内容。应运行 DBCC CHECKDB 验证物理一致性。数据库已置于 dbo-only 模式。在准备使数据库可用时,需要重置数据库选项,并删除所有多余的日志文件。” 再重启动数据库服务 再执行下面的脚本 脚本二: ALTER DATABASE HunLianJiaoYou SET MULTI_USER ALTER DATABASE HunLianJiaoYou SET ONLINE 再重新启动数据库服务 完事! PS: 在尝试的过程中执行完脚本一 就执行脚本二, 就会抛出异常:无法打开数据库 'HunLianJiaoYou' 版本 611。请将该数据库升级为最新版本。 后来发现只需要行完脚本一,重启服务,再执行脚本二就没有问题了,就不会出现脚本兼容性的问题 --DBCC CHECKDB(HunLianJiaoYou1, REPAIR_ALLOW_DATA_LOSS) --数据库是紧急模式 执行下面的语句ALTER DATABASE HunLianJiaoYou SET ONLINE,恢复正常模式 ----------------------------------- USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE GO UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名' Go sp_dboption '置疑的数据库名', 'single user', 'true' Go DBCC CHECKDB('置疑的数据库名') Go update sysdatabases set status =28 where name='置疑的数据库名' Go sp_configure 'allow updates', 0 reconfigure with override Go sp_dboption '置疑的数据库名', 'single user', 'false' Go 执行后数据库本身仍然有问题,依旧显示“质疑”。此时新建一个新的数据库,运行DTS导出向导,把有问题的数据库中的数据导入到新的数据库中,打开新的数据库,数据全部找回!
本站
说明
网页版
站长
简介
微博
日记
照片
同学
资料
文章
电脑
编程
维护
链接
功能
电话
短信
邮件
登录