SQL Server 2005:清空plan cache
DBCC FREEPROCCACHEThis command removes all of the cached query plans and execution contexts from the plan cache. It is not advisable to run this command on a production server because it can adversely affect performance of running applications. This command is useful to control plan cache's contents when troubleshooting a recompilation issue.DBCC FLUSHPROCINDB( db_id )This command removes all of the cached plans from the plan cache for a particular database. It is not advisable to run this comma
SQL Server 2005:查询统计信息
查询统计信息可以使用sys.sysindexes目录视图,表级统计信息保存在其rows及dpages两个列,列级统计信息保存在其statblob列中,这是一个blob类型字段。查询表级统计信息:sysindexes中的name列,存储索引的名称,对于 表,name列为空,indid为0,这时可以通过sysindexes中的id列及indid列作为查询条件获得指定表的统计信息。1> select object_name(id) obj_name, dpages, rows2> from sys.sysindexes3> where indid=0 and id=object_id('t')4> goobj_name dpages rows--------------- ----------- -----------t 9 2208如果表上
SQL Server 2005:决定统计信息更新时机的rowmodctr与colmodctr
Rowmodctr (SQL Server 2000)每个表都有一个 rowmodctr 与之相关联。其值可从 sysindexes 系统表获得。在表或索引视图 T 的一个或多个列上创建的每个统计都有一个 rowmodctr 的快照值与之相关联。无论该统计何时被更新——手动或自动(通过 SQL Server 的自动统计功能),rowmodctr 的快照值也会被刷新。有关 rowmodctr 的详细信息在下方白皮书中有所描述:http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28000409rowmodctr 可在 SQL Server 2005 服务器上使用,但其值总为 0。补充说明一下,在 SQL Serv
SQL Server 2005联机丛书的一个错误:UPDATE STATISTICS ON
UPDATE STATISTICS ON < table_name > [ . <index_name> ] WITH FULLSCAN {, NORECOMPUTE }应该去掉上面的on。[@more@]
SQL Server 2005默认区分大小写
1> select * from test2> goa b----------- ---1 law2 Law(2 行受影响)1> select * from test where b='law'2> goa b----------- ---1 law(1 行受影响)1> select * from test where b='Law'2> goa b----------- ---2 Law(1 行受影响)[@more@]
SQL Server中快速生成大量记录的SQL脚本
下面脚本快速生成1百万条记录的表:set nocount onuse lawgoif object_id('dbo.nums') is not nulldrop table dbo.numsgocreate table dbo.nums(n int not null primary key) on newFGdeclare @max as int, @rc as int;set @max=1000000set @rc=1insert into nums values(1)while @rc*2<=@maxbegininsert into dbo.nums select n+@rc from dbo.numsset @rc=@rc*2endinsert into dbo.numsselect n+@rc from dbo.nums where n+@rc<=@maxselect count(*) from dbo.nums[@more@]
SQL Server 2005:模拟Oracle的desc命令编写的describe,查询表的结构
create proc [dbo].[describe]@table_name Nvarchar(100)asselect c.name as column_name,case t.namewhen 'numeric' then t.name+'('+cast(c.precision as varchar(5))+','+cast(c.scale as varchar(5))+')'when 'char' then t.name+'('+cast(c.max_length as varchar(5))+')'when 'varchar' then t.name+'('+cast(c.max_length as varchar(5))+')'when 'nvarchar' then t.name+'('+cast(c.max_length as varchar(5))+')'else t.nameend as type,case c.is_nullable when 1 then ' ' else 'NOT NULL' end as nul
模拟Oracle的desc命令编写的describe,查询表的结构
CREATE proc describe@table_name Nvarchar(100)asselect c.name as column_name, case t.namewhen 'numeric' then t.name+'('+cast(c.precision as varchar(5))+','+cast(c.scale as varchar(5))...
SQL Server中创建存储过程时,with recompoile的作用
每次执行存储过程时,对于其中的查询,SQL Server默认会使用原来的执行计划,附加with recompile之后,每次执行这个存储过程时都重新编译,即重新生成执行计划。同时注意,存储过程的编译结果就是生成执行计划,而不...
SQL Server 触发器中的两个临时表inserted及deleted,其数据从何而来?
在SQL Server 2005中,其数据由tempdb数据库中的version store数据得来,而在SQL Server 2000中,其数据由事务日志文件得来。
SQL Server 2005中的UDF(用户定义函数)
关于UDF:UDF根据其返回的类型可以分为标量函数及表值函数UDF可以嵌入在查询、约束以及计算列中。UDF不能使用临时表。UDF不能使用动态执行(dynamic execution)。UDF不能修改表中的数据。对于标量UDF(Scalar UDF):必...
在SQL Server 2005数据库中设置read committed snapshot隔离级别
把read_committed_snapshot 选项打开:alter database law set read_committed_snapshot on当数据库处于read committed隔离级别时,与Oracle数据库中的效果相同,这时,update操作的旧数据会保存在tempdb中称为versi...
查询SQL Server 2005数据库重做日志的信息
dbcc loginfo:不用加参数,可以查询每个VLF的信息,status为2表示active或者recovery,为0表示可以重用或者未使用。dbcc sqlperf('logspace'):可以查询当前数据库中每个日志文件的大小和使用量的百分比。...
SQL Server 2005中的tempdb数据库的一些特点
服务器重启时,tempdb会重建,其中创建的任何对象会丢失,因此此数据库也不用备份。tempdb数据库使用simple恢复模式。tempdb数据库的操作也会产生redo log,但是其数据量只能rollback一个事务,例如,对于update操作...
order by在SQL Server与Oracle中的一个区别
在SQL Server中,子查询如果使用order by,则报错:1> select * from (select au_fname from authors) as d2> goau_fname--------------------AbrahamReginaldCheryl1> select * from (select au_fname from authors...
SQL Server重做日志管理机制
SQL Server把所有日志文件当作一个连续的文件看待。当需要收缩数据库时,SQL Server也是把所有的文件当作一个文件看待,而不是每个文件单独收缩。除非由于磁盘空间的问题,否则没必要使用多个重做文件。SQL Server把...