--=====================================================
--查看当前运行事务
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--常用的查询事务和锁的语句的更多相关文章

  1. Oracle常用SQL查询(2)

    三.查看数据库的SQL 1 .查看表空间的名称及大小 select  t.tablespace_name,  round ( sum (bytes / ( 1024 * 1024 )), 0 ) ts ...

  2. ORACLE 常用SQL查询

    一.ORACLE的启动和关闭 1 .在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su  -  oracle a.启动ORACLE系统 oracle > sv ...

  3. day056-58 django多表增加和查询基于对象和基于双下划线的多表查询聚合 分组查询 自定义标签过滤器 外部调用django环境 事务和锁

    一.多表的创建 from django.db import models # Create your models here. class Author(models.Model): id = mod ...

  4. SQL SERVER 查询性能优化——分析事务与锁(五)

    SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...

  5. 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 问题 ...

  6. mysql,存储引擎,事务,锁,慢查询,执行计划分析,sql优化

    基础篇:MySql架构与存储引擎 逻辑架构图: 连接层: mysql启动后(可以把mysql类比为一个后台的服务器),等待客户端请求,当请求到来后,mysql建立一个一个线程处理(线程池则分配一个空线 ...

  7. 记一次 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 ...

  8. F与Q查询 事务 choices参数

    F与Q查询 F查询 当我们需要将两个字段对应的数据进行比较时就需要用到F查询. select * from book where sold > stock 1.例如需要将售出部分数据和库存数据进 ...

  9. SQL中常用模糊查询的四种匹配模式&&正则表达式

    执行数据库查询时,有完整查询和模糊查询之分.一般模糊语句如下:SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式:1.%:表示任意0个或多个字 ...

随机推荐

  1. HALCON形状匹配(转)

    LIntExport Herror create_shape_model( const Hobject&  Template ,  //reduce_domain后的模板图像 Hlong  N ...

  2. PHP - 闭合标签

    最最开始的时候经常遇到这个问题,就是如果一个文件里面全部都是php代码的话,我写了前闭合和后闭合的时候,文件一多就容易报错,老是说什么有关输出的错误,貌似大概就是header已经发了. 手册上面这个样 ...

  3. <转>杜绝 Defunct进程 僵尸进程

    http://hanover.iteye.com/blog/881972 在测试基于 DirectFB+Gstreamer 的视频联播系统的一个 Demo 的时候,其中大量使用 system 调用的语 ...

  4. 团队合作的Ground Rules

    在每个Sprint中,我们会为Sprint的确定DOD(Definition of Done,完成的定义).在团队成员合作的过程中,我们也需要定义合作规则,这就是Ground rules,就像小学生守 ...

  5. python开源项目Scrapy抓取文件乱码解决

    scrapy进行页面抓去的时候,保存的文件出现乱码,经过分析是编码的原因,只需要把编码转换为utf-8即可,代码片段 ...... import chardet ......         cont ...

  6. git服务器搭建问题

    CentOS6.5本地搭建. 对于图形化的系统,可以联网,然后CTRL+ALT+F2可以切换到命令行,CTRL+ALT+F1可以切换回桌面图形化. 可以用SSH和FTP来连接服务器和传文件.   (1 ...

  7. 【HDU 6191】Query on A Tree 【可持久化字典树】

    题目 给出一棵有n个结点的树,树根是1,每个结点给出一个value.然后给出q个询问,每个询问给出两个整数u和x,你要在以u结点为根的子树中找出一个结点v,使得val[v] xor x最大, 并输出这 ...

  8. Nginx源码完全注释(8)ngx_errno.c

    errno.h中的strerror(int errno)可以确定指定的errno的错误的提示信息.在 Nginx 中,将所有错误提示信息预先存储在一个数组里,而预先确定这个数组的大小,是在自动化脚本中 ...

  9. Java-实体与集合转换

    import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector ...

  10. 从顶端插入,滚动展示(Demo):

    新闻滚动,从顶端插入: <!DOCTYPE html> <html> <head> <script src="/jquery/jquery-1.11 ...