症状
假设你有一个数据库,其中包含 Microsoft SQL Server 2014 中的只读文件组。 在数据库上运行 DBCC CHECKDB 时, DBCC 命令无法为数据库创建数据库快照。如果没有与数据库的任何其他连接,则 DBCC 操作将在没有错误的情况下完成。 但是,你会收到以下错误消息:
DBCC CHECKDB 不会检查 SQL Server 目录或 Service Broker 一致性,因为无法创建数据库快照,或者指定了 WITH TABLOCK。
如果存在与数据库的其他连接,DBCC 操作将失败,并且你会收到以下错误消息:
消息5030、Level 16、State 12、Line 1The 数据库无法以独占方式锁定来执行该操作。消息7926、级别16、状态1、行1Check 语句已中止。 无法检查数据库,因为无法创建数据库快照,并且无法锁定数据库或表。 有关何时出现此行为以及有哪些解决方法的详细信息,请参阅联机丛书。 有关更多详细信息,另请参阅以前的错误。
解决方案
累积更新信息
在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 我们建议你下载并安装 SQL Server 的最新累积更新:
更多信息
若要重现此问题,请在 SQL Server 中运行以下命令:
-- Open a new query that is named conn1, and then create a new database. CREATE DATABASE DbTest GO -- Add a new file group. ALTER DATABASE DbTest ADD FILEGROUP FGTest GO -- Add a file to the new file group. ALTER DATABASE DbTest ADD FILE (NAME=DbTest_Data2, FILENAME=''C:\temp\DbTest_Data2.ndf') TO FILEGROUP FGTest GO -- Change the file group to read-only. ALTER DATABASE DbTest MODIFY FILEGROUP FGTest READONLY GO -- Run the DBCC CHECK command in the conn1 query. DBCC CHECKDB (DbTest) -- The DBCC CHECK command runs correctly. However, you may receive the following message: "DBCC CHECKDB will not check SQL Server catalog or Service Broker consistency because a database snapshot could not be created or because WITH TABLOCK was specified." -- Open a new query window that is named conn2, and then set the database as DbTest. This action opens a connection to the DbTest database. -- Return to the conn1 query, and run the DBCC command again. DBCC CHECKDB (DbTest) -- Notice the error message that is mentioned in the "Symptoms" section.
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。