SSMS报1222错误

1. 问题

前几天在其中一个QQ群里,群友在SSMS尝试打开表或存储过程对象列表浏览时,遇一个1222的错误,根本无法浏览系统对象。

Figure-1: SSMS报1222错

乍一看,我首先反应是可能是连接远程的SQL Server;如果本地的也出现这种错误,估计是系统对象被锁。后来经过测试,果然把这个错误重视出来。

2. 重现与分析问题

创建一个存储过程,存储过程里面使用了显式事务,但不提交事务,创建时没有报错。但执行时会报错。如果这里这个存储过程被删除了,就会出现这个报错。

Figure-2: 创建测试的存储过程

执行存储过程,报了一个错误。提示BEGIN和COMMIT数目不配置。

Figure-3: 执行存储

最后删除存储过程,没有报错。

Figure-4: 删除存储过程

这时,刷新下SSMS的Object Exploer指定的数据库,然后去打开表或存储过程的列表,就会报1222错误。查询相关的锁,发现测试的存储过程使用的表被和相关页面被锁。

USE AdventureWorks2008R2
GO
SELECT 
 lo.request_session_id AS [session_id]
,DB_NAME(lo.resource_database_id) AS [database_name]
,lo.resource_type
,lo.resource_subtype AS [subtype]
,lo.resource_description AS [description]
,lo.request_mode as [mode]
,lo.request_owner_type as [owner_type]
,lo.request_status as [status]
,CASE WHEN lo.resource_type = ‘OBJECT‘ THEN OBJECT_NAME(lo.resource_associated_entity_id) 
  WHEN lo.resource_associated_entity_id IS NULL OR lo.resource_associated_entity_id = 0 THEN NULL 
  ELSE OBJECT_NAME(p.[object_id]) 
 END AS associated_entity
,wt.blocking_session_id
,wt.resource_description
FROM sys.dm_tran_locks AS lo
LEFT JOIN sys.partitions AS p
ON lo.resource_associated_entity_id = p.partition_id
LEFT JOIN sys.dm_os_waiting_tasks AS wt
ON lo.lock_owner_address = wt.resource_address
WHERE 
lo.request_session_id > 50
AND lo.resource_database_id = DB_ID()
AND lo.request_session_id <> @@SPID
ORDER BY session_id ASC,resource_type ASC;
GO

Code-1: 查询锁

Figure-5: 查询结果

3. 解决与结论

找到执行存储过程的session id,然后Kill掉就行了。所以,使用显式事务时,一定要小心事务要提交或回滚,尤其是使用了多个BEGIN TRAN时。问题是解决了,还是忍不住上网再找下有没有人遇到过类型的问题。果然,人家很久之前就讨论过了。请参考:

http://www.sqlservercentral.com/Forums/Topic310216-5-1.aspx

https://support.microsoft.com/en-us/kb/308518

时间: 2024-10-29 19:11:22

SSMS报1222错误的相关文章

eclipse中配置的tomcat 启动正常 但是访问报404错误

问题描述: 在eclipse中配置的Tomcat,启动是正常的,控制台显示启动成功,也没有报任何错误信息,但是访问的时候就报404错误,然后直接在bin目录下启动startup.bat的方式就是正常的.然后就很纳闷,之后在网上搜了下资料,说是Eclipse的配置出了问题. 解决方案: 1.如果Server里的tomcat启动了,需要先停掉.然后再移除添加的项目 2.之后双击server中配置的tomcat服务器,会弹出如下界面. 3.在Server Locations配置中选择第二个选项,use

MyEclipse导入Maven项目pom文件第一行报错,运行Tomcat报Log4j错误--解决方法

