首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阻塞扩展事件

阻塞扩展事件
EN

Database Administration用户
提问于 2016-02-07 03:31:01
回答 1查看 688关注 0票数 3

我有一张很基本的桌子

代码语言:javascript
复制
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

要创建阻塞,在一个会话中我执行了

代码语言:javascript
复制
Begin tran
Update [dbo].[Table_1]
set [Test]=1

和另一次会议

代码语言:javascript
复制
select * from [dbo].[Table_1]

当我设置扩展事件时,我得到了下面的

代码语言:javascript
复制
<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>

天空<<<宣布@版本名称;.虽然它应该是更新语句..。

请帮帮忙

EN

回答 1

Database Administration用户

发布于 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不会触发上面的查询。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/128497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档