Sql server 如何在SQL Server中导致一致性错误?

Sql server 如何在SQL Server中导致一致性错误?,sql-server,Sql Server,我从客户那里得到的一个表的dbcc checkdb输出中有以下错误(更多非常类似的行): Msg 8964,第16级,状态1,第1行 表错误:对象ID 212503619,索引ID 1,分区ID 72057594046251008,分配单元ID 72057594048675840(输入LOB数据)。未引用第页(1:705),插槽0,文本ID 328867287793664的行外数据节点 CHECKDB在表“X”(对象ID 2126630619)中发现0个分配错误和49个一致性错误 此错误是在运行

我从客户那里得到的一个表的
dbcc checkdb
输出中有以下错误(更多非常类似的行):

Msg 8964,第16级,状态1,第1行
表错误:对象ID 212503619,索引ID 1,分区ID 72057594046251008,分配单元ID 72057594048675840(输入LOB数据)。未引用第页(1:705),插槽0,文本ID 328867287793664的行外数据节点

CHECKDB在表“X”(对象ID 2126630619)中发现0个分配错误和49个一致性错误

此错误是在运行软件升级时产生的(如果他从备份中恢复DB并再次运行升级,则同样的问题再次出现)

我的问题是-我怎么可能从我的应用程序中创建这种错误?我一直认为这种错误一定是由某些环境(HDD)问题引起的,但我在另一个环境的同一张表上看到了相同的问题。我尝试了和他一样的步骤,但没有成功


谢谢

没错,这可能是SQL Server中的一个严重错误。使用有文档记录且受支持的T-SQL不可能导致损坏。导致你需要的腐败

  • 硬件问题
  • 操作系统级文件系统问题(筛选器驱动程序,…)
  • 未记录的命令,如DBCC WRITEPAGE
  • 严重的虫子
  • 您可以单步完成升级脚本吗?如果没有,请尝试使用SQL事件探查器跟踪它。查找首先导致损坏出现的语句

    下面是一个更简单、噪音更小的命令:

    DBCC CHECKDB([AdventureWorks2012]) WITH NO_INFOMSGS, ALL_ERRORMSGS
    

    如果在升级之前在数据库上运行
    dbcc checkdb
    ,会发生什么?@chuex,没有任何错误。我已经仔细检查过了。对不起,您是想在您的环境中复制问题以进行调试(检索原因),还是只是想解决问题?@FrancescoDeLisi,我正在尝试复制以查找可能的原因。删除customer的错误很简单,它只有很少的行,我可以轻松地删除它们并重新插入。实际上,要修复它,您应该使用带有修复\u允许\u数据\u丢失的
    DBCC CheckDB()。一个可能的原因是:您的DB备份的行数少于实际行数(简单地说,它较旧),因此会出现
    INDEX
    问题。尝试备份最后一个数据库,升级应用程序并还原。我认为这是一个DB问题。