SQLServer 常备实用的SQL查询语句

SQLServer 常备实用的SQL查询语句

在这里插入图片描述

查询表字段及类型

SELECT	b.name AS tablename,
		a.name AS columnname,
		c.name AS typename,
		a.max_length AS typelength 
FROM sys.columns a 
INNER JOIN sys.tables b 
ON b.object_id=a.object_id 
INNER JOIN sys.types c 
ON c.system_type_id=a.system_type_id 
WHERE b.name='TableName'
ORDER BY b.name,a.column_id

查询 执行过的SQL语句

SELECT TOP 11 --这里你想显示多少条看你填多少咯
       ST.text AS '执行的SQL语句',
       QS.execution_count AS '执行次数',
       QS.total_elapsed_time AS '耗时',
       QS.total_logical_reads AS '逻辑读取次数',
       QS.total_logical_writes AS '逻辑写入次数',
       QS.total_physical_reads AS '物理读取次数',       
       QS.creation_time AS '执行时间' ,  
       QS.*
FROM sys.dm_exec_query_stats QS
       CROSS APPLY 
			sys.dm_exec_sql_text(QS.sql_handle) ST
WHERE QS.creation_time BETWEEN '2015-08-01 00:00:00' AND '2019-09-02 11:00:00' 
ORDER BY
     QS.total_elapsed_time DESC 

查询某个表被哪些存储过程使用到

	SELECT DISTINCT object_name(id) 
	FROM syscomments 
	WHERE id IN (
		SELECT object_id 
		FROM sys.objects 
		WHERE TYPE ='P'
	) AND text LIKE '%TableName%'

查找哪些存储过程对该表做了新增(更新、删除)操作

	SELECT DISTINCT object_name(id) 
	FROM syscomments 
	WHERE id IN (
		SELECT object_id 
		FROM sys.objects 
		WHERE TYPE ='P'
	) AND text LIKE '%insert intoTableName%'
  • 这里和上面的 TableName 是你要查询的表名

该计划任务会执行哪些存储过程

	SELECT top 1 * 
	FROM msdb.dbo.sysjobhistory  AS a 
	JOIN msdb.dbo.sysjobs AS b 
	ON a.job_id=b.job_id 	
	WHERE b.name = '你要查询的计划任务名称' AND step_id = 7 AND run_status = 1 
	ORDER BY run_date DESC

存储过程被哪些计划任务调用

	SELECT * 
	FROM msdb.dbo.sysjobs JOB WITH( NOLOCK) 
	INNER JOIN msdb. dbo.sysjobsteps STP WITH(NOLOCK ) 
	ON STP .job_id = JOB .job_id 
	WHERE STP .command LIKE '%你要查询的存储过程%'

查询死锁

	-- 查询死锁
	SELECT    
	    request_session_id spid,   
	    OBJECT_NAME(resource_associated_entity_id) tableName    
	FROM    
	    sys.dm_tran_locks   
	WHERE    
	    resource_type='OBJECT' 
	--复制代码 spid
	 --杀死死锁进程
	KILL 354 

查询触发器

SELECT 	triggers.name AS [触发器],
		tables.name AS [表名],
		triggers.is_disabled AS [是否禁用],
		triggers.is_instead_of_trigger AS [触发器类型],
		CASE WHEN triggers.is_instead_of_trigger = 1 THEN 'INSTEAD OF'
			WHEN triggers.is_instead_of_trigger = 0 THEN 'AFTER'
		ELSE NULL
		END AS [触发器类型描述]
FROM sys.triggers triggers
INNER JOIN sys.tables tables 
ON triggers.parent_id = tables.object_id
WHERE triggers.type ='TR'
ORDER BY triggers.create_date

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值