如何在SQL Server 2012中解锁表?

Pus*_*aju 10 sql database sql-server-2012

我在SQL Server 2012中创建了表,当我执行时

select * from tableName 
Run Code Online (Sandbox Code Playgroud)

它花了很长时间,有些时间没有结果.

目前它只有1排.搜索后我知道它已被锁定所以请帮助解锁或丢弃它?

Pus*_*aju 19

谢谢大家..它解决了.

我解雇了以下问题

SELECT
    OBJECT_NAME(P.object_id) AS TableName,
    Resource_type,
    request_session_id
FROM
    sys.dm_tran_locks L
JOIN
    sys.partitions P ON L.resource_associated_entity_id = p.hobt_id
WHERE   
    OBJECT_NAME(P.object_id) = 'P1Chronolog_IncidentActivityUpdates'
Run Code Online (Sandbox Code Playgroud)

并杀死了各自的会议

Kill session_ID
Run Code Online (Sandbox Code Playgroud)

  • 请注意现在发现此问题的每个人:虽然您可以像这样杀死一个锁,但您确实需要找出是什么锁定了它以及为什么。锁的目的是防止讨厌的错误(查找“竞争条件”),因此简单地杀死锁而不知道它们的用途是一个坏主意。 (2认同)

dfo*_*tun 5

获取锁定表的 SPID 并将其杀死,见下文

    SELECT      r.start_time [Start Time],session_ID [SPID],
            DB_NAME(database_id) [Database],
            SUBSTRING(t.text,(r.statement_start_offset/2)+1,
            CASE WHEN statement_end_offset=-1 OR statement_end_offset=0 
            THEN (DATALENGTH(t.Text)-r.statement_start_offset/2)+1 
            ELSE (r.statement_end_offset-r.statement_start_offset)/2+1
            END) [Executing SQL], 
            Status,command,wait_type,wait_time,wait_resource, 
            last_wait_type
FROM        sys.dm_exec_requests r
OUTER APPLY sys.dm_exec_sql_text(sql_handle) t
WHERE       session_id != @@SPID -- don't show this query
AND         session_id > 50 -- don't show system queries
ORDER BY    r.start_time


DBCC opentran()

exec sp_who2 68
exec sp_lock 68
kill 68
Run Code Online (Sandbox Code Playgroud)