外键和锁定



我试图在空表到满表之间设置外键,但由于某种原因设置未完成,因为它卡住了(以前从未遇到过这种行为)。我正在使用MSSQL。设置外键锁表吗?

创建外键时,SQLserver需要获取父表和子表的SCH-M锁。SCH-M锁与任何锁都不兼容,所以它将等待,直到它被授予锁。这就是为什么您看到进程卡住的原因。

你可以使用下面的查询查询为什么它被阻塞。

——被/wait类型阻塞

select * from sys.dm_exec_requests where session_id='your sessionid where foreign key script is being run'

——锁

select * from sys.dm_tran_locks where request_session_id='<<spids of FK scipt session>>'

最新更新