【发布时间】: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