數據庫爲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 |