Transact-
SQL 编程语言提供 DBCC语句作为 Microsoft SQL Server™ 2000 的数据库控制台命令。这些语句对数据库的物理和逻辑一致性进行检查。许多 DBCC 语句能够对
检测到的问题进行修复。
分类
数据库控制台命令语句被分为以下类别。
语句分类 执行
杂项语句 诸如启用行级锁定或从内存中删除动态链接库 (DLL) 等杂项任务。
状态语句 状态检查。
验证语句 对数据库、表、索引、目录、文件组、系统表或数据库页的分配进行的验证操作。
SQL Server 2000 的 DBCC 语句使用输入参数和返回值。所有 DBCC 语句参数都可以接受 Unicode 和 DBCS 字面值。
许多 DBCC 命令可以产生表格格式的输出(使用 WITH TABLERESULTS 选项)。该信息可装载到表中以便将来使用。以下显示一个示例脚本:
-- Create the table to accept the results
CREATE TABLE #tracestatus
TraceFlag INT,
Status INT
-- Execute the command, putting the results in the table
INSERT INTO #tracestatus
EXEC ('DBCC TRACESTATUS (-1) WITH NO_INFOMSGS')
-- Display the results
SELECT *
FROM #tracestatus
GO
维护语句
DBCC CLEANTABLE ('db_name','table_name') -----回收Alter table drop column语句删除可变长度列或text
DBCC DBREINDEX -----重建指定数据库的一个或多个索引
DBCC INDEXDEFRAG ------对表或视图上的索引和
非聚集索引进行
碎片整理DBCC PINTABLE (db_id,object_id) ------将表数据驻留在内存中
查看哪些表驻留在内存的方法是:
select objectproperty(object_id('tablename'),‘tableispinned')
DBCC UNPINTABLE (db_id,object_id) -----撤消驻留在内存中的表
DBCC SHRINKDATABASE(db_id,int) -----收缩指定数据库的数据文件和日志文件大小
DBCC SHRINKFILE(file_name,int) -----收缩相关数据库的指定数据文件和日志文件大小
杂项语句
DBCC dllname (FREE) ----查看加载的扩展PROC在内存中卸载指定的扩展过程动态链接库(dll—)
DBCC HELP ---查询所有DBCC命令
DBCC PINTABLE ---将表数据驻留在内存中
DBCC ROWLOCK
DBCC TRACEOFF ----关闭跟踪标记
DBCC TRACEON ----打开跟踪标记
DBCC UNPINTABLE ---撤消驻留在内存中的表
状态语句
DBCC PINTABLE ---将表数据驻留在内存中
DBCC OPENTRAN ----查询某个数据库执行时间最久的事务,由哪个程序拥有
DBCC OUTPUTBUFFER
DBCC FREEPROCCACHE ----从过程缓冲区删除所有元素
DBCC SHOWCONTIG ---显示指定表的数据和索引的碎片信息
DBCC SHOW_STATISTICS ----显示指定表上的指定目标的当前分布统计信息
DBCC SQLPERF ---可以用来检查是否CPU使用达到瓶颈最关键的一个参考数据num runnable,表明当前有多少个
线程再等待运行如果大于等于2,考虑CPU达到瓶颈
DBCC TRACESTATUS ---跟踪标记状态
DBCC USEROPTIONS ---返回当前连接的活动(设置)的SET选项
验证语句
DBCC CHECKALLOC ----检查指定数据库的磁盘空间分配结构的一致性
DBCC CHECKCATALOG ----检查指定数据库的系统表内和系统表间的一致性
DBCC CHECKCONSTRAINTS ----检查指定表上的指定约束或所有约束的完整性
DBCC CHECKDB ----检查数据库中的所有对象的分配和结构完整性
DBCC CHECKFILEGROUP ----检查指定
文件组中所有表在当前数据库中的分配和结构完整性
DBCC CHECKIDENT ----检查指定的当前标识值
DBCC CHECKTABLE ----检查指定表或索引视图的数据、索引及test、ntest和image页的完整性
DBCC NEWALLOC
使用建议
1、在系统使用率较低时运行 CHECKDB。
2、请确保未同时执行其它磁盘
I/O 操作,例如磁盘备份。
3、将 tempdb 放到单独的磁盘系统或快速磁盘子系统中。
4、允许 tempdb 在驱动器上有足够的扩展空间。 使用带有 ESTIMATE ONLY 的 DBCC
估计 tempdb 将需要多少空间。
5、避免运行占用大量 CPU 的查询或
批处理作业。
6、在 DBCC 命令运行时,减少活动事务。
7、使用 NO_INFOMSGS 选项显著减少处理和 tempdb 的使用。
8、考虑使用带有 PHYSICAL_ONLY 选项的 DBCC CHECKDB 来检查页和记录首部
的
物理结构。当硬件导致的错误被置疑时,这个操作将执行快速检查。