如果当前表正在DML操作,肯定会锁,这个不用了解。如果在不知情的前提下,判断当前表是否被锁,可以试试: declare @name varchar(40) set @name = '表名' if exists ( select DB_NAME(rsc_dbid),OBJECT_NAME(rsc_objid),req_mode from sys.syslockinfo where rsc_type = 5 and OBJECT_NAME(rsc_objid) = @name ) BEGIN print '该表被锁' END else print '该表未锁'
这样的操作数据库服务器会自动维护的,一般不需要人为进行干预的。依赖性很强的相关SQL语句可以通过事物的方式来进行处理。
declare @name varchar(40)
set @name = '表名'
if exists (
select DB_NAME(rsc_dbid),OBJECT_NAME(rsc_objid),req_mode
from sys.syslockinfo
where rsc_type = 5 and OBJECT_NAME(rsc_objid) = @name
)
BEGIN
print '该表被锁'
END
else
print '该表未锁'
http://www.a3gs.com/BookViews.asp?InfoID=2551&classID=822&InfoType=0
中的被锁是指发生阻塞为前提,在这里不适用。