--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 BEGINSELECT  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_schemeFROM    sys.dm_exec_requests erOUTER APPLY sys.dm_exec_sql_text(er.sql_handle) stLEFT JOIN sys.dm_exec_sessions ses ON ses.session_id = er.session_idLEFT JOIN sys.dm_exec_connections con ON con.session_id = ses.session_idWHERE   er.session_id > 50AND @SessionID IS NULLOR er.session_id = @SessionIDORDER 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 数据库巡检脚本相关推荐

  1. windows服务器系统巡检脚本,sql server 数据库巡检脚本

    我司数据库一季度巡检一次,所以经常用到下面脚本 --1.查看数据库版本信息 select @@version --2.查看所有数据库名称及大小 exec sp_helpdb --3.查看数据库所在机器 ...

  2. 编写SQL Server数据库对象脚本的方法

    In this article, we will explore various ways for scripting SQL Server database objects. 在本文中,我们将探索编 ...

  3. 移动Sql Server数据库的脚本

    前段时间做过这么一件事情,把原本放在c盘的所有数据库(除了sql server系统文件外)文件Move到D盘,主要是为了方便后续管理以及减少磁盘I/O阻塞(C,D是2个独立磁盘). 脚本很简单,在此只 ...

  4. 小麦苗数据库巡检脚本,支持Oracle、MySQL、SQL Server和PG等数据库

    文章目录 一.巡检脚本简介 二.巡检脚本特点 三.巡检结果展示 1.Oracle数据库 2.MySQL数据库 3.SQL Server数据库 4.PG数据库 5.OS信息 四.脚本运行方式 1.Ora ...

  5. SQL Server数据库中使用sql脚本删除指定表的列

    在SQL Server数据库中删除某一列,使用数据库管理工具直接可视化操作是很简单的,但是如果要用sql脚本呢?可能你会说很简单,直接用 ALTER TABLE [要删除的字段所在的表名] DROP ...

  6. 利用Navicat Premium将SQL Server数据库转为My SQL数据库(解决Mac无法打开SQL Server 脚本文件的方法)

    利用Navicat Premium将SQL Server数据库转为My SQL数据库(解决Mac无法打开SQL Server 脚本文件的方法) 安装好Navicat Premium,SQL Serve ...

  7. 从SQL Server数据库转到Oracle数据库的数据脚本处理

    在我们很多情况下的开发,为了方便或者通用性的考虑,都首先考虑SQL Server数据库进行开发,但有时候客户的生产环境是Oracle或者其他数据库,那么我们就需要把对应的数据结构和数据脚本转换为对应的 ...

  8. sql server数据库备份单个表的结构和数据生成脚本

    1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...

  9. powershell连接数据库_PowerShell 连接SQL Server 数据库

    PowerShell 通过ADO.NET连接SQL Server数据库,并执行SQL脚本.工作中整理的一小段脚本,后来没有用上,先记录在这里: 建立数据库连接 查询返回一个DataTatble对象 执 ...

最新文章

  1. Expo大作战(三十)--expo sdk api之Permissions(权限管理模块),Pedometer(计步器api)
  2. 反编译得到的java文件好多错误 val$query什么意思_这部分代码有错么?一直提示输入框$(#msg).val()得到的值未定义...
  3. FxCop的一些规范建议
  4. mybatis_helloword(1)
  5. 汇编(8086cpu): AX,BX,CX,DX寄存器
  6. Codeforces Gym 100650B Countdown (离线)
  7. netstat 命令state值
  8. Python练习题14
  9. PostgreSQL\GPDB 多维数据透视典型案例分享
  10. 创业计划书学习笔记二——创业计划书的目录结构与执行概览部分的写作方法
  11. Python干货分享+百G资源放送!
  12. 小学三年级英语听力测试软件,人教小学三年级英语(下)期末检测题+听力测试...
  13. iptv组播和单播的区别
  14. 华为连接wifi显示wifi未连接服务器,华为路由器wifi连接上不能上网怎么办?
  15. ECSHOP整合第三方登录,QQ登录、新浪微博登录、支付宝登
  16. Spirent Testcenter基本配置使用说明_1022
  17. idea 关于自动导包的设置
  18. 英特尔携手百度飞桨,共创软硬一体人工智能生态
  19. Linux 文件rwx权限问题 chmod 777 XXX 任何人拥有最高权限
  20. 重读《大数据时代》:关于大数据的再认识

热门文章

  1. mysql集群不同步_mysql数据库集群出现1236错误导致主库与从库无法同步的
  2. effective c++_【阅读笔记】Effective C++()
  3. 在 ubuntu 20.04 LTS 上安装 ROS2 执行 rosdep update 命令时出现的问题的解决办法
  4. JavaSE(十九)——equals() 和 == 的区别
  5. java卡片布局显示效果_三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)...
  6. 机器人学习--从路径规划侧面看栅格地图
  7. Spring Data Jpa 实体类自动创建数据库表失败解决
  8. #pragma once与#ifndef #define ...#endif的区别
  9. 光流 | OpenCV中的光流有关函数
  10. 用vmware安装win7虚拟机(windows10系统)