数据库为SQLSERVER2000,从生产库脱机备份了整个库的MDF文件和LDF文件,在另一台机器相同配置环境下恢复,结果部分表查询时报“因为数据移动,未能继续以 NOLOCK 方式扫描”的异常。 sql
出现该问题的表有一个定时导数据的脚本在后台执行,导数据过程当中脱机备份致使以上问题。 数据库
ALTER DATABASE [databasename] SET SINGLE_USER DBCC CHECKDB('[databasename]', REPAIR_ALLOW_DATA_LOSS) -- data will lost --or DBCC CHECKDB('[databasename]', REPAIR_REBUILD) -- data won't lost ALTER DATABASE [databasename] SET MULTI_USER
服务器: 消息 8909,级别 16,状态 1,行 2 表错误: 对象 ID -2131190133,索引 ID 1,页 ID (1:1384)。页首结构中的 PageId = (17180:275243556)。 服务器: 消息 8909,级别 16,状态 1,行 2 表错误: 对象 ID -1842666868,索引 ID 47782,页 ID (1:4408)。页首结构中的 PageId = (63829:1870280938)。 服务器: 消息 8909,级别 16,状态 1,行 2 表错误: 对象 ID -1840896588,索引 ID 57194,页 ID (1:1373)。页首结构中的 PageId = (32657:1452998133)。 服务器: 消息 8909,级别 16,状态 1,行 2 表错误: 对象 ID -1710263166,索引 ID 3616,页 ID (1:1379)。页首结构中的 PageId = (59655:117407752)。 ... CHECKDB 发现了 0 个分配错误和 1 个一致性错误(在表 '(Object ID -2131190133)' 中,该表的对象 ID 为 -2131190133)。 DBCC 语句的修复级别致使回避了此修复。 CHECKDB 发现了 0 个分配错误和 1 个一致性错误(在表 '(Object ID -1842666868)' 中,该表的对象 ID 为 -1842666868)。 DBCC 语句的修复级别致使回避了此修复。 CHECKDB 发现了 0 个分配错误和 1 个一致性错误(在表 '(Object ID -1840896588)' 中,该表的对象 ID 为 -1840896588)。 DBCC 语句的修复级别致使回避了此修复。 CHECKDB 发现了 0 个分配错误和 1 个一致性错误(在表 '(Object ID -1710263166)' 中,该表的对象 ID 为 -1710263166)。 DBCC 语句的修复级别致使回避了此修复。 ... 服务器: 消息 8905,级别 16,状态 1,行 2 扩展盘区 (1:1928)(属于数据库 ID 9)在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 服务器: 消息 8905,级别 16,状态 1,行 2 扩展盘区 (1:1936)(属于数据库 ID 9)在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 服务器: 消息 8905,级别 16,状态 1,行 2 扩展盘区 (1:1944)(属于数据库 ID 9)在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 服务器: 消息 8905,级别 16,状态 1,行 2 扩展盘区 (1:2048)(属于数据库 ID 9)在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 服务器: 消息 8905,级别 16,状态 1,行 2 扩展盘区 (1:2088)(属于数据库 ID 9)在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 服务器: 消息 8905,级别 16,状态 1,行 2 扩展盘区 (1:2112)(属于数据库 ID 9)在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 服务器: 消息 8905,级别 16,状态 1,行 2 扩展盘区 (1:2144)(属于数据库 ID 9)在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 服务器: 消息 8905,级别 16,状态 1,行 2 扩展盘区 (1:2160)(属于数据库 ID 9)在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 服务器: 消息 8905,级别 16,状态 1,行 2 扩展盘区 (1:2176)(属于数据库 ID 9)在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 服务器: 消息 8905,级别 16,状态 1,行 2 扩展盘区 (1:2200)(属于数据库 ID 9)在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 服务器: 消息 8905,级别 16,状态 1,行 2 扩展盘区 (1:2280)(属于数据库 ID 9)在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 服务器: 消息 8905,级别 16,状态 1,行 2 扩展盘区 (1:2296)(属于数据库 ID 9)在 GAM 中标记为已分配,但没有 SGAM 或 IAM 分配过该盘区。 服务器: 消息 8905,级别 16,状态 1,行 2 ... 对象 ID 1077578877: 在文本 ID 2110390272 中发现错误,该文本的全部者是由 RID = (1:303:16) News_ID = 1240 标识的数据记录。 服务器: 消息 8929,级别 16,状态 1,行 2 对象 ID 1077578877: 在文本 ID 2123431936 中发现错误,该文本的全部者是由 RID = (1:303:20) News_ID = 1244 标识的数据记录。 服务器: 消息 8929,级别 16,状态 1,行 2 对象 ID 1077578877: 在文本 ID 2123628544 中发现错误,该文本的全部者是由 RID = (1:303:21) News_ID = 1245 标识的数据记录。 服务器: 消息 8929,级别 16,状态 1,行 2 对象 ID 1077578877: 在文本 ID 2124414976 中发现错误,该文本的全部者是由 RID = (1:303:22) News_ID = 1248 标识的数据记录。 ... 对象 'xxx' 有 13124 行,这些行位于 605 页中。 CHECKDB 发现了 0 个分配错误和 54 个一致性错误(在表 'xxx' 中,该表的对象 ID 为 2133582639)。 CHECKDB 发现了 240 个分配错误和 736 个一致性错误(在数据库 'databasename' 中)。 DBCC 执行完毕。若是 DBCC 输出了错误信息,请与系统管理员联系。扩展:
DBCC CHECKDB 服务器 |
40-50 seconds 性能 |
DBCC CHECKDB with TABLOCK spa |
5 seconds code |
DBCC CHECKDB on snapshot database 对象 |
5 seconds 索引 |
DBCC CHECKTABLE Batch ci |
8-12 minutes it |
DBCC CHECKTABLE Batch with TABLOCK |
18 seconds |
DBCC CHECKTABLE Batch on Snapshot database |
20 seconds |