首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于sql server的一个奇怪有关问题

2012-04-09 
关于sql server的一个奇怪问题数据库中的fid数据类型为bigint当我执行如下语句的时候:selectfid from bg00

关于sql server的一个奇怪问题
数据库中的fid数据类型为bigint

当我执行如下语句的时候:
select fid from bg000084.dbo.kankong where fid=29127835412 正常
select fid from bg000084.dbo.kankong where fid=29127835412 正常

select fid from bg000084.dbo.kankong where fid=39127835412 错误
select fid from bg000084.dbo.kankong where fid=49127835412 错误

错误的信息如下:

消息 605,级别 21,状态 3,第 1 行
尝试在数据库 87 中提取逻辑页 (1:3152) 失败。该逻辑页属于分配单元 281474980642816,而非 72057594047889408。

我一开始认为是由于数据太小,但是看了下bigint是64位的,这个数据远远小于bigint的范围。真的不知道是什么原因造成了。所以这里来求助大家!请问各位大侠这可能是什么原因造成的呢?

[解决办法]
数据库或者表已损坏,需要修复
[解决办法]
参考http://www.cnblogs.com/yank/archive/2009/05/23/1487779.html
这类错误的官方解释
[解决办法]
有可能你的表部分损坏了。使用 DBCC CHECKTABLE 修复一下表(建议先备份)
[解决办法]
数据库损坏了 


http://www.cnblogs.com/yank/archive/2009/05.html
[解决办法]
数据库损坏了 


http://www.cnblogs.com/yank/archive/2009/05.html
[解决办法]

SQL code
先运行DBCC CHECKALLOC('mydb') --检查你的数据库的磁盘空间分配是否一致,找到分配不一致的表然后将数据库该为单用户模式:ALTER DATABASE [mydb] SET  SINGLE_USER WITH ROLLBACK IMMEDIATE接着执行DBCC CHECKTABLE('mytable')--修复你的表最后将数据库改为多用户模式:ALTER DATABASE [mydb] SET  MULTI_USER WITH ROLLBACK IMMEDIATE 

热点排行