Sql server 数据库中的列已损坏

Sql server 数据库中的列已损坏,sql-server,corruption,Sql Server,Corruption,我有一个SQL Server数据库。其中一个表有一个列,由于缺少更好的单词,该列已损坏。我可以选择*或者甚至选择特定的列,它工作得很好。我可以在所有其他列上执行count、order by和group by等功能,没有问题。但如果我尝试在这一列上执行其中一个函数,它会出错并显示以下消息:Error:(状态:S1000,本机代码:E28) 此外,我还使用winsql连接到数据库 以前有人见过这种行为吗 其他信息: 从tablename中选择colname 很好 按colname从tablename

我有一个SQL Server数据库。其中一个表有一个列,由于缺少更好的单词,该列已损坏。我可以选择*或者甚至选择特定的列,它工作得很好。我可以在所有其他列上执行count、order by和group by等功能,没有问题。但如果我尝试在这一列上执行其中一个函数,它会出错并显示以下消息:Error:(状态:S1000,本机代码:E28)

此外,我还使用winsql连接到数据库

以前有人见过这种行为吗

其他信息:

从tablename中选择colname

很好

按colname从tablename顺序中选择colname


产生错误

请尝试重建索引。我也有类似的问题,并修复了它。在另一种情况下,重建索引不起作用,因此我必须恢复夜间备份。谢天谢地,我们为开发数据库进行了夜间备份。

如果SQL数据库报告损坏/这确实是损坏-开始非常小心。损坏可能开始以823/824和其他高严重性错误表现出来。保持冷静,运行DBCC CheckDB-找出损坏的程度。不要分离它或开始执行随机操作

在继续之前,您应该对事务日志进行日志备份,如果您被迫恢复,您可能需要它。我可能会选择只复印一份

CheckDB可能需要一些时间,但让它完成,看看报告了多少损坏,以及报告了哪些对象的损坏

NC索引上的损坏可以通过索引重建轻松解决,而带有破损页面的损坏将更加困难

如果CheckDB拒绝完成并且错误本身就存在,那么您就有了一个真正的问题,并且将导出您可以从备份中恢复的数据

保罗·s·兰德尔的博客是阅读腐败和发现/修复/游戏结束时的最佳场所之一


这仅在您真正关注的是损坏而不是一条不可靠的SQL时适用。

是否将“按列名顺序从表名中选择*视为不可靠的SQL”算作不可靠的SQL?不应该算作不可靠的SQL,但请通过SQL mgmt studio运行它,以确保在服务器上执行之前没有任何东西干扰它。如果失败了,请记下错误消息并开始小心操作。这似乎是一个服务器故障问题,但我不愿意迁移它,因为它也与编程有关。您可以在那里(serverfault.com)询问SF是否有人可以帮助您。如果你在SF上得到答案,请在这里给出答案。