2019独角兽企业重金招聘Python工程师标准>>>

场景:

数据库为SQLSERVER2000,从生产库脱机备份了整个库的MDF文件和LDF文件,在另外一台机器相同配置环境下恢复,结果部分表查询时报“由于数据移动,未能继续以 NOLOCK 方式扫描”的异常。

分析:

出现该问题的表有一个定时导数据的脚本在后台执行,导数据过程中脱机备份导致以上问题。

解决方案:

ALTER DATABASE [databasename] SET SINGLE_USERDBCC CHECKDB('[databasename]', REPAIR_ALLOW_DATA_LOSS) -- data will lost--or DBCC CHECKDB('[databasename]', REPAIR_REBUILD) -- data won't lostALTER 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 输出了错误信息,请与系统管理员联系。

扩展:

  1. 如果我们知道某个表有问题,可直接使用CHECKTABLE缩小检查范围。
  2. 通常CHECKDB命令会随着记录数的多少消耗很长时间,这里我们可以通过一些技巧提高性能,见下表:

DBCC CHECKDB

40-50 seconds

DBCC CHECKDB with TABLOCK

5 seconds

DBCC CHECKDB on snapshot database

5 seconds

DBCC CHECKTABLE Batch

8-12 minutes

DBCC CHECKTABLE Batch with TABLOCK

18 seconds

DBCC CHECKTABLE Batch on Snapshot database

20 seconds

转载于:https://my.oschina.net/u/699015/blog/150350

【SQLSERVER 2000】由于数据移动,未能继续以 NOLOCK 方式扫描相关推荐

  1. 修复发生“由于数据移动,未能继续以 NOLOCK 方式扫描”错误的数据库

    最近在系统运行中发现了一个错误,错误信息如下: 错误信息:查询A201412C20568单证信息错误 ---> System.Data.OleDb.OleDbException: 由于数据移动, ...

  2. 图解sqlserver 2000 还原数据库的基本操作

    图解sqlserver 2000 还原数据库的基本操作,是我在测试单位服务器上的数据库,恢复数据的完整性所进行的简单测试.由于时间紧张,我不直接在博文里写出来了,有好多图不大方便插入,所以有爱好这个知 ...

  3. java 连接 sqlserver 2000

    20190327 09:30最新更新: 同事竟然发现有Maven官方源的3.0版本也能运行,所以跳过 1.2 步骤,直接用Maven引入依赖就行 <dependency><group ...

  4. Sqlserver 2000 迷你、便携企业管理器(10M),支持Dts编辑

    基于 Sqlserver 2000 企业版 最新的 V8.0.2282 制作 包含常用的客户端工具:查询分析器.事件探查器.bcp工具: 支持企业管理器的各种向导 支持Dts包制作 支持部署在非系统默 ...

  5. springboot+mybatis+sqlserver导出数据库数据并实现下载到excel

    springboot+mybatis+sqlserver导出数据库数据并实现下载到excel 1.准备工作 1.1 下载一个springboot框架demo 1.2 配置maven 1.3 引入需要的 ...

  6. 在SqlServer 2008中将数据导成脚本

    当我们想将数据库搬到另一个环境中运行时,如果数据库的版本一样我们可以直接选择附加的方式,而如果实验环境中的数据库版本比当前数据库低,就无法附加了.这时要向将数据全部导过去就需要使用脚本的方式,像Sql ...

  7. 我安装Microsoft SQLServer 2000时出现问题

    我安装Microsoft SQLServer 2000时出现问题 悬赏分:0 - 提问时间2006-8-31 19:54 问题为何被关闭 安装时,弹出一个窗口,提示"a previous p ...

  8. SQLServer 批量插入数据的两种方法

    SQLServer 批量插入数据的两种方法- 发布:dxy 字体:[增加 减小] 类型:转载 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用In ...

  9. SQLServer 2000 126错误的解决方法

    问题描述:今天打开一台服务器准备恢复SQLServer 2000的数据库,发现登录企业管理器时总是报:错误126:常规错误,然后在SQLServer组下面什么内容也没有,无法进行任何操作: 解决方法: ...

最新文章

  1. mysql isreg_`Innodb` MySQL中如何优雅的删除大表跑路
  2. Servlet初始化与异步支持
  3. CentOS7安装JDK1.8简单体验(java开发必备)
  4. 解决:Unexpected token (START_OBJECT), expected START_ARRAY: need JSON Array to contain As.WRAPPER_ARRA
  5. 详解数据科学与数理统计的基本概念
  6. 942.ava.com_如何使用Ava.js测试Node.js应用程序
  7. ES6学习笔记04:Set与Map
  8. 关于读取配置文件的一个小笔记
  9. Python:运营自媒体,如何修改图片的MD5值
  10. CSS 函数摘抄笔记1207
  11. 中国象棋人工智能实现
  12. 周六研易01:深入研究甲木选用法
  13. 昆仑ONLINE外挂脚本--基于Seraph
  14. centos8安装失败 Linux dd,在RHEL 8/CentOS 8上安装Telegraf的方法
  15. 这款免费开源的数据库工具,支持所有主流数据库!
  16. AD9851调试过程----相位设置、频率计算、控制字设置
  17. 有了LIGO,引力波不仅可以被探测,还可以被发射!
  18. other, the other, others, the others与another的用法区别
  19. 数据湖之Hudi基础:核心原理
  20. 电驴大全为什么下载不了的原因,以及其他下载资源的网站

热门文章

  1. Anyka云平台调用api
  2. [附源码]JAVA+ssm计算机毕业设计餐饮管理系统(程序+Lw)
  3. java中base64编码加密和android中base64编码加密不一样?base64编码解析错误?
  4. 离职、辞职、辞退、劳动纠纷应该怎么办?(附劳动法)
  5. html母亲节主题网页源码jd
  6. 检查计算机无法更新,Win7提示Windows Update当前无法检查更新,因为未运行服务解决方法...
  7. 一个 将一个无效参数传递给了将无效参数视为严重错误的函数 及写入位置时发生访问冲突的问题的解决
  8. Spark核心开发者:性能超Hadoop百倍,算法实现仅有其1/10或1/100
  9. 企业邮箱登录入口,企业邮箱在哪登录?邮箱ssl安全吗?
  10. 工程测量测绘乙级按照标准办理