为什么处理好置疑后只能查询到部分数据?
例如:整体数据为2000.1.1--2004.12.12修复后,只能查询2000.1.1--2004.10.10
还原数据库时发生错误,错误提示为3242.如何处理?
将这个文件的逻辑地址,更改为你的数据库地址.
逻辑地址里面存的是备份前原数据库的地址.而备份后还原的数据库,其文件却存在另外的位置了,所以要调整其逻辑地址,为现有数据库文件地址及文件名.方可正确还原.(如果不存在版本问题的话,应该可以解决).
数据库置疑的问题,正好我前几天刚解决了下,方法也是从网络上找的,贴出来给您借鉴下。
恢复步骤:
--a.将smlog_log.ldf文件备份到其它目录下;
--b.将源目录下的smlog_log.ldf文件改名为smlog_log_bak.ldf;
--c.执行以下语句修改数据库的状态:
use Master
go
update sysdatabases set status=32768 where name='数据库名称' --修改状态,設為緊急狀態
go
shutdown with nowait --停止数据库服务器
go
--d.退出SQL并在(COMMAND)命令行模式中通过下面的代码重新启动SQL:
sqlservr -c -T3608 -T4022 --安全模式启动SQL SERVER
--e.在查询分析器中执行以下语句来查看刚刚修改过状态的数据库状态:
select Name,Status from sysdatabases where Name='数据库名稱'
--f.执行以下代码新建日志文件:
dbcc traceon(3604)--跟踪
dbcc rebuild_log('数据库名称','日志文件全路徑') --文件名要有全路径和扩展名
--dbcc rebuild_log('prs_msc','d:\mscsql\mssql\data\prs_msc_log.ldf
--g.将数据库置回正常状态:
update sysdatabases set status=0 where name='数据库名称'
--h.重新启动数据库后执行以下语句检查数据库:
DBCC CHECKDB --如果执行完有错误用以下语句修复
--i.要修复数据库必需将数据库改为单用户模式:
Exce sp_dboption '数据库名称','single user','true'---('false'恢复多用户)
--j.执行以下语句修复数据库:
DBCC CHECKDB('数据库名称',REPAIR_ALLOW_DATA_LOSS)
REPAIR_ALLOW_DATA_LOSS:是比较高级的修复方式
REPAIR_FAST:是简单快速的修复方式