SQL SERVER 锁定的实例
---实例DB:AdventureWorks2014
--- 创建view DBLocks
USE [AdventureWorks2014]
GO /****** Object: View [dbo].[DBlocks] Script Date: 8/17/2016 6:38:16 PM ******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO CREATE VIEW [dbo].[DBlocks] AS
SELECT request_session_id as spid,
db_name(resource_database_id) as dbname,
CASE
WHEN resource_type = 'OBJECT' THEN
object_name(resource_associated_entity_id)
WHEN resource_associated_entity_id = 0 THEN 'n/a'
ELSE object_name(p.object_id)
END as entity_name, index_id,
resource_type as resource,
resource_description as description,
request_mode as mode, request_status as status
FROM sys.dm_tran_locks t LEFT JOIN sys.partitions p
ON p.partition_id = t.resource_associated_entity_id
WHERE resource_database_id = db_id();
GO
实例1: Read Commit(SQL SERVER默认隔离级别) 隔离级别下的SELECT
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN TRAN
SELECT * FROM [Production].[Product] WHERE Name ='Reflector';
SELECT * FROM [dbo].[DBlocks] WHERE spid= @@SPID
COMMIT TRAN
DBLocks 的输出结果
| spid | dbname | entity_name | index_id | resource | mode | status |
| 58 | AdventureWorks2014 | sysrowsets | NULL | OBJECT | Sch-S | GRANT |
| 58 | AdventureWorks2014 | n/a | NULL | DATABASE | S | GRANT |
| 58 | AdventureWorks2014 | DBlocks | NULL | OBJECT | IS | GRANT |
Product 表的数据没有LOCK,所以批处理执行select 操作获得了共享锁。SQL SEVER一旦读完数据之后立即释放共享锁。因此执行DBLoks试图时,上面提到的共享锁不存在了。
实例2: 可重复读隔离级别下的SELECT
SQL 批处理
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
BEGIN TRAN
SELECT * FROM [Production].[Product] WHERE Name ='Reflector';
SELECT * FROM [dbo].[DBlocks] WHERE spid= @@SPID
COMMIT TRAN
DBLocks 的输出结果
| spid | dbname | entity_name | index_id | resource | description | mode | status |
| 58 | AdventureWorks2014 | sysrowsets | NULL | OBJECT | Sch-S | GRANT | |
| 58 | AdventureWorks2014 | n/a | NULL | DATABASE | S | GRANT | |
| 58 | AdventureWorks2014 | Product | 1 | PAGE | 0.590972222 | IS | GRANT |
| 58 | AdventureWorks2014 | DBlocks | NULL | OBJECT | IS | GRANT | |
| 58 | AdventureWorks2014 | Product | 1 | KEY | (b031e2166063) | S | GRANT |
| 58 | AdventureWorks2014 | Product | 3 | KEY | (489415cc61a4) | S | GRANT |
| 58 | AdventureWorks2014 | Product | NULL | OBJECT | IS | GRANT | |
| 58 | AdventureWorks2014 | Product | 3 | PAGE | 3.626388889 | IS | GRANT |
由于Product表上有聚集索引,数据行就是页级别的全部索引行,返回两个数据行上的锁是键锁,用来寻找相关数据。在Product表上存在Name上的非聚集索引,可以通过Index_ID字段的值来区分聚集所以和非聚集索引,Index_ID=1表示数据行和聚集索引,Index_ID=3表示非聚集索引。由于事务的隔离级别是可重复读,共享锁要等到事务结束为止。NOTE:索引行拥有共享锁(S)而数据分页,索引分页以及表本身拥有意向共享锁(IS)。
实例3:可串行隔离级别下的SELECT
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRAN
SELECT * FROM [Production].[Product] WHERE Name LIKE 'Reflect%';
SELECT * FROM [dbo].[DBlocks] WHERE spid= @@SPID
COMMIT TRAN
DBLocks的输出结果
| spid | dbname | entity_name | index_id | resource | description | mode | status |
| 58 | AdventureWorks2014 | sysrowsets | NULL | OBJECT | Sch-S | GRANT | |
| 58 | AdventureWorks2014 | n/a | NULL | DATABASE | S | GRANT | |
| 58 | AdventureWorks2014 | Product | 1 | PAGE | 0.590972222 | IS | GRANT |
| 58 | AdventureWorks2014 | n/a | NULL | METADATA | schema_id = 7 | Sch-S | GRANT |
| 58 | AdventureWorks2014 | DBlocks | NULL | OBJECT | IS | GRANT | |
| 58 | AdventureWorks2014 | Product | 1 | KEY | (b031e2166063) | S | GRANT |
| 58 | AdventureWorks2014 | Product | 3 | KEY | (489415cc61a4) | RangeS-S | GRANT |
| 58 | AdventureWorks2014 | Product | NULL | OBJECT | IS | GRANT | |
| 58 | AdventureWorks2014 | Product | 3 | PAGE | 3.626388889 | IS | GRANT |
| 58 | AdventureWorks2014 | Product | 3 | KEY | (53bdd09497c4) | RangeS-S | GRANT |
| 58 | AdventureWorks2014 | NULL | NULL | OBJECT | IS | GRANT |
SQL SERVER 锁定的实例的更多相关文章
- 由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。该连接将关闭。
错误:由于启动用户实例的进程时出错,导致无法生成SQL Server的用户实例. 原因:添加安装SQLEXPRESS时,估计装在了不同的目录下: 解决方法:关闭Sqlserver及相关的程序,删除目录 ...
- 由于检索用户的本地应用程序数据路径时出错,导致无法生成 SQL Server 的用户实例
/”应用程序中的服务器错误. 由于检索用户的本地应用程序数据路径时出错,导致无法生成 SQL Server 的用户实例.请确保该用户在此计算机上有本地用户配置文件.该连接将关闭. 堆栈跟踪: [Sql ...
- 如何查看SQL Server的数据库实例名
其实一般默认就是MSSQLSERVER (注意,就是英文大写). 点击开始,运行,services.mcs 然后查阅所有SQL Server的项,其中括号中字符串的就是实例名 reference: ...
- Sql Server 服务器名称\实例名称 无法连接 Server Name\Instance Name
解决步骤: 1: Sql Server是否已经启动. 2: 检查Sql Server服务器是否开启TCP/IP协议. 侦听的默认端口为1433 3: ping 数据库 ...
- 【Kettle】4、SQL SERVER到SQL SERVER数据转换抽取实例
1.系统版本信息 System:Windows旗舰版 Service Pack1 Kettle版本:6.1.0.1-196 JDK版本:1.8.0_72 2.连接数据库 本次实例连接数据库时使用全局变 ...
- PCB SQL SERVER 正则应用实例
我们用过SQL SERVER的都知道,SQL SERVER它本身是不自带正则表达式的,因为没有,所以基本都没用过啊, 但我们在C#中对文本匹配用正则的方式处理非常好用,省得你写一堆代码实现匹配,多简洁 ...
- SQL Server 修改默认实例
有一台服务器,里面装了两个版本的数据库,一个2008(实例名称为MSSQLSERVER),一个2017(实例名称为MSSQLSERVER01): Sql server 数据库可以安装多个数据库实例,但 ...
- C#操作access和SQL server数据库代码实例
在C#的学习中,操作数据库是比较常用的技术,而access和sql server 数据库的操作却有着不同.那么,有哪些不同呢? 首先,需要引用不同的类.因为有着不同的数据引擎. access:usin ...
- MS SQL SERVER 2008 R2 实例服务启动出现10048错误解决办法
由于个人癖好,把MSSQLSERVER服务禁止了开机启动,每次需要的时候就输入CMD命令开启.今天在开启的时候,系统提示“发生服务特定错误:10048”. 于是打开SQL Server配置管理器,发现 ...
随机推荐
- openstack python sdk list tenants get token get servers
1,openstack python sdk 获取token 获取租户tenants projects #!/bin/bash export OS_PROJECT_DOMAIN_ID=default ...
- linux中ctime,mtime,atime的区别
st_atime Time when file data was last accessed. Changed by the following functions: ...
- Runtime 10种用法
来源:haojingxue_iOS 链接:http://www.jianshu.com/p/3182646001d1 阅读了多篇运行时的文章,感觉都很不错,从几篇文章里面提取一些个人认为比较重要的,偏 ...
- 【转】C++ 笔试面试题目
原文:http://blog.csdn.net/txgc1009/article/details/6700830 许多面试题看似简单,却需要深厚的基本功才能给出完美的解答.企业要求面试者写一个最简单的 ...
- android自动打包方法(ant+proguard+签名)
前段时间做了一个android的网游项目,现在优化减少体积和防止别人反编译,需要把编译后.class进行混淆,开始在网上看了一些关于 ProGuard的介绍,基本上都是使用ADT自带的打包方式,那个打 ...
- iOS开发——面试笔试精华(四)
面试笔试精华(四) 1. Object-C有多继承吗?没有的话用什么代替? 1> OC是单继承,没有多继承 2> 有时可以用分类和协议来代替多继承 2. ...
- android137 360 双击三击事件
package com.itheima52.doubleclick; import android.app.Activity; import android.os.Bundle; import and ...
- There is no Action mapped for action name XXX. - [unknown location]
今天被这个问题费了不少时间,原因是缺少了 struts2-json-plugin-2.3.1.2.jar 包 当然,有时候也可能是缺少其他包, 把这个包添加到lib文件夹后还要刷新,clean一下,因 ...
- 安装opencms时遇到问题及解决方法
1. MySQL system variable 'max_allowed_packet' http://blog.csdn.net/hqa_ii/article/details/6872367 安装 ...
- Top 10 Algorithms for Coding Interview--reference
By X Wang Update History:Web Version latest update: 4/6/2014PDF Version latest update: 1/16/2014 The ...