数据库中某个视图锁死现象(SQL Server : error 1222)

问题现象

正常远程连接上数据库后,发现某个视图一直无法打开,且弹出“Lock Request time out period exceeded.(SQL Server : error 1222)”的错误提示信息。

问题分析

通过上面的错误提示信息可以看出,该视图被锁死了,所以无法打开。那么如何造成该问题现象呢?
经过分析发现,天猫运营人员在后台管理系统中正使用该视图来筛选商品库存信息NQTY,包括NQTY=0的情况,与此同时,后台开发人员正在优化数据库,将该视图的筛选条件由NQTY>=0改成NQTY>0,进而产生了系统资源的竞争,造成了该问题中视图锁死现象。

解决方法

  • 第一步:执行以下sql语句查找数据库中该锁死视图对应的进程号,即spid。
select * from master..sysprocesses where DB_NAME(dbid)='数据库名称' and spid<>@@SPID and dbid<>0 

其中,master..sysprocesses是用来查找阻塞或锁死的视图,spid为进程ID,dbid为当前会话ID。

  • 第二步:执行以下语句kill掉该进程ID。
 kill spid(kill掉当前进程ID)

补充说明:也可以采用重启SQL Server服务器来暴力解决该问题现象,但会影响到数据库中其他表或视图的使用,请根据实际业务情况做出权衡选择。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值