msql 2000 使用DBCC CHECK DB 得出错误,槽引用错误

转自:http://www.cnblogs.com/firstrose/p/4256257.html

某个SQL2000的数据库,在通过备份/还原的方法升级到2005时发生错误:

查找解决方法未果

正好最近在看 @一线码农 的《sql server之旅》,就想自己试试解决这个问题

首先运行dbcc checkdb命令,结果如下:

仔细查看出错信息,里面反复提到一个“对象 ID 2”。另外,信息里还提到“该文本的所有者是由 RID = (1:152:9) id = 213575799 and indid = 37 标识的数据记录”。联想到最近看的《sql server之旅》,觉得第二段信息可能是在说某个数据表。于是select之:

果然都有对应的表!

分别select这两个表,发现问题出在sysindexes上:

这和上面的出错信息也是一致的。

立刻尝试用dbcc checkdb和dbcc checktable修复,但是却得到以下回应:

DBCC 语句的修复级别导致回避了此修复

至此尝试进入了死胡同……

再次查看,发现出错信息里有2条比较有意思。一条说某节点未被引用,一条说没发现另外一个节点。两个节点的槽号和文本ID都是一样,只有页不同。手贱看了看页号,发现342=0x156,4194646=0x400156,只差一个字节!

灵机一动,这个错误肯定是页号因为某种原因错了!

突然想起,在DBCC命令那篇里面提到DBCC IND命令,干脆死马当活马医:

但是看不出什么鬼,很明显我没人家那水平……

干脆Page一下:

找到slot9的偏移,看看有没有0x400156:

好像撞大运了……

参考《第六站》,脱机,打开mdf,找到Slot9对应偏移8192*152+0x860=0x130860,把那个40改成00

联机,dbcc checkdb,没有查出错误!

再次尝试在SQL2005中恢复,成功!

附加收获:SQL2000貌似没有checksum,否则我改mdf应该会报错的。

原文地址:https://www.cnblogs.com/gered/p/9444508.html

时间: 2024-11-08 21:29:07

msql 2000 使用DBCC CHECK DB 得出错误,槽引用错误的相关文章

[Troubleshooting]-Exchange 2013 OWA & ECP 发生错误 500意外错误

[摘要] 最近在Exchange 2013环境中,遇到OWA/ECP无法访问的问题:用户是可以正常通过Outlook 收发邮件,只有当访问OWA/ECP页面后,输入账户验证信息后,提示"出现意外错误,无法处理你的请求":    比较神奇的时,当前环境是总部7台Exchange 前端服务器,14台Exchange 后端服务器,分部2台全角色部署:几十台邮件服务器,开始时是总部一台后端服务器上的数据库的用户,在排错的过程中又出现了一台后端服务器上的用户无法正常使用OWA/ECP:此篇文章将

php curl常见错误:SSL错误、bool(false)

症状:php curl调用https出错 排查方法:在命令行中使用curl调用试试. 原因:服务器所在机房无法验证SSL证书. 解决办法:跳过SSL证书检查. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 症状:php curl调用curl_exec返回bool(false),命令行curl调用正常. 排查方法: var_dump(curl_error($ch)); 返回: string(23) "Empty reply from server

android导入项目出现style错误,menu错误

android导入项目出现style错误,menu错误 style //查看 res/values/styles.xml 下的报错点. <style name="AppBaseTheme" parent="Theme.AppCompat.Light"> //把这个改成 <style name="AppBaseTheme" parent="android:Theme.Light"> //路径: res/v

命名空间 system.windows 中不存在类型或命名空间名称 forms (是否缺少程序集引用 )错误

C#项目: 添加“using System.Windows.Forms;”之后提示“命名空间 system.windows 中不存在类型或命名空间名称 forms (是否缺少程序集引用 )”错误, 查询知缺少System.Windows.Forms程序集,在VS2015中添加次程序集,步骤为: 项目>添加引用 在图中右上角搜索框中搜索“System.Windows.Forms”,出现如下选项: 勾选“System.Windows.Forms”项,确定,即可.

SQL Server数据库附加失败:错误5120和错误950

再次敲机房,想参考以前的物理模型,结果在附加数据库这一环节出现了点问题,下面总结一下. 1.附加数据库失败,错误5120 对于这种错误,我在网上搜集了一下,主要有以下几种解决办法: 方法一:将要附加的文件拷贝到SQL Server默认的Data目录,即C:\ProgramFiles\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA,此时附加就会成功. 方法二:在登陆验证时,选择"Windows身份验证",而不是"SQL S

tomcat启动一闪就退出的错误无法查看错误信息的解决办法

tomcat 有错误时 启动startup.bat一闪就退出的解决办法 打开 startup.bat 文件 最后 把start 改为run tomcat启动一闪就退出的错误无法查看错误信息的解决办法,布布扣,bubuko.com

LabVIEW的错误簇以及错误处理函数

我们可以在LabVIEW的Modern>>Array, Matrix & Cluster控件面板找到表示错误簇数据类型的错误输入(Error In)以及错误输出(Error Out)两个错误簇控件.其实在很多LabVIEW的内置函数以及VI中,都包括了错误输入以及错误输出这两个错误簇类型的输入与输出参数.错误簇是LabVIEW中的一个特殊的数据类型,该簇是由一个表示状态的布尔变量(status).一个表示错误代码的32位整型变量(code)以及一个说明错误原因的字符串变量(source

VS2012编译错误信息,错误列表却没显示

今天在写代码的时候,发现VS有编译错误,在错误列表里面却没有显示错误信息,百思不得其解. 后来终于发现,错误列表弄了个筛选,所以就看不到错误信息了,晕死.有遇到该问题的,可以参考下. VS2012编译错误信息,错误列表却没显示

错误信息添加错误前缀标志导致搜索无效

场景描述:为了实现快速的定位到错误的有效性,添加一些前缀,然后使用\t作为前缀 导致sourceinsight无法查找错误 解决的方案: Find对话框中,不要选择Whole Word Only,解决问题. 错误信息添加错误前缀标志导致搜索无效