sql server 巡检脚本

转载 2013年12月03日 11:11:17
--1.查看数据库版本信息
select @@version
--2.查看所有数据库名称及大小
exec sp_helpdb
--3.查看数据库所在机器的操作系统参数
exec master..xp_msver
--4.查看数据库启动的参数
exec sp_configure
--5.查看数据库启动时间
select convert(varchar(30),login_time,120)
from master..sysprocesses where spid=1
--6.查看数据库服务器名
select 'Server Name:'+ltrim(@@servername)
--7.查看数据库实例名
select 'Instance:'+ltrim(@@servicename) 
--8.数据库的磁盘空间呢使用信息
exec sp_spaceused
--9.日志文件大小及使用情况
dbcc sqlperf(logspace)
--10.表的磁盘空间使用信息
exec sp_spaceused 'tablename'
--11.获取磁盘读写情况
select 
@@total_read [读取磁盘次数],
@@total_write [写入磁盘次数],
@@total_errors [磁盘写入错误数],
getdate() [当前时间]
--12.获取I/O工作情况
select @@io_busy,
@@timeticks [每个时钟周期对应的微秒数],
@@io_busy*@@timeticks [I/O操作毫秒数],
getdate() [当前时间]
--13.查看CPU活动及工作情况
select
@@cpu_busy,
@@timeticks [每个时钟周期对应的微秒数],
@@cpu_busy*cast(@@timeticks as float)/1000 [CPU工作时间(秒)],
@@idle*cast(@@timeticks as float)/1000 [CPU空闲时间(秒)],
getdate() [当前时间]
--14.检查锁与等待
exec sp_lock
--15.检查死锁
exec sp_who_lock --自己写个存储过程即可
/*
create procedure sp_who_lock  
as  
begin  
    declare @spid int,@bl int,  
    @intTransactionCountOnEntry int,  
    @intRowcount int,  
    @intCountProperties int,  
    @intCounter int  
    create table #tmp_lock_who (id int identity(1,1),spid smallint,bl smallint)  
    IF @@ERROR<>0 RETURN @@ERROR  
    insert into #tmp_lock_who(spid,bl) select 0 ,blocked  
    from (select * from sys.sysprocesses where blocked>0 ) a   
    where not exists(select * from (select * from sys.sysprocesses where blocked>0 ) b   
    where a.blocked=spid)  
    union select spid,blocked from sys.sysprocesses where blocked>0  
    IF @@ERROR<>0 RETURN @@ERROR  
        -- 找到临时表的记录数  
        select @intCountProperties = Count(*),@intCounter = 1  
        from #tmp_lock_who  
    IF @@ERROR<>0 RETURN @@ERROR  
    if @intCountProperties=0  
    select '现在没有阻塞和死锁信息' as message  
    -- 循环开始  
    while @intCounter <= @intCountProperties  
    begin  
    -- 取第一条记录  
    select @spid = spid,@bl = bl  
    from #tmp_lock_who where id = @intCounter   
    begin  
    if @spid =0   
        select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'  
    else  
        select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'  
    DBCC INPUTBUFFER (@bl )  
    end  
    -- 循环指针下移  
    set @intCounter = @intCounter + 1  
    end  
    drop table #tmp_lock_who  
    return 0  
end   
*/

--16.用户和进程信息
exec sp_who
exec sp_who2

--17.活动用户和进程的信息
exec sp_who 'active'

--18.查看进程中正在执行的SQL
dbcc inputbuffer(进程号)
exec sp_who3
/*
CREATE PROCEDURE sp_who3 ( @SessionID INT = NULL )
AS 
    BEGIN



        SELECT  SPID = er.session_id ,
                Status = ses.status ,
                [Login] = ses.login_name ,
                Host = ses.host_name ,
                BlkBy = er.blocking_session_id ,
                DBName = DB_NAME(er.database_id) ,
                CommandType = er.command ,
                SQLStatement = st.text ,
                ObjectName = OBJECT_NAME(st.objectid) ,
                ElapsedMS = er.total_elapsed_time ,
                CPUTime = er.cpu_time ,
                IOReads = er.logical_reads + er.reads ,
                IOWrites = er.writes ,
                LastWaitType = er.last_wait_type ,
                StartTime = er.start_time ,
                Protocol = con.net_transport ,
                ConnectionWrites = con.num_writes ,
                ConnectionReads = con.num_reads ,
                ClientAddress = con.client_net_address ,
                Authentication = con.auth_scheme
        FROM    sys.dm_exec_requests er
                OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) st
                LEFT JOIN sys.dm_exec_sessions ses ON ses.session_id = er.session_id
                LEFT JOIN sys.dm_exec_connections con ON con.session_id = ses.session_id
        WHERE   er.session_id > 50
                AND @SessionID IS NULL
                OR er.session_id = @SessionID
        ORDER BY er.blocking_session_id DESC ,
                er.session_id 



    END
*/

