SQL Server误区30日谈 第2天 DBCC CHECKDB会导致阻塞
误区 #2: DBCC CHECKDB会引起阻塞,因为这个命令默认会加锁这是错误的!在SQL Server 7.0以及之前的版本中,DBCC CHECKDB命令的本质是C语言实现的一个不断嵌套循环的代码并对表加表锁(循环嵌套算法时间复杂度是嵌套次数的N次方,作为程序员的你懂得),这种方式并不和谐,并
误区 #2: DBCC CHECKDB会引起阻塞,因为这个命令默认会加锁这是错误的!在SQL Server 7.0以及之前的版本中,DBCC CHECKDB命令的本质是C语言实现的一个不断嵌套循环的代码并对表加表锁(循环嵌套算法时间复杂度是嵌套次数的N次方,作为程序员的你懂得),这种方式并不和谐,并
误区 #27:使用BACKUP ... WITH CHECKSUM可以替代DBCC CheckDB错误乍一看,由于BACKUP WITH CHECKSUM会检测所有分配出去的页的校验和的值,这个误区貌似是这么回事,但实际上并不是这么回事,原因如下:由SQL Server 2000或是更早版本升上来的
误区 #29:可以通过对堆建聚集索引再DROP后进行堆上的碎片整理Nooooooooooooo!!!对堆建聚集索引再DROP在我看来是除了收缩数据库之外最2的事了。如果你通过sys.dm_db_index_physical_stats(或是老版本的DBCC SHOWCONTIG)看到堆上有碎片,绝对
而每次查询分析器寻找路径时,并不会每一次都去统计索引中包含的行数,值的范围等,而是根据一定条件创建和更新这些信息后保存到数据库中,这也就是所谓的统计信息。 如何查看统计信息 查看SQL Server的统计信息非常简单,使用如下指令: DBCC SHOW_STATISTICS('表名','索引名')所
最近老是要为现在这个项目初始化数据,搞的很头疼,而且数据库的Id自增越来越大,要让自增重新从1开始:那么就用下面的方法吧: 方法一: 如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数 truncate table 表名 方法二: dbcc checkident ('ta
方法1: 实现代码如下:truncate table TableName 删除表中的所有的数据的同时,将自动增长清零。 如果有外键参考这个表,这个方法会报错(即便主键表和外键表都已经没有数据),请参考方法2。 PS: 用delete删除数据,自动增长不会清零的哦。 方法2: 实现代码如下:DBCC
有没有办法更快一点? 有没有办法一次性收缩所有数据库? 实现代码如下: alter database 数据库名 set recovery simple go dbcc shrinkdatabase (数据库名) go alter database 数据库名 set recovery full go目
要找到最早的活动事务,可以使用DBCC OPENTRAN命令。详细用法见MSDN:http://msdn.microsoft.com/zh-cn/library/ms182792.aspx给出一个示例:实现代码如下: CREATE TABLE T_Product(PKID int, PName Nv
同样,对事务日志进行备份也只会截断不活动事务的那部分事务日志,所以打开的事务会导致日志变多(甚至达到物理限制),直到事务被提交或回滚。 要找到最早的活动事务,可以使用DBCC OPENTRAN命令。详细用法见MSDN:http://msdn.microsoft.com/zh-cn/library/m
使用以下脚本查看数据库索引碎片的大小情况: 实现代码如下:DBCC SHOWCONTIG WITH FAST, TABLERESULTS, ALL_INDEXES, NO_INFOMSGS 以下使用脚本来处理维护作业: 实现代码如下:/*Perform a 'USE ' to select the