SQL Server 常用近百条SQL语句

文章来源:https://mp.weixin.qq.com/s/pEXio0MNoi1k0w9XgYECNw
作者:廖学强
 
1. sqlserver查看实例级别的信息,使用SERVERPROPERTY函数
select SERVERPROPERTY ('propertyname') 
2. 查看实例级别的某个参数XX的配置
select * from sys.configurations where name='XX' 
3. 更改实例级别的某个参数XX的值
sp_configure 'XX','0' RECONFIGURE WITH OVERRIDEsp_configure显示或更改当前服务器的全局配置设置 。
RECONFIGURE表示SQL Server不用重新启动就立即生效。
使用sp_configure更改设置时,请使用RECONFIGURE语句使更改立即生效,否则更改将在SQL Server重新启动后生效 。RECONFIGURE后面加WITH OVERRIDE表示不管这个值是不是符合要求都会生效,比如recovery interval的范围值是10--60对应sys.configurations.minimum是10、sys.configurations.maximum是60,如果sp_configure 'recovery interval', 75设置为75,超过了这个10--60规范,但是要让75生效,则必须加上WITH OVERRIDE 。
 
4. sqlserver没有系统表可以查询所有数据库下面对象,以下只能在当前数据库下面查
select * from sys.all_objects --查询当前数据库的所有架构范围的对象select * from sys.sysobjects --查询当前数据库的所有对象--sys.all_objects、sys.sysobjects 这种的视图,在每个数据库的系统视图下面都有select * from sys.databases --在当前数据库下可以查询到所有数据库信息,包含是否on状态select * from sys.sysdatabases --在当前数据库下可以查询到所有数据库信息,不包含是否on状态,这个系统视图会在后续的版本中删除--sys.databases、sys.sysdatabases这种的视图,在每个数据库的系统视图下面都有sys.processes --没有这个视图select * from sys.sysprocesses --在当前数据库下可以查询所有正在SQL Server 实例上运行的进程的相关信息,也就是所有数据库上的线程,这个系统视图会在后续的版本中删除 
5. 全局系统视图、单个数据库系统视图
sys.database_files --每个存储在数据库本身中的数据库文件在表中占用一行 。这是一个基于每个数据库的视图 。sys.master_files --master 数据库中的每个文件对应一行 。这是一个系统范围视图 。--sys.database_files、sys.master_files这种的视图,在每个数据库的系统视图下面都有 
6. 一些只存在msdb的系统表,而非系统视图
dbo.backupsetdbo.log_shipping_secondarydbo.restorehistorydbo.sysjobsdbo.sysjobhistory--这些系统表只存在msdb数据库,使用的时候必须加上msdb前缀 
7. sp_lock、sp_who、sp_who2、sp_helptext等一些系统存储过程存在于每个数据库中
 
8. 报告有关锁的信息,会显示实例里面的所有数据库的锁信息、堵塞信息
sp_lock 
9. 提供有关当前用户、 会话和进程的实例中的信息,可以看到会话的状态running、SUSPENDED、sleeping、rollback,sp_who2通过CPUTime、DiskIO可以判断对应的transaction是否很大
sp_who sp_who2 sp_who2 active (可选参数LoginName, 或active代表活动会话数) CPUTime (进程占用的总CPU时间) DiskIO (进程对磁盘读的总次数) LastBatch (客户最后一次调用存储过程或者执行查询的时间) ProgramName (用来初始化连接的应用程序名称,或者主机名) 
10. 查看某个存储过程的内容
sp_helptext pro_name 
11.显示某个线程号发送到sqlserver数据库的最后一个语句
DBCC INPUTBUFFER 
12.假设查询到249被锁给堵塞了,查询被堵塞的SQL语句
DBCC INPUTBUFFER (249) 
13. 查看某个数据库中是否存在活动事务,有活动事务就一定会写日志
DBCC OPENTRAN (dbname) 
14. 监视日志空间
DBCC SQLPERF (LOGSPACE) 
15. 查找无法重用日志中的空间的原因(日志无法截断导致日志文件越来越大,但是可用空间很小,无法收缩)
select name,log_reuse_wait_desc from sys.databases 
16. 查看虚拟日志文件信息
DBCC LOGINFO结果有多少行,代表有多少虚拟日志文件,活动的虚拟日志文件的状态(status)为2
 
17. 修复msdb数据库,比如ssms页面sql server agent丢失或看不了job view history等功能,说明msdb坏了,需要修复
dbcc checkdb (msdb); 
18. 在您当前连接到的 SQL Server 数据库中生成一个手动检查点
CHECKPOINT [ checkpoint_duration ]--checkpoint_duration表示以秒为单位指定手动检查点完成所需的时间,一般不使用这个参数,让数据库自己控制


推荐阅读