Transaction And Lock--常用的查询事务和锁的语句
--=====================================================
--查看当前运行事务
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT es.session_id, es.login_name, es.host_name, est.text
, cn.last_read, cn.last_write, es.program_name
FROM sys.dm_exec_sessions es
INNER JOIN sys.dm_tran_session_transactions st
ON es.session_id = st.session_id
INNER JOIN sys.dm_exec_connections cn
ON es.session_id = cn.session_id
CROSS APPLY sys.dm_exec_sql_text(cn.most_recent_sql_handle) est
LEFT OUTER JOIN sys.dm_exec_requests er
ON st.session_id = er.session_id
AND er.session_id IS NULL --=====================================================
--使用SP_WHO和SP_WHO2来查看回话和阻塞
--=====================================================
EXEC SP_WHO
--=====================================================
EXEC SP_WHO2
--=====================================================
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
ORDER BY er.blocking_session_id DESC,er.session_id --====================================================
--使用SP_LOCK来获取锁
--查找某个对象上的锁
DECLARE @T TABLE
(
SPID BIGINT,
DataBaseID INT,
OBJECTID BIGINT,
IndexID BIGINT,
LockType VARCHAR(20),
LockResource NVARCHAR(200),
LockMode NVARCHAR(20),
LockStats NVARCHAR(200)
)
INSERT INTO @T
EXEC SP_LOCK
SELECT SPID
,DataBaseID
,DB_NAME(DataBaseID) AS DataBaseName
,OBJECTID
,OBJECT_Name(OBJECTID,DataBaseID) ObjectName
,IndexID
,LockType
,LockResource
,LockMode
,LockStats
FROM @T --==================================================
--sp_who_lock
USE master
GO
IF EXISTS (SELECT * FROM dbo.sysobjects
WHERE id = OBJECT_ID(N'[dbo].[sp_who_lock]')
AND OBJECTPROPERTY(id, N'IsProcedure') = 1
)
DROP PROCEDURE [dbo].[sp_who_lock]
GO
GO
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 sysprocesses WHERE blocked>0 ) a
WHERE NOT EXISTS(
SELECT * FROM
(
SELECT * FROM sysprocesses
WHERE blocked>0
) b
WHERE a.blocked=SPID)
UNION SELECT SPID,blocked
FROM 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
BEGIN
SELECT '引起数据库死锁的是: '
+ CAST(@bl AS VARCHAR(10))
+ '进程号,其执行的SQL语法如下'
END
ELSE
BEGIN
SELECT '进程号SPID:'+
CAST(@spid AS VARCHAR(10))+ '被'
+ '进程号SPID:'+ CAST(@bl AS VARCHAR(10))
+'阻塞,其当前进程执行的SQL语法如下'
END
DBCC INPUTBUFFER (@bl ) END -- 循环指针下移
SET @intCounter = @intCounter + 1
END DROP TABLE #tmp_lock_who RETURN 0
END EXEC master.dbo.sp_who_lock --==========================================================
--查看各回话相关的锁
SELECT S.session_id
,DB_NAME(L.resource_database_id) AS resource_database_name
,L.request_type
,L.request_mode
,L.request_status
,L.resource_description
,S.last_request_start_time
,S.last_request_end_time
,S.status
,S.host_name
FROM sys.dm_tran_session_transactions ST
INNER JOIN sys.dm_tran_locks L
ON ST.session_id=L.request_session_id
INNER JOIN sys.dm_exec_sessions S
ON S.session_id=ST.session_id
ORDER BY S.last_request_end_time ASC
--===========================================
--查看数据库上的隐形事务
--由大菠萝(肖磊)提供
SELECT a.session_id,
b.name,
c.client_net_address,
c.client_tcp_port,
b.transaction_begin_time
FROM sys.dm_tran_session_transactions
a JOIN sys.dm_tran_active_transactions b
ON a.transaction_id=b.transaction_id
JOIN sys.dm_exec_connections c(nolock)
ON a.session_id=c.session_id
WHERE b.name='implicit_transaction'
AND a.is_user_transaction=1
ORDER BY b.transaction_begin_time
Transaction And Lock--常用的查询事务和锁的语句的更多相关文章
- Oracle常用SQL查询(2)
三.查看数据库的SQL 1 .查看表空间的名称及大小 select t.tablespace_name, round ( sum (bytes / ( 1024 * 1024 )), 0 ) ts ...
- ORACLE 常用SQL查询
一.ORACLE的启动和关闭 1 .在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle > sv ...
- day056-58 django多表增加和查询基于对象和基于双下划线的多表查询聚合 分组查询 自定义标签过滤器 外部调用django环境 事务和锁
一.多表的创建 from django.db import models # Create your models here. class Author(models.Model): id = mod ...
- SQL SERVER 查询性能优化——分析事务与锁(五)
SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...
- Transaction recovery: lock conflict caught and ignored
Transaction recovery: lock conflict caught and ignored环境:RAC 4节点.oracle 11.2.0.4.redhat 5.9 64bit 问题 ...
- mysql,存储引擎,事务,锁,慢查询,执行计划分析,sql优化
基础篇:MySql架构与存储引擎 逻辑架构图: 连接层: mysql启动后(可以把mysql类比为一个后台的服务器),等待客户端请求,当请求到来后,mysql建立一个一个线程处理(线程池则分配一个空线 ...
- 记一次 oracle 12.2 RAC : Transaction recovery: lock conflict caught and ignored
节点一 alert日志: PDB(17):Transaction recovery: lock conflict caught and ignored PDB(17):Transaction reco ...
- F与Q查询 事务 choices参数
F与Q查询 F查询 当我们需要将两个字段对应的数据进行比较时就需要用到F查询. select * from book where sold > stock 1.例如需要将售出部分数据和库存数据进 ...
- SQL中常用模糊查询的四种匹配模式&&正则表达式
执行数据库查询时,有完整查询和模糊查询之分.一般模糊语句如下:SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式:1.%:表示任意0个或多个字 ...
随机推荐
- python算法之选择排序
选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大 ...
- flutter android keystore
keytool -genkey -v -keystore E:/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key k ...
- Linux虚机密码破解
1 重启机器,在机器读秒时按回车键 2 选择要启动的操作系统按 e 3 选择kernel所在行按 e 4 末尾输入空格 single 5 敲回车 在按 b 系统将进入单用户模式 然后 可以 通过 p ...
- 如何设置tomcat,直接通过IP 访问
找到tomcat的主目录,进入conf文件夹,找到server.xml文件,并打开: 修改tomcat的监听端口为80端口: 在server.xml文件中找到: <Connector por ...
- spring是什么
spring是一个容器,用于降低代码间的耦合度,根据不同的代码采用了ioc和aop这二种技术来解耦合. 比如转账操作:a用户少1000,b用户多1000.这是主业务逻辑 IOC 涉及到的事务,日志 ...
- VUE,使用物理引擎Box2D设计类愤怒小鸟的击球游戏--基本架构设置
- Python_10-异常处理
目录: 1.1 python标准异常1.2 简介1.3 try语句 1.3.1 使用try和except语句来捕获异常 1.3.2 该种异常处理语法的规则 1.3.3 使用tr ...
- 111. Minimum Depth of Binary Tree (Tree; DFS)
Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...
- ubuntu tensorflow cpu Faster-RCNN配置参考
https://blog.csdn.net/qq_36652619/article/details/85006559 (参考) https://blog.csdn.net/zcy0xy/art ...
- 关于《Spark快速大数据分析》运行例子遇到的报错及解决
一.描述 在书中第二章,有一个例子,构建完之后,运行: ${SPARK_HOME}/bin/spark-submit --class com.oreilly.learningsparkexamples ...