问题原因:原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。如果事务日志文件被手动删除或者由于硬件或环境问题而丢失,则可能出现此错误。
处理办法:
一、把分离之前的日志文件也复制过来一齐附加嘛
从错误提示看, 应该是你的日志文件中还包括有用的数据, 这些数据还没有正确写回数据文件, 导致附加失败.
二、这种情况最好能找回之前的日志文件, 如果找不到, 应急的方法是新建一个数据库, 将数据库设置为 offline, 然后用附加失败的数据文件替换掉新建库的数据文件, 然后将数据库设置为应急恢复模式, 这样一般就能读数据了
ALTER DATABASE DB_name SET EMERGENCY
数据库可以读之后, 你可以尝试再将其设置为 ONLINE 模式, 如果能成功, 那再 DBCC CHECKDB 一次, 确认没有问题
如果无法ONLINE, 那么你大概就只好新建库, 然后把应急模式的库的数据导到新建的库了
如果无法ONLINE, 那么你大概就只好新建库, 然后把应急模式的库的数据导到新建的库了
特别说明:应该使用压缩(shrinking)的办法来处理。
使用SSMS数据导入或者复制
使用数据库 导出数据-> 选择相应的表 导入导出向导,在“选择源表和源视图” 页,在导入导出的表打勾之后点击编辑映像,选择“启用标识列插入”即可
如果目标数据库表有约束,可以先禁用约束
alter table t1 check constraint all
.....其他表
然后再启用
alter table t1 nocheck constraint all
...其他表