DBCC--CHECKDB--使用快照还是表锁】的更多相关文章

在SQL SERVER 2005及后续版本中, DBCC CHECKDB运行时不对数据表加排他锁,而使用内部数据库快照来保持数据一致性,内部数据库快照本质是sparse Filestream,使用Sparse file+COPY_ON_WRITE技术. 如果DBCC CHECKDB使用WITH TABLOCK,将不再使用内部数据库快照,而是对表加排他锁来防止数据表被修改,这样会导致数据库无法访问. WITH TABLOCK阻塞了用户访问的同时,也大大提高了DBCC CHECKDB的执行速度(数十…
如何在大型的并且有表分区的数据库中进行DBCC CHECKDB操作 其实这个问题已经在<SQLSERVER企业级平台管理实践>里徐老师已经讲过了,不过我想用自己的语言再讲详细一些 笔记链接:笔记19-徐 如何在超大型数据库上运行DBCC CHECKDB 先来看一下表分区的概念图 很多时候你或者因为性能问题而使用表分区技术,将一些数据放到不同的分区,而这些数据实际上是被逻辑的放到不同的文件组里 大家知道:不管是索引还是数据,文件组都是这些索引和数据存放的最小逻辑单位 文件组是文件的命名集合,用于…
MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令.  1. DBCC CHECKDB  重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误.   use master declare @databasename varchar(255) set @databasename='需要修复的数据库实体的名称' exec sp_dboption @database…
方法 1. 在运行dbcc checkdb前对数据库进行快照(事务是一致的),dbcc 对快照进行检测,dbcc完成后删除快照. 做快照的目的是为了不要让dbcc 申请太多的锁,从这里可以看出dbcc 可以在多用户模式下进. 方法 2. dbcc还可通知多线程技术,为运行加速.这样做的副作用就是,在这个时间段里正常的连接可能拿不到足够的资源. 方法 3. 可以用physical_only选项,这个选项可以较小的开销检查数据库的物理一致性.并检查出危及数据安全的残缺页,硬件故障.…
我们一个SQL Server服务器在执行YourSQLDBa的作业YourSQLDba_FullBackups_And_Maintenance时遇到了错误: Exec YourSQLDba.Maint.ShowHistoryErrors @JobNo = 1227 <row> <ctx>yMaint.IntegrityTesting</ctx> <Sql>DBCC checkDb('xxxx') </Sql> <err>In case…
在备份一个客户的数据库时(数据库版本为SQL 2005 Express版本),做DBCC CHECKDB时遇到了下面错误信息: dbcc checkdb('DB_NAME'); 消息 5030,级别 16,状态 12,第 1 行 The database could not be exclusively locked to perform the operation. 消息 7926,级别 16,状态 1,第 1 行 Check statement aborted. The database c…
DBCC CHECKDB 算是管理员们最常用的命令也是必须要知道的命令了.定期的检查及问题的修复都是比较重要的!!下面介绍一下 DBCC CHECKDB 的一些基本用法. DBCC CHECKDB 完成两项任务: 检查数据库里有没有损坏发生. 尽力修复数据库损坏,使数据库能够被重新正常访问. DBCC CHECK 做了些什么: 检查一些关键的系统表 对数据库运行DBCC CHECKALLOC 对数据库运行DBCC CHECKCATALOG 验证数据库中每个索引视图的内容 验证数据库中servic…
锁是计算机协调多个进程或纯线程并发访问某一资源的机制.在数据库中,除传统的计算资源(CPU.RAM.I/O)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素.从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂.   概述     相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制. MySQL大致可归纳为以下3种锁: 表级锁:开销小,加…
第一种: 数据库的大小. 第二种: IO系统的速度. 第三种: 当前CPU的负荷. 第四种: 当前数据库的并发修改量.因为并发修改量越大维护数据库快照的成本就越高,dbcc 的过程中要创建快照,所以. 第五种: 存放tempdb数据库硬盘的速度.dbcc 的过程中会有一些中间结果,而这些结果全放在内存里是不合适也是不可能的.所以有 用到tempdb的空间. 第六种: 数据库中对象的类型,不同类型的对象检查时要的时间也是不一样的.费时的有非聚集索引,计算列,off_row_lob,Server_b…
第一步: 读取系统元数据.读完这些数据后dbcc checkdb 就知道自己要检测的是一个怎样的数据库了.如果在这一步就出错了.dbcc 就直接出错 了.不会再运行下去. 第二步: 在dbcc checkdb 内部会对数据库运行dbcc checkalloc命令 dbcc checkalloc 第三步: 对数据库的每个表和视图执行dbcc checktable(table_name); dbcc checktable(Nums); dbcc checktable 主要是检测 1.是否以正确链接索…