--19.查看所有数据库用户登录信息
exec sp_helplogins 

--20.查看所有数据库用户所属的角色信息
exec sp_helpsrvrolemember

--21.查看链接服务器
exec sp_helplinkedsrvlogin

--22.查看远端数据库用户登录信息
exec sp_helpremotelogin
 
--23.获取网络数据包统计信息
select 
@@pack_received [输入数据包数量],
@@pack_sent [输出数据包数量],
@@packet_errors [错误包数量],
getdate() [当前时间]

--24.检查数据库中的所有对象的分配和机构完整性是否存在错误
dbcc checkdb

--25.查询文件组和文件
select 
	df.[name],df.physical_name,df.[size],df.growth, 
	f.[name][filegroup],f.is_default 
from sys.database_files df join sys.filegroups f 
on df.data_space_id = f.data_space_id 

--26.查看数据库中所有表的条数
select  b.name as tablename ,  
        a.rowcnt as datacount  
from    sysindexes a ,  
        sysobjects b  
where   a.id = b.id  
        and a.indid < 2  
        and objectproperty(b.id, 'IsMSShipped') = 0 

--27.得到最耗时的前10条T-SQL语句
;with maco as   
(     
    select top 10  
        plan_handle,  
        sum(total_worker_time) as total_worker_time ,  
        sum(execution_count) as execution_count ,  
        count(1) as sql_count  
    from sys.dm_exec_query_stats group by plan_handle  
    order by sum(total_worker_time) desc  
)  
select  t.text ,  
        a.total_worker_time ,  
        a.execution_count ,  
        a.sql_count  
from    maco a  
        cross apply sys.dm_exec_sql_text(plan_handle) t 

--28. 查看SQL Server的实际内存占用
select * from sysperfinfo where counter_name like '%Memory%'



--29.显示所有数据库的日志空间信息
dbcc sqlperf(logspace)

--30.收缩数据库
dbcc shrinkdatabase(databaseName)

相关文章推荐

SQL Server数据库巡检脚本

set nocount on   --不显示提示信息 select '当前时间是:'+convert(varchar,getdate(),120)+'    执行sql server维护' ---...
  • wnety
  • wnety
  • 2013年03月29日 13:48
  • 498

SQL Server 数据库巡检脚本

SQL Server 数据库巡检脚本

SQL SERVER日常运维巡检系列之一——服务器状态及各硬件指标

前言   做好日常巡检是数据库管理和维护的重要步骤,而且需要对每次巡检日期、结果进行登记,同时可能需要出一份巡检报告。      SQL专家云(www.zhuancloud.com)带您轻松精通数...

【SQL Server DBA】日常巡检语句3:特定监控(阻塞、top语句、索引、作业)

select j.name as job_name, js.step_name, h.run_date, h.run_time...
  • yupeigu
  • yupeigu
  • 2013年10月15日 17:49
  • 1551

【SQL Server DBA】日常巡检2:windows性能监控器

性能监视器的各类指标 一、内存指标 1、Windows层面上的内存使用检查 在检查SQL Server内存使用之前,DBA必须首先检查一下Windows层面的内存使用情况。 Windows层面...
  • yupeigu
  • yupeigu
  • 2014年03月06日 16:32
  • 2513

SQL SERVER日常运维巡检系列之八——性能

前言   做好日常巡检是数据库管理和维护的重要步骤,而且需要对每次巡检日期、结果进行登记,同时可能需要出一份巡检报告。   本系列旨在解决一些常见的困扰: 不知道巡检哪些东西不知道怎么样便捷体检...

SQL SERVER日常运维巡检系列

巡检是数据库管理员保证数据库健康的必要维护项,全面的巡检可以及早的发现问题、解决问题、预防问题。   很多数据库维护人员其实对数据库了解的并不深入(常常集中在传统行业),不是专业的DBA,同时又身兼...

SQL Server巡检怎么做

作为DBA 我们每天应该巡检哪些方面,我一个每周我应该每周,每月还是每年进行一次检查? 如何自动执行这些任务 ,让我不用每天花大量的时间来检查SQL Server。我们可以把时间用来关注业务,和学习,...

QL Server数据库巡检脚本

set nocount on   --不显示提示信息 select '当前时间是:'+convert(varchar,getdate(),120)+'    执行sql server维护' ...

SQL巡检脚本

  • 2014年05月27日 17:16
  • 24KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sql server 巡检脚本
举报原因:
原因补充:

(最多只允许输入30个字)