我在客户的dbcc checkdb
输出中遇到一个表(更多非常相似的行)的错误:
Msg 8964,Level 16,State 1,Line 1
表错误:对象ID 212503619,索引ID 1,分区ID 72057594046251008,分配单元ID 72057594048675840(类型LOB数据)。页面(1:705),插槽0,文本ID 328867287793664的行外数据节点未被引用。CHECKDB在表'X'中找到0个分配错误和49个一致性错误(对象ID 2126630619)。
在运行我们软件的升级时创建了此错误(如果他从备份恢复数据库并再次运行升级,则会再次出现相同的问题。)
我的问题是 - 我怎么可能从我的应用程序中创建这种错误?我一直认为这种错误必然是由某些环境(HDD)问题引起的,但我在另一个环境中的同一个表上看到了同样的问题。我尝试了与他相同的步骤,但没有成功。
谢谢!
答案 0 :(得分:2)
你是对的,这可能是SQL Server中的一个严重错误。使用记录和支持的T-SQL不可能导致损坏。要引起腐败,你需要
您可以单步执行升级脚本吗?如果没有,请尝试使用SQL事件探查器进行跟踪。找到首先出现腐败的陈述。
这是一个更简单,噪音更小的命令:
DBCC CHECKDB([AdventureWorks2012]) WITH NO_INFOMSGS, ALL_ERRORMSGS