笔记296 DBCC命令大全
笔记296 DBCC命令大全
1 --DBCC命令大全 2 3 --DBCC DROPCLEANBUFFERS:从缓冲池中删除所有,清除缓冲区。在进行测试时,使用这个命令可以从sql server’s的数据缓存data cache(buffer)清除所有的测试数据,以保证测试的公正性。需要注意的是这个命令只移走干净的缓存,不移走脏缓存。由于这个原因,在执行这个命令前,应该先执行CheckPoint,将所有脏的缓存写入磁盘,这样在运行DBCC RROPCLEANBUFFERS 时,可以保证所有的数据缓存被清理,而不是其中的一部分。 4 checkpoint 5 DBCC DROPCLEANBUFFERS 6 7 8 --DBCC CacheStats:显示存在于当前buffer Cache中的对象的信息,例如:hit rates,编译的对象和执行计划 9 DBCC cachestats 10 11 --DBCC ErrorLog :如果很少重起mssqlserver服务,那么服务器的日志(不是数据库事务日志)会增长得很快,而且打开和查看日志的速度也会很慢。使用这个命令,可以截断当前的服务器日志,主要是生成一个新的日志。可以考虑设置一个调度任务,每周执行这个命令自动截断服务器日志。使用存储过程sp_cycle_errorlog也可以达到同样的目的 12 DBCC errorlog 13 EXEC sys.sp_readerrorlog 14 EXEC sys.sp_cycle_errorlog 15 16 --------------------------------DBCC命令大全--------------------------------------------------------------------- 17 --一、DBCC 帮助类命令 18 -- 19 --* DBCC HELP('?') 20 --查询所有的DBCC命令 21 --* DBCC HELP('命令') 22 --查询指定的DBCC命令的语法说明 23 --* DBCC USEROPTIONS 24 --返回当前连接的活动(设置)的SET选项 25 -- 26 --二、DBCC 检查验证类命令 27 -- 28 --* DBCC CHECKALLOG ('数据库名称') 29 --检查指定数据库的磁盘空间分配结构的一致性 30 --* DBCC CHECKCATALOG ('数据库名称') 31 --检查指定数据库的系统表内和系统表间的一致性 32 --* DBCC CHECKCONSTAINTS ('tablename') 33 --检查指定表上的指定约束或所有约束的完整性 34 --* DBCC CHECKDB 35 --检查数据库中的所有对象的分配和结构完整性 36 --* DBCC CHECKFILEGROUP 37 --检查指定文件组中所有表在当前数据库中的分配和结构完整性 38 --* DBCC CHECKTABLE 39 --检查指定表或索引视图的数据、索引及test、ntest和image页的完整性 40 --* DBCC CHECKIDENT --果存在大量数据删除,考虑在删除后,使用 dbcc checkident 重置一下自增值 http://social.msdn.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/8fa3e3a8-2ff2-4a68-be3e-92e76c380ef9/ 41 --检查指定的当前标识值 42 --* DBCC SQLPERF(UMSSTATS) undocumented in BOL 43 --可以用来检查是否CPU使用达到瓶颈 44 --最关键的一个参考数据num runnable,表明当前有多少个线程再等待运行 45 --如果大于等于2,考虑CPU达到瓶颈 46 -- 47 --三、DBCC 维护类命令 48 -- 49 --更新整个数据库的统计信息 表和索引的行计数,以及页计数 50 --* DBCC UPDATEUSAGE([AdventureWorks]) 51 -- 52 --* DBCC CLEANTABLE ('db_name','table_name') 53 --回收Alter table drop column语句删除可变长度列或text 54 --* DBCC DBREINDEX 55 --重建指定数据库的一个或多个索引 56 --* DBCC INDEXDEFRAG 57 --对表或视图上的索引和非聚集索引进行碎片整理 58 --* DBCC PINTABLE (db_id,object_id) 59 --将表数据驻留在内存中 60 --查看哪些表驻留在内存的方法是: 61 --select objectproperty(object_id('tablename'),‘tableispinned') 62 --* DBCC UNPINTABLE (db_id,object_id) 63 --撤消驻留在内存中的表 64 --* DBCC SHRINKDATABASE(db_id,int) 65 --收缩指定数据库的数据文件和日志文件大小 66 --* DBCC SHRINKFILE(file_name,int) 67 --收缩相关数据库的指定数据文件和日志文件大小 68 -- 69 --四、DBCC 性能调节命令 70 -- 71 --* DBCC dllname(FREE) 72 --sp_helpextendedproc 查看加载的扩展PROC 73 --在内存中卸载指定的扩展过程动态链接库(dll) 74 --* DBCC DROPCLEANBUFFERS 75 --从缓冲池中删除所有缓冲区 76 --* DBCC FREEPROCCACHE 77 --从过程缓冲区删除所有元素 78 --* DBCC INPUTBUFFER 79 --显示从客户机发送到服务器的最后一个语句 80 --* DBCC OPENTRAN (db_name) 81 --查询某个数据库执行时间最久的事务,由哪个程序拥有 82 --* DBCC SHOW_STATISTICS 83 --显示指定表上的指定目标的当前分布统计信息 84 --* DBCC SHOWCONTIG 85 --显示指定表的数据和索引的碎片信息 86 --* DBCC SQLPERF 87 --(logspace) 查看各个DB的日志情况 88 --(iostats) 查看IO情况 89 --(threads) 查看线程消耗情况 90 --返回多种有用的统计信息 91 --* DBCC CACHESTATS 92 --显示SQL Server 2000内存的统计信息 93 --* DBCC CURSORSTATS 94 --显示SQL Server 2000游标的统计信息 95 --* DBCC MEMORYSTATS 96 --显示SQL Server 2000内存是如何细分的 97 --* DBCC SQLMGRSTATS 98 --显示缓冲中先读和预读准备的SQL语句 99 -- 100 --五、DBCC 未公开的命令 101 -- 102 --* DBCC ERRLOG 103 --初始化SQL Server 2000的错误日志文件 104 --* DBCC FLUSHPROCINDB (db_id) 105 --清除SQL Server 2000服务器内存中的某个数据库的存储过程缓存内容 106 --* DBCC BUFFER (db_name,object_name,int(缓冲区个数)) 107 --显示缓冲区的头部信息和页面信息 108 --* DBCC DBINFO (db_name) 109 --显示数据库的结构信息 110 --* DBCC DBTABLE 111 --显示管理数据的表(数据字典)信息 112 --* DBCC IND (db_name,table_name,index_id) 113 不过我觉得应该是查询页信息,因为堆表跟索引表都可以查询 114 查看某个索引的页面信息还可以查看堆表里的数据页 115 5.查询页信息发现只有两种类型的页,一种IAM page,还有一个是data page.dbcc ind ( TESTDB3, [Student], -1) 116 http://www.cnblogs.com/xwdreamer/archive/2012/07/17/2595878.html 117 ---------------------------------------------------------------------------------- 118 --* DBCC REBUILDLOG 119 --重建SQL Server 2000事务日志文件 120 --* DBCC LOG (db_name,3) (-1--4) 121 --查看某个数据库使用的事物日志信息 122 --* DBCC PAGE 123 --查看某个数据库数据页面信息 124 --* DBCC PROCBUF 125 --显示过程缓冲池中的缓冲区头和存储过程头 126 --* DBCC PRTIPAGE 127 --查看某个索引页面的每行指向的页面号 128 --* DBCC PSS (user,spid,1) 129 --显示当前连接到SQL Server 2000服务器的进程信息 130 --* DBCC RESOURCE 131 --显示服务器当前使用的资源情况 132 --* DBCC TAB (db_id,object_id) 133 --显示数据页面的结构 134 -- 135 --六、DBCC跟踪标记 136 -- 137 --跟踪标记用于临时设置服务器的特定特征或关闭特定行为,常用于诊断性能问题或调试存储过程或复杂的计算机系统 138 --* DBCC TRACEON (3604) 139 --打开跟踪标记 140 --* DBCC TRACEOFF 141 --关闭跟踪标记 142 --* DBCC TRACESTATS 143 --查看跟踪标记状态 144 -- 145 --七、使用 DBCC 结果集输出 146 -- 147 -- 许多 DBCC 命令可以产生表格格式的输出(使用 WITH TABLERESULTS 选项)。该信息可装载到表中以便将来使用。以下显示一个示例脚本: 148 -- 149 -- 150 -- CREATE TABLE DBCCResult ( 151 -- 152 -- DBCCFlag INT, 153 -- 154 -- Result INT 155 -- 156 -- ) 157 -- 158 -- 159 -- 160 -- INSERT INTO DBCCResult 161 -- 162 -- EXEC ('DBCC TRACESTATUS (-1) WITH NO_INFOMSGS') 163 -- 164 -- 165 -- 166 -- SELECT * 167 -- 168 -- FROM DBCCResult 169 --八、官方使用DBCC的建议 170 --1、在系统使用率较低时运行 CHECKDB。 171 --2、请确保未同时执行其它磁盘 I/O 操作,例如磁盘备份。 172 --3、将 tempdb 放到单独的磁盘系统或快速磁盘子系统中。 173 --4、允许 tempdb 在驱动器上有足够的扩展空间。 使用带有 ESTIMATE ONLY 的 DBCC 174 --估计 tempdb 将需要多少空间。 175 --5、避免运行占用大量 CPU 的查询或批处理作业。 176 --6、在 DBCC 命令运行时,减少活动事务。 177 --7、使用 NO_INFOMSGS 选项显著减少处理和 tempdb 的使用。 178 --8、考虑使用带有 PHYSICAL_ONLY 选项的 DBCC CHECKDB 来检查页和记录首部 179 --的物理结构。当硬件导致的错误被置疑时,这个操作将执行快速检查。 180 -- 181 -- 182 -- 183 -- 184 -- 185 -- 186 -- 187 -- 188 -- 189 -- 190 -- 191 --在发布,订阅复制时要用服务器实名时可以这样: 192 -- 193 --select * from sysservers (可以找到原来服务器的名称) 194 -- 195 -- 196 -- 197 -- 198 --exec sp_dropserver 'jmsql9' (删除原来的服务器名) 199 -- 200 -- 201 -- 202 --exec sp_addserver 'jmSQL9' ,LOCAL (改为新的服务器名) 203 -- 204 -- 205 -- 206 -- 207 -- 208 -- 209 -- 210 --ALTER DATABASE [jm] SET SINGLE_USER (改为单用户模式) 211 -- 212 -- 213 -- 214 --DBCC CHECKDB("databasename",REPAIR_REBUILD) WITH TABLOCK (修复数据库) 215 -- 216 --DBCC CHECKTABLE("tablename",repair_rebuild) with tablock (修复表) 217 -- 218 --DBCC DBREINDEX ('t_icitem' , ' ') 修复此表所有的索引。 219 -- 220 -- 221 -- 222 --ALTER DATABASE [jm] SET MULTI_USER (改为多用户模式) 223 -- 224 -- 225 -- 226 --REPAIR_ALLOW_DATA_LOSS:执行由REPAIR_REBUILD 完成的所有修复,包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,以及删除已损坏的文本对象。这些修复可能会导致一些数据丢失。修复操作可以在用户事务下完成以允许用户回滚所做的更改。如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。修复完成后,备份数据库。 227 -- 228 --REPAIR_FAST 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。这些修复可以很快完成,并且不会有丢失数据的危险。 229 -- 230 --REPAIR_REBUILD 执行由REPAIR_FAST 完成的所有修复,包括需要较长时间的修复(如重建索引),执行这些修复时不会有丢失数据的危险。