笔记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 完成的所有修复,包括需要较长时间的修复(如重建索引),执行这些修复时不会有丢失数据的危险。

 

posted @ 2013-08-04 21:12  桦仔  阅读(547)  评论(0编辑  收藏  举报