我有一张很基本的桌子
CREATE TABLE [dbo].[Table_1]( [Test] [int] NULL)
INSERT INTO [dbo].[Table_1]([Test]) Select 1
sp_configure'block process threshold', 1 --> 1 sec
go要创建阻塞,在一个会话中我执行了
Begin tran
Update [dbo].[Table_1]
set [Test]=1和另一次会议
select * from [dbo].[Table_1]当我设置扩展事件时,我得到了下面的
<blocked-process-report monitorLoop="1670">
<blocked-process>
<process id="process1f18028c8" .......>
<executionStack>
<frame line="1" stmtend="56" sqlhandle="0x02000000c7f1523220ed350bb649a019ae7dc2bca448a2000000000000000000000000000000000000000000" />
</executionStack>
<inputbuf>
select * from [dbo].[Table_1]
</inputbuf>
</process>
</blocked-process>
<blocking-process>
<process status="sleeping" spid="59"....>
<executionStack />
<inputbuf>
**DECLARE @edition sysname; SET @edition = cast(SERVERPROPERTY(N'EDITION') as sysname); select case when @edition =
N'SQL Azure' then 2 else 1 end as 'DatabaseEngineType'**** </inputbuf>
</process>
</blocking-process>
</blocked-process-report>天空<<<宣布@版本名称;.虽然它应该是更新语句..。
请帮帮忙
发布于 2016-02-10 07:02:43
此查询由Management运行。我已经检查了这个(13.0.11000.78)。
在最近的版本中,将连接到Azure SQL数据库的功能添加到SSMS中,并且看起来SSMS会在我们将焦点更改为任何选项卡或单击SSMS选项卡时执行此查询。
因此,现在当我们将表从会话1 (创建阻塞)切换到会话2时,下面的查询将针对会话1执行,您可以通过运行DBCC InputBudder(<>)来检查这一点。
声明@edition sysname;将@edition = cast(SERVERPROPERTY(N'EDITION')设置为sysname);选择大小写时@edition =N‘sysname’,然后另有2个1结尾为'DatabaseEngineType‘
因此,当阻塞的进程报告捕获事件时,它将从会话1获得此查询。
现在我们可能会想为什么会话2不是这样的,但是当会话2中的查询正在执行时,SSMS不会触发上面的查询。
https://dba.stackexchange.com/questions/128497
复制相似问题