首页 > 代码库 > SQLserver2008 当前命令发生了严重错误。应放弃任何可能产生的结果

SQLserver2008 当前命令发生了严重错误。应放弃任何可能产生的结果

 

开发同事说,某存储过程执行到这个PM_X表的时候,就会抛出“当前命令发生了严重错误。应放弃任何可能产生的结果”的错误;

 

登陆sqlserver数据库,先大概看了下这个表的行数和大小:

exec spaceused ‘PM_X‘,才几十万行,几百兆,不大,真心不大。

 

然后select * into #nb from PM_X,也直接报错,怀疑此表结构出现了错误,导致表无法全表扫描,因此需要修复它。

 

因为此系统数据库狠重要,而且其关联的业务很复杂,所以通过更改此服务器的IP 来限制与其联系的业务数据库联系,然后执行以下脚本:

 

use PM
declare @dbname varchar(255)
set @dbname=‘PM‘
exec sp_dboption @dbname,‘single user‘,‘true‘
dbcc checktable(‘PM_X‘,REPAIR_ALLOW_DATA_LOSS)
exec sp_dboption @dbname,‘single user‘,‘false‘
 
 
然后,等待片刻,执行成功后,再select * from PM_X时,无再报错,开发的存储过程也可以正常跑了。
猜测,这种表出现错误,感觉像是oracle的逻辑坏块,但是发现sqlserver 没有这种记载坏块的视图。
 
 
在运维界,有两种操作叫“大招”——重启服务器;更换IP
 
 
关于dbcc checktable参数涵义,请参见官方文档:https://msdn.microsoft.com/zh-cn/library/ms174338.aspx。
 
 
 

SQLserver2008 当前命令发生了严重错误。应放弃任何可能产生的结果