SQL Server的日常监控语句

 

1、查询阻塞信息、锁定了哪些资源

--1.查看阻塞信息 select spid,loginame,waitresource from master..sysprocesses  where blocked <> 0 /* spid	loginame	waitresource 53	ggg-PC\Administrator RID:1:1:1385:0 */  --2.查看语句 dbcc inputbuffer(53) /* eventInfo select * from xx */  --3.查看锁的信息 exec sp_lock @spid1 = 53 /* spid	dbid	ObjId	IndId	Type	Resource	Mode	Status 53	1	1335727861	0	PAG	1:1385                          	IS	GRANT 53	1	1335727861	0	RID	1:1385:0                        	S	WAIT 53	1	1335727861	0	TAB	                                	IS	GRANT */  --select OBJECT_ID(1335727861) as table_name  --4.打开数据库 select * from sysdatabases where dbid = 1 /* name	dbid	sid	mode	status	status2	crdate	reserved	category	cmptlevel	filename	version master	1	0x01	0	65544	1090520064	2003-04-08 09:13:36.390	1900-01-01 00:00:00.000	0	100	C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\master.mdf	661 */  --5.根据锁信息中的ObjId列:1335727861,找到了这个xx表 select * from sysobjects where id = 1335727861 /* name	id	xtype	uid	info	status	base_schema_ver	replinfo	parent_obj	crdate	ftcatid	schema_ver	stats_schema_ver	type	userstat	sysstat	indexdel	refdate	version	deltrig	instrig	updtrig	seltrig	category	cache xx	1335727861	U 	1	0	0	0	0	0	2013-12-25 08:55:07.523	0	0	0	U 	1	3	0	2013-12-25 08:55:07.523	0	0	0	0	0	0	0 */   

2、 如何用脚本获得sql server作业的执行情况

select j.name as job_name,                js.step_name,                h.run_date,        h.run_time,        h.run_duration,        h.server,                case run_status             when 0  then '失败'             when 1  then '成功'             when 2  then '重试'             when 3  then '取消'             when 4  then '正在进行'        end as run_status              from msdb.dbo.sysjobhistory h  inner join msdb.dbo.sysjobs j         on h.job_id = j.job_id          inner join msdb.dbo.sysjobsteps js         on js.job_id = h.job_id            and js.step_id = h.step_id   

 

3、在sql server 中批量生成重组索引的语句

use 数据库 go  select 'DBCC INDEXDEFRAG('+db_name()+','+o.name+','+i.name + ');' --,db_name(), --o.name, --i.name, --i.*  from sysindexes i inner join sysobjects o         on i.id = o.id where o.xtype = 'U'       and i.indid >0       and charindex('WA_Sys',i.name) = 0 


 4、primary文件组的磁盘,是否已经满了,如果满了,可以扩展文件

use master--你的数据库名称 go  --看看你的primary组里的文件  select ds.name,        df.physical_name,  --主文件组的物理文件的路径                           --打开我的电脑,查看文件所在盘,是否磁盘已满                                   df.name  ,         --物理文件所对应的逻辑名称                                df.is_percent_growth, --是否自动增长        df.growth             --增长多少 from sys.data_spaces ds inner join sys.database_files df         on ds.data_space_id = df.data_space_id where ds.name = 'primary'   --物理文件所对应的逻辑名称,上面的语句就可以查询到 ALTER DATABASE 数据库名称  MODIFY FILE ( NAME = N'物理文件所对应的逻辑名称', FILEGROWTH = 10%) 


5、查看数据库、表的创建日期和修改日期

select name,        create_date --数据库创建日期         from sys.databases where name = 'pubs'  --改成你自己的数据库名   select name,        create_date,   --表的创建日期        modify_date    --表的修改日期         from sys.tables 

6、页的分裂次数:

use master go  select leaf_allocation_count,     --由于页拆分所引起的页分配的累积计数        nonleaf_allocation_count,  --叶级以上由页拆分引起的页分配的累积计数                leaf_page_merge_count,   --叶级页合并的累积计数        nonleaf_page_merge_count --叶级以上页合并的累积计数 from sys.dm_db_index_operational_stats( db_id('数据库名'),object_id('数据库名.dbo.表名'),索引id,null) 

你可能感兴趣的:(SQL Server的日常监控语句)