在备份一个客户的数据库时(数据库版本为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 could not be checked as a database snapshot could not be created and the database or table could not be locked. See Books Online for details of when this behavior is expected and what workarounds exist. Also see previous errors for more details.

一般导致创建数据库快照失败的原因有两个:

1:数据库有只读的文件组。

2:没有支持稀疏文件(Parse file)的文件系统

英文原文如下

No Parse file support by the file system.

A. Parse file is not supported in FAT32 check the file system of the datafiles. If you use FAT32   use DBCC CheckDB with Tablock Option

B. To get the volume information of file system in which we have the datafiles we use  !GetVolumeInformation API.

This API would fail if SQLServer startup account do not have full permission on Volume in which the data file is located.

Grant full permission for the startup account of SQLServer on the root volume of all the datafies.

我检查了数据库发现没有设定为只读的文件组,这台PC是Window Xp,文件系统系统确实为FAT32,使用DBCC CHECKDB('db_name') WITH  TABLOCK 依然报错,其实当文件系统为FAT32时,DBCC CHECKDB只能在单用户模式才能成功。所以我在该数据库做DBCC CHECKDB时会遇到这个错误,为此,我特意在测试环境测试了一下,如下所示:

测试FAT32文件系统下的DBCC CHECKDB问题:

1:新建的数据库TEST的文件位于FAT32磁盘上。如果没有会话访问数据库TEST(相当于单用户模式),DBCC CHECKDB成功,如果在新开一个窗口访问TEST,然后再另外一个窗口执行DBCC CHECKDB('TEST')则会报如下错误,另外DBCC CHECKDB('db_name') WITH  TABLOCK也需要在单用户模式下才能成功。

 

参考资料:

http://blogs.msdn.com/b/karthick_pk/archive/2010/03/07/dbcc-checkdb-fails-the-database-could-not-be-checked-as-a-database-snapshot-could-not-be-created-and-the-database-or-table-could-not-be-locked.aspx

https://support.microsoft.com/en-us/kb/928518

https://ask.sqlservercentral.com/questions/51856/dbcc-checkdb-with-fat32-file-system.html

DBCC CheckDB遇到a database snapshot could not be created的更多相关文章

  1. Repair the database using DBCC CHECKDB

    So now if you want to place AdventureWorks2008R2 sample database in a single-user mode, then write t ...

  2. DBCC CHECKDB 遭遇Operating system error 112(failed to retrieve text for this error. Reason: 15105) encountered

    我们一个SQL Server服务器在执行YourSQLDBa的作业YourSQLDba_FullBackups_And_Maintenance时遇到了错误: Exec YourSQLDba.Maint ...

  3. MS SQL巡检系列——检查数据库上一次DBCC CHECKDB的时间

    DBCC CHECKDB检查指定数据库中的所有对象的逻辑和物理完整性,具体请参考MSDN文档.我们必须定期对数据库做完整性检查(DBCC CHECKDB),以便能及时发现一些数据库损坏(Corrupt ...

  4. SQL Server 修复数据库 相关 脚本 之 DBCC CHECKDB 用法 来自同事分享

    DBCC CHECKDB 用法详解, 手工修复数据库 1. 快速修复 DBCC CHECKDB ('数据库名',REPAIR_FAST) 2.重建索引并修复 DBCC CHECKDB ('数据库名', ...

  5. DBCC CHECKDB用法 手工修复数据库

          快速修复 DBCC CHECKDB ('数据库名', REPAIR_FAST)      重建索引并修复 DBCC CHECKDB ('数据库名', REPAIR_REBUILD) 如果必 ...

  6. 如何在大型的并且有表分区的数据库中进行DBCC CHECKDB操作

    如何在大型的并且有表分区的数据库中进行DBCC CHECKDB操作 其实这个问题已经在<SQLSERVER企业级平台管理实践>里徐老师已经讲过了,不过我想用自己的语言再讲详细一些 笔记链接 ...

  7. MS Sql Server 数据库或表修复(DBCC CHECKDB)

    MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令.  1. DBCC CHECKDB  重启服务器后,在没有进行任何操作的情况下,在SQL ...

  8. 【生产问题】-dbcc checkdb报错-数据页故障

    更多操作参考:https://www.cnblogs.com/gered/p/9435282.html [生产问题]-dbcc checkdb报错-数据页故障 数据页故障,索引页故障 use db_t ...

  9. (4.4)dbcc checkdb 数据页修复

    转自:http://blog.51cto.com/lzf328/955852 三篇 一.创建错误数据库 以前看Pual写过很多数据恢复的文章,他很多的测试都是自己创建的Corrupt数据库,其实我们自 ...

随机推荐

  1. 测试驱动开发与Python

    最近在看一本书<Test-Driven Development with Python>,里面非常详细的介绍了如何一步一步通过测试驱动开发(TDD)的方式开发Web项目.刚好这本书中使用了 ...

  2. Java中写文件操作

    OutputStream 和 Writer OutputStream类(直接操作byte数组) 该类是字节输出流的抽象类,定义了输出流的各种操作方法.如下图是OutputStream的层次结构: By ...

  3. VS Extract Method

    前言 看重构6.4Replace Temp with Query(以查询取代临时变量)中提到Replace Temp with Query往往是你运用Extract Method之前必不可少的一个步骤 ...

  4. Compute Resource Consolidation Pattern 计算资源整合模式

    Consolidate multiple tasks or operations into a single computational unit. This pattern can increase ...

  5. NSPredicate 的使用

    NSPredicate是什么? NSPredicate 是预测的意思 但是我们常翻译成谓词 它可以干什么? 使用NSPredicate可以定义模糊查询条件 根据一定的条件 我们就可以从一个数组中快速找 ...

  6. SQL Server时间粒度系列----第9节时间粒度示例演示

    本文目录列表: 1.准备测试数据 2.向测试数据表添加相关时间粒度字段列 3.基于日月季年统计汇总的演示 4.总结语 5.参考清单列表   准备测试数据   为了提供不同时间粒度示例的演示,就需要测试 ...

  7. asp.net mvc4 添加分区出现错误 找到多个与名为“home”的控制器匹配的类型

    会出现如下错误”找到多个与名为“home”的控制器匹配的类型“   在RouteConfig文件中添加命名空间可解决   routes.MapRoute(                 name: ...

  8. Xamarin对Visual Studio用户免费 Xamarin SDK将开源

    在 Build 2016开发者大会上,微软宣布它上个月收购的C#和.NET移动开发工具Xamarin对所有Visual Studio用户免费.所有Visual Studio版本涵盖了从免费的社区版到企 ...

  9. iOS阶段学习第33天笔记(自定义标签栏(UITabBar)介绍)

    iOS学习(UI)知识点整理 一.自定义标签栏 1.方法一 单个创建标签栏 #import "AppDelegate.h" #import "SecondViewCont ...

  10. GBDT的基本原理

    这里以二元分类为例子,给出最基本原理的解释 GBDT 是多棵树的输出预测值的累加 GBDT的树都是 回归树 而不是分类树 分类树 分裂的时候选取使得误差下降最多的分裂 计算的技巧 最终分裂收益按照下面 ...