检查指定数据库内的目录一致性。数据库必须联机。
? Transact-SQL 语法约定
语法
DBCC CHECKCATALOG
[
????????(
????????database_name | database_id | 0
????????)
]
????[ WITH NO_INFOMSGS ]
参数
database_name?|?
database_id?| 0
要检查其目录一致性的数据库的名称和 ID。如果未指定,或者指定为 0,则使用当前数据库。数据库名称必须符合标识符规则。
WITH NO_INFOMSGS
取消显示所有信息性消息。
注释
DBCC CATALOG 命令完成后,会将一条消息写入 SQL Server 错误日志。如果 DBCC 命令成功执行,则消息指示成功完成以及命令运行的时间。如果 DBCC 命令在完成检查之前由于错误而停止,则消息将指示命令已终止,并指示状态值和命令运行的时间。下表列出并说明了该消息中可包含的状态值。
|
状态 |
说明 |
0
引发了错误号 8930。这指示导致 DBCC 命令终止的元数据损坏。
1
引发了错误号 8967。存在一个内部 DBCC 错误。
2
在紧急模式数据库修复过程中出错。
3
这指示导致 DBCC 命令终止的元数据损坏。
4
检测到断言或访问违规。
5
出现终止了 DBCC 命令的未知错误。
DBCC CHECKCATALOG 在系统元数据表之间执行各种一致性检查。DBCC CHECKCATALOG 使用内部数据库快照来提供需要执行这些检查的事务一致性。有关详细信息,请参阅了解数据库快照中的稀疏文件大小和?DBCC (Transact-SQL)?中的“DBCC 内部数据库快照用法”部分。
如果无法创建快照,则 DBCC CHECKCATALOG 将获取一个排他数据库锁以获得要求的一致性。如果检测到任何不一致,则无法修复这些不一致问题,必须使用备份来还原数据库。
 注意
|
对?tempdb?运行 DBCC CHECKCATALOG 不会执行任何检查。这是因为,为了提高性能,不允许对?tempdb?使用数据库快照。这意味着无法获得所需的事务一致性。回收服务器以解析任何?tempdb?元数据问题。
 注意
|
DBCC CHECKCATALOG 不会检查 FILESTREAM 数据。FILESTREAM 在文件系统中存储二进制大型对象 (BLOB)。
DBCC CHECKCATALOG 仍作为?DBCC CHECKDB?的一部分运行。
结果集
如果未指定数据库,则 DBCC CHECKCATALOG 返回以下内容:
DBCC execution completed. If DBCC printed error messages,contact your system administrator.
如果将 AdventureWorks2008R2 指定为数据库名,则 DBCC CHECKCATALOG 返回以下内容:
DBCC execution completed. If DBCC printed error messages,contact your system administrator.
权限
要求具有?sysadmin?固定服务器角色或?db_owner?固定数据库角色的成员身份。
示例
以下示例将检查当前数据库和 AdventureWorks2008R2 数据库中的目录完整性。
Transact-SQL
-- Check the current database.
DBCC CHECKCATALOG;
GO
-- Check the AdventureWorks2008R2 database.
DBCC CHECKCATALOG (AdventureWorks2008R2);
GO
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!