【问题标题】:How to unlock table in SQL Server 2012?如何解锁 SQL Server 2012 中的表?
【发布时间】:2016-05-11 08:18:40
【问题描述】:

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

select * from tableName 

这需要很长时间,有些时间没有结果。

目前它只有 1 行。搜索后我知道它被锁定了,所以请帮助如何解锁或丢弃它?

【问题讨论】:

  • 什么进程在锁定它?运行您的选择 *,然后在它等待时运行“exec sp_who2”。 BlkBy 列将显示您的选择语句被另一个进程号阻塞。要清除您要运行“KILL 32”的其他进程(以进程 32 为例)
  • 嗨 Rich Benner,我已经使用下面的方法杀死了会话,现在当我触发 select * 查询它给我结果。这是正确的方法吗?以后不会出问题吗?
  • 完全取决于你杀死的会话。您可以查看一下编辑导致锁定的代码以使其不被锁定,或者您可以查看 SQL 中的隔离级别,这将允许您解决这个问题。
  • 好的,谢谢 Rich Benner。
  • 你好 Rich,今天我又在另一个表上出现了同样的问题。这个表已经创建了 6 年,过去从未遇到过任何问题。你能建议我临时解决方案吗?

标签: sql database sql-server-2012


【解决方案1】:

谢谢各位.. 解决了。​​

我在下面的查询中触发了

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'

并通过

杀死了相应的会话
Kill session_ID

【讨论】:

  • 只是给现在发现此问题的每个人的说明:虽然您可以像这样杀死一个锁,但您确实需要找出锁定它的原因和原因。锁的目的是防止令人讨厌的错误(查找“竞争条件”),所以简单地杀死锁而不知道它们的用途是一个坏主意。
【解决方案2】:

获取锁定表的 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

【讨论】:

  • 对我来说,以下命令有效 DBCC opentran() exec sp_who2 68 exec sp_lock 68 kill 68
猜你喜欢
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多