Sql 现在插入查询导致其他查询不再工作

Sql 现在插入查询导致其他查询不再工作,sql,sql-server,Sql,Sql Server,我在我的SQL Server数据库上运行了此查询: begin transaction; insert into [db].[a].[Table1] ( [IsDeleted], [itemId], [regionId], [deskId], [LastUpdated], [LastUpdatedby]) select [IsDeleted], [itemId], [regionId], 11, [LastUpdated], [LastUpdatedby] from [db].[a].[Tab

我在我的SQL Server数据库上运行了此查询:

begin transaction;
insert into [db].[a].[Table1] ( [IsDeleted], [itemId], [regionId], [deskId], [LastUpdated], [LastUpdatedby])
select  [IsDeleted], [itemId], [regionId], 11, [LastUpdated], [LastUpdatedby]
from [db].[a].[Table1]
where deskId = 12;

update [db].[a].[Table1]
set deskId = 3
where deskId = 12;
commit transaction;
有些记录本应更改,但它显示(O行受影响)

我现在去做一个:

Select * from [db].[a].[Table1]
现在,它只是在“执行查询”中旋转几分钟,在站点中没有结束

  • 是否有人认为我的第一个查询有任何错误,会导致某种类型的锁问题
  • 还有,现在我处于这种状态,我该如何摆脱它呢

  • 第一个脚本是否仍在实际执行Update语句?如果是这样,在选择尚未提交的行时,这是意料之中的

    如果没有,而且它显然是空闲的,那么我认为您无法运行第一个脚本的全部内容。无论如何,事务似乎仍处于打开状态,需要回滚或提交

    您可以通过从sys.dm_os_waiting_tasks运行
    select*并查看
    blocking_session_id
    来确认这一点,或者如果您在SQL2000上,则需要使用
    exec sp_who2

    这是管理工作室吗?如果是这样,请使用insert语句转到窗口,并(在更新尚未进行的情况下)根据需要运行
    rollback
    commit


    如果您在SSMS中选择一些文本,然后运行,它将只执行所选文本。这可能解释了如何只运行脚本的一部分。

    第一个脚本是否仍在实际执行Update语句?如果是这样,在选择尚未提交的行时,这是意料之中的

    如果没有,而且它显然是空闲的,那么我认为您无法运行第一个脚本的全部内容。无论如何,事务似乎仍处于打开状态,需要回滚或提交

    您可以通过从sys.dm_os_waiting_tasks运行
    select*并查看
    blocking_session_id
    来确认这一点,或者如果您在SQL2000上,则需要使用
    exec sp_who2

    这是管理工作室吗?如果是这样,请使用insert语句转到窗口,并(在更新尚未进行的情况下)根据需要运行
    rollback
    commit


    如果您在SSMS中选择一些文本,然后运行,它将只执行所选文本。这可能解释了如何只运行脚本的一部分。

    如果仍在更新第一个表,则读取将不起作用;如果停止查询(第一个),它将回滚,但这可能需要一些时间

    将选择更改为:

    Select * from [db].[a].[Table1] WITH(NOLOCK)
    
    它应该马上回来


    希望这对您有所帮助

    如果您仍在更新第一个表,那么读取将不起作用;如果停止查询(第一个),它将回滚,但这可能需要一些时间

    将选择更改为:

    Select * from [db].[a].[Table1] WITH(NOLOCK)
    
    它应该马上回来



    希望这有助于

    该查询确实有效,但我仍然希望摆脱我所处的这种“状态”,因为使用(nolock)进行删除会返回一些行,但只会得到stuck您必须提交或回滚活动事务;它必须仍然处于活动状态或在某处运行。或者,使用活动监视器来确定锁定的内容(当select运行时不带(nolock))似乎没有运行活动监视器的权限您可以阅读全部注释吗?您必须提交或回滚活动事务;它必须仍然处于活动状态或在某处运行。该查询确实有效,但我仍然希望摆脱我所处的“状态”,因为使用(nolock)删除会返回一些行,但仅返回stuck。您必须提交或回滚活动事务;它必须仍然处于活动状态或在某处运行。或者,使用活动监视器来确定锁定的内容(当select运行时不带(nolock))似乎没有运行活动监视器的权限您可以阅读全部注释吗?您必须提交或回滚活动事务;它必须仍然处于活动状态或在某处运行。@Martin Smith-我收到一个错误:用户没有执行此操作的权限。还有其他建议吗?需要更多细节吗?查询是否仍在运行?这两个查询都是在SSM中执行的吗?您是服务器上的系统管理员吗?当您得到权限错误时,您运行了什么命令?@Martin Smith-上面的第一个查询在返回时(受影响的0行)明确完成(这是不正确的,但这是另一个故事)。我怎样才能进去取下卡住的锁。(根据另一个答案,如果我把它放在(nolock)上,它会起作用fine@ooo受影响的
    0行
    将仅用于insert语句。更新部分应该有另一条消息(除非它仍在运行)。我猜您评论中的权限位是在您尝试查看
    sys.dm_os_waiting_tasks
    时,而不是在您尝试回滚时。在management studio中,如果它仍在执行,则会在状态栏中显示“执行”,并且“执行”按钮将被禁用,取消按钮将被启用。您现在是这样吗n您原来的查询窗口?@Martin Smith-我收到一个错误:用户没有执行此操作的权限。还有其他建议吗?需要更多详细信息吗?查询是否仍在运行?两个查询是否都在SSMS中执行?您是服务器上的系统管理员吗?当您收到权限错误时,您运行了什么命令?@Martin Smith-第一个查询当返回时(受影响的0行)(这是不正确的,但这是另一个故事)。我如何才能进入并移除一些卡住的锁…(根据另一个答案,如果我使用(nolock)它起作用了fine@ooo受影响的
    0行
    将仅用于insert语句。更新部分应该有另一条消息(除非它仍在运行)。我猜您的评论中的权限位是在您尝试查看
    sys.dm_os_waiting_tasks
    时,而不是在您尝试回滚时。在management studio中,如果它仍在执行,则会显示在