【问题标题】:QueryableXEventData and "Watch Live Data" one event behindQueryableXEventData 和 "Watch Live Data" 落后一个事件
【发布时间】:2015-11-04 04:56:48
【问题描述】:

为什么 QueryableXEventData 在配置为读取实时扩展事件流时总是落后一个事件? “观看实时数据”窗口也是如此,因为它也基于 QueryableXEventData(event_stream 目标)。

以防万一下面我创建事件会话脚本。

CREATE EVENT SESSION [XE_Alter] ON SERVER 
    ADD EVENT sqlserver.object_altered(
        ACTION(sqlserver.database_name,sqlserver.sql_text)
        WHERE ([sqlserver].[database_name]='AdventureWorks2014')),
    ADD EVENT sqlserver.object_created(
        ACTION(sqlserver.database_name,sqlserver.sql_text)
        WHERE ([sqlserver].[database_name]='AdventureWorks2014')),
    ADD EVENT sqlserver.object_deleted(
        ACTION(sqlserver.database_name,sqlserver.sql_text)
        WHERE ([sqlserver].[database_name]='AdventureWorks2014'))

【问题讨论】:

  • 一个事件落后于什么?我相当肯定它使用了一种投票方法,所以你会因此落后于真正的直播。
  • 事件流没有使用轮询,它实际上读取了一个内部私有“event_stream”目标,该目标附加到使用内存缓冲区的内部副本以防止性能影响的事件会话。那些只是没有真正实时地冲向目标。
  • @JonathanKehayias 谢谢你的回答。你能建议一个解决方法吗?在 1 分钟内获得 DDL 更新对我的应用程序很重要。
  • 事件通知或 DDL 触发器将是我捕获 DDL 更改的途径,但在不了解您的要求或您正在做的全部范围的情况下,我无法提出太多建议完整的解决方案。
  • @JonathanKehayias 我需要此项目的 DDL 更新通知fsprojects.github.io/FSharp.Data.SqlClient。我在这个项目上工作了 2 年,它在 F# 社区中很受欢迎。如果您可以访问 Pluralsight 视频库,Tomas Petricek 刚刚完成了有关 F# 类型提供程序和数据访问的课程。子章节“Azure 和 SQL/Demo 的类型提供程序:在 SQL 中存储最新电影”涵盖了我的图书馆。

标签: sql-server extended-events


【解决方案1】:

我们最近遇到了同样的问题,并且能够将它(感谢 SQL 团队联系人)追溯到这个 Microsoft Connect 错误“https://connect.microsoft.com/SQLServer/feedback/details/2681550/queryablexeventdata-and-watch-live-data-one-event-behind”。该链接将引用这个 Stackoverflow 条目和一个非常有教育意义的博客 https://itsalljustelectrons.blogspot.ca/2017/01/Hide-And-Seek-With-Extended-Events.html。我们花了几天时间利用人际关系来发现这一点,所以希望这个答案可以为其他人节省时间和精力。 - 肖恩

【讨论】:

    【解决方案2】:

    这已在更高版本的 .NET SQL 客户端库中得到修复。

    托默 (MSFT)。

    【讨论】:

      猜你喜欢
      • 2020-03-29
      • 2020-01-02
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      相关资源
      最近更新 更多