今天在学习《Microsoft SQL Server 2005技术内幕:存储引擎》时,了解到一个知识点:当我们新建一个数据库时,SQL会复制model数据库。不巧,我在本地数据库上建立一个数据库,就发现了这个问题,力求真实性,截图保留痕迹:

随即在网上搜了一个解决方案,代码如下:

declare @sql varchar(100)
while 1=1
begin
select top 1 @sql = 'kill '+cast(spid as varchar(3))
from master..sysprocesses
where spid > 50 and spid <> @@spid
if @@rowcount = 0
break
exec(@sql)
end

在本地上运行之后,问题得到圆满解决。

本文小结:数据库的共享锁(S锁)和排他锁(X锁),是一个非常重要的知识点。在此,先做一下概念,后续再做深入研究:

共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务职能读取数据,不能修改数据。

排他锁(X锁):如果事务T对数据A加上排他锁后,则其他事务不能在对A加任何类型的封锁。获准排他锁的事务既能读取数据,也能修改数据。