问题描述: 前一段时间电脑第一次导入Maven项目,又是pom文件错,改好后又是运行Tomcat报Log4j错误,一直倒腾了近一个月程序才成功跑起来,太不容易. 也上网查了很长时间,没一个方法能解决我的问题的.特记下解决方法,希望能帮到像我这样的web刚入门者. (刚入门,肯定有说的不对的地方,有错也希望能指出来,我改正) 前期操作:导入项目后clean,install,update,中会报错(因为我已经解决了,所以没有×). 两问题对应解决方法: 1.pom文件第一行大红叉,说明是项目的文件指

log4j的1.2.15版本,在pom.xml中的顶层project报错错误: Failure to transfer javax.jms:jms:jar:1.1 from https://maven-repository.dev.java.net/nonav/repository......

在动态网站工程中,添加了Pom依赖,当添加log4j的1.2.15版本依赖时,在pom.xml中的顶层project报错错误: Failure to transfer javax.jms:jms:jar:1.1 from https://maven-repository.dev.java.net/nonav/repository......,如下图 这是因为 https://maven-repository.dev.java.net/nonav/repository 这个域名已经无法解析了. 而

SSH配置环境都正常,但是每次执行到Action中的方法时就中断了,而且不报任何错误

SSH配置环境都正常,但是每次执行到Action中的方法时就不执行课,而且不报任何错误.Action中的方法封装的是业务层,业务层封装DAO层,检查了一天才发现错误在哪. 在applicationContext.xml中报了一个异常,如: Multiple annotations found at this line: - Exception 'com/dao/StudentDAO : Unsupported major.minor version 51.0' - Exception 'com/

Win7连接共享打印机时,报 0x00000bcb 错误

打印服务器添了台 DocuCentre-VI C3371 (富士施乐3371打印机) 问题描述: Win8.1.Win10等系统均能正常连接,部分 Win7 客户端连接时,报0x00000bcb错误. 解决方法: 后来桌面小哥找到了解决方法,Win7安装 Windows6.1-KB3170455-x64 补丁后,正常连接打印机 (看来及时打补丁,很有必要)

Python List数据打印后,更改List中的值报语法错误

number_list = [1,3,5,7,9] mix = ["python","12"] second_num = number_list[1] one_number = mix[0] print("one is {0} second is {1}".format(one_number, second_num) mix[1] = 100 print(mix) mix[1] = 100 报语法错误.如果注释掉打印语句则没有问题. ......

项目部署到tomcat6.0启动成功后访问页面报500错误解决方法

如题:项目部署到tomcat6.0启动成功后访问页面报500错误解决方法,很奇葩,启动的时候没有任何问题,但输入访问地址后报500,去年国庆放假前夕,为这个问题伤神了半天最后解决了,今天又碰到了,乍一看摸不着头,后面仔细回想了下,迅速解决了问题. 原因:项目里面的jar和tomcat里面lib里面的jar重复了. 解决方法: 1.要么更换tomcat7或之后的版本,之后的版本就不会出现这个问题. 2.去部署之后的tomcat的webapps\项目名\WEB-INF\lib 里面删掉jsp-api

IE6,IE7,IE8下报JS错误:expected identifier, string or number的原因及解决的方法

今天在调试一个页面的时候遇到一个问题,在IE9下执行得非常好的脚本,在IE8里打开的时候弹出错误:expected identifier, string or number,依照经验,应该是定义对象的时候最后一个属性末尾跟了逗号,但检查一遍后没发现有这样的情况,后来细致看了一下报错的位置,发现有定义json对象属性时,属性名没实用引號括起来,于是加了上去再试,问题攻克了. 综上所述,当出现expected identifier, string or number的错误时,你首先应该检查在使用对象

IntelliJ IDEA 文件夹重命名--解决重命名后js文件引用找不到路径报404错误

情景: 说明:ExtJS是我后来的改的名字--原来叫extjs,可是当我把在页面的引用地址改为 src="ExtJS/.."后页面就报404错误,我把它改回之前的extjs就可以(像上面的一样),这个小问题真心烦,百度也没有. 后来 我又改个名字,这时候留意了: 上面红框的选项勾选就可以了.