使用 sp_iqcheckdb 分析分配问题。
数据库维护了一个分配映射(也称作空闲列表),用于跟踪数据库对象正在使用的块。
DBCC 共检测三种类型的分配问题:
下面是当您运行 sp_iqcheckdb 并且有泄漏空间时所看到的输出示例。带有星号 (***) 的行中包含有关分配问题的信息。在此示例中,DBCC 报告了 16 处泄漏块。
该示例执行的命令行是 sp_iqcheckdb 'allocation database'。
Stat Value Flags
==============================|==============================|=====
DBCC Allocation Mode Report | |
==============================|==============================|=====
DBCC Status |Errors Detected |***
DBCC Work units Dispatched |164 |
DBCC Work units Completed |164 |
| |
==============================|==============================|=====
Allocation Summary | |
==============================|==============================|=====
Blocks Total |8192 |
Blocks in Current Version |4785 |
Blocks in All Versions |4785 |
Blocks in Use |4801 |
% Blocks in Use |58 |
Blocks Leaked |16 |***
| |
==============================|==============================|=====
Allocation Statistics | |
==============================|==============================|=====
...
1st Unowned PBN |1994 |***
...
==============================|==============================|=====
如果一个或多个 dbspace 处于脱机状态,请使用以下语法显示特定 dbspace 的分配问题:
sp_iqcheckdb 'allocation dbspace ' 分配问题在 DBCC 以分配模式或验证模式运行 sp_iqcheckdb 时所生成的输出中报告。如果 Allocation Summary 部分有带星号标记的值(例如“ Blocks Leaked”或“** Blocks with Multiple Owners”),则说明存在分配问题。
DBCC 输出中与分配问题有关的消息都在下表中列出。
DBCC 分配错误DBCC 消息描述/操作Block Count Mismatch该计数总是伴随着其它分配错误。Blocks Leaked 1st Unowned PBN发现未由任何数据库对象使用的块。使用 sp_iqcheckdb dropleaks 模式进行修复。 Blocks with Multiple Owners 1st Multiple Owner PBN正由多个数据库对象使用的块。删除报告为不一致的对象。Unallocated Blocks in Use 1st Unallocated PBN正由数据库对象使用但未标记为“正在使用”的块。使用 sp_iqcheckdb dropleaks 模式进行修复。
如果 Allocation Summary 行未指出任何问题,但 Index Summary 部分为 "Inconsistent Index Count" 报告了一个值,则说明存在一个或多个不一致的索引。