在企业管理器中打开表报灾难性故障,在查询分析器里就正常。

时间:2021-04-08 12:39:32
一开始做了如下的操作。
一台旧电脑,使用的是NT SERVER 4.0+SQL SERVER  7.0,一台新电脑,装的是WIN2000 SERVER+SQL SERVER 2000,现在要把旧电脑上数据库的数据导到新电脑上去。
先在SQL 7.0中使用完全备份,然后将备份文件拷贝到新电脑上,最后使用SQL 2000的从设备强制还原,将数据库重建了起来。

现在的状况:
在企业管理器中选择表,再打开任意表,SQL SERVER都会提示“灾难性故障”,表打不开;也有提示“没有注册类别”,但极少。
提示后点击“帮助”按钮,提示“ODBC错误(OS),生成了ODBC错误,可能删除了与某个外键值相关的记录或者违反了check约束。”
在查询分析器里使用SQL语句查询或者在对象浏览器中打开表,都是好的。

请问这是怎么回事,能否解决?
现在运行程序感觉速度很慢,而且似乎有些INSERT操作也不成功。

8 个解决方案

#1


没有碰到过类似情况
尝试一下安装SQL Server SP3
SQL Server 2000 Service Pack 3a
http://download.microsoft.com/download/d/d/e/dde427eb-0296-4eac-a47c-d11a66b03816/chs_sql2ksp3.exe

#2


其他数据库打开是否正常?
  如果不正常,估计是你的SQL系统文件被破坏之类,建议重新安装SQL
  如果是正常的,那问题应该是你的数据库有问题,再纷纭检查
    打开其他表是否正常?
      如果不正常,说明问题出在你的数据库上,用下面的语句检查一下,看看有没有错误的结果:
      dbcc checkdb('你的库名')
      如果正常,说明问题出在你的表上,用下面的语句检查一下表,看看错误信息是什么?
      dbcc checktable('表名')
   

#3


--你也可以直接用下面的语句,检查/修复数据库/并整理索引碎片(需要比较长的时间,请在系统空闲时进行此工作)

USE MASTER
GO

sp_dboption '你的数据库名', 'single user', 'true'
Go

DBCC CHECKDB('你的数据库名', REPAIR_ALLOW_DATA_LOSS) 
Go

USE 你的数据库名
go

exec sp_msforeachtable 'DBCC CHECKTABLE(''?'',REPAIR_ALLOW_DATA_LOSS)'
exec sp_msforeachtable 'DBCC DBREINDEX(''?'')'
go

sp_dboption '你的数据库名', 'single user', 'false'
Go

#4


没见过这样的事。我也想知道原因

#5


碰到过,应该是master数据库有问题
本身数据库可能也有问题,dbcc checkdb一下

#6


另外找了一个版本的SQL SERVER 2000,还是不行。:(

#7


做过我说的测试了吗? 结果怎么样?

#8


没做过,人家懒得再弄了,我也没办法,唉。
现在不影响到程序的运行,人家也不肯弄了。

#1


没有碰到过类似情况
尝试一下安装SQL Server SP3
SQL Server 2000 Service Pack 3a
http://download.microsoft.com/download/d/d/e/dde427eb-0296-4eac-a47c-d11a66b03816/chs_sql2ksp3.exe

#2


其他数据库打开是否正常?
  如果不正常,估计是你的SQL系统文件被破坏之类,建议重新安装SQL
  如果是正常的,那问题应该是你的数据库有问题,再纷纭检查
    打开其他表是否正常?
      如果不正常,说明问题出在你的数据库上,用下面的语句检查一下,看看有没有错误的结果:
      dbcc checkdb('你的库名')
      如果正常,说明问题出在你的表上,用下面的语句检查一下表,看看错误信息是什么?
      dbcc checktable('表名')
   

#3


--你也可以直接用下面的语句,检查/修复数据库/并整理索引碎片(需要比较长的时间,请在系统空闲时进行此工作)

USE MASTER
GO

sp_dboption '你的数据库名', 'single user', 'true'
Go

DBCC CHECKDB('你的数据库名', REPAIR_ALLOW_DATA_LOSS) 
Go

USE 你的数据库名
go

exec sp_msforeachtable 'DBCC CHECKTABLE(''?'',REPAIR_ALLOW_DATA_LOSS)'
exec sp_msforeachtable 'DBCC DBREINDEX(''?'')'
go

sp_dboption '你的数据库名', 'single user', 'false'
Go

#4


没见过这样的事。我也想知道原因

#5


碰到过,应该是master数据库有问题
本身数据库可能也有问题,dbcc checkdb一下

#6


另外找了一个版本的SQL SERVER 2000,还是不行。:(

#7


做过我说的测试了吗? 结果怎么样?

#8


没做过,人家懒得再弄了,我也没办法,唉。
现在不影响到程序的运行,人家也不肯弄了。