记一次SQL Server创建数据库失败

在执行create database test后,报错Could not obtain exclusive lock on database 'model'. Retry the operation later.
通过在查看SQL Server的官方说明,显示引起该问题的原因是:
SQL Server在创建数据库时,会使用model数据库的副本来初始化数据库和元数据,此时必须以独占方式锁定model数据库防止从model数据库复制更改的数据,否则无法保证从数据一致性。
因此可以检查下,该model是否被其他会话占用:

IF
EXISTS(SELECT request_session_id FROM
sys.dm_tran_locks
WHERE resource_database_id =
DB_ID('Model'))
PRINT
'Model Database being used by some other session'
ELSE
PRINT
'Model Database not used by other session'

执行结果是:

Model Database being used by some other session

当model被其他会话占用时,可使用下面的语句查询是哪些会话占用

SELECT request_session_id FROM
sys.dm_tran_locks WHERE resource_database_id =DB_ID('Model');
DBCC INPUTBUFFER(spid)

结果显示有51,53, 56占用,这时只需要移除掉即可创建数据库

kill 51
kill 53
kill 56
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值