问题标签 [extended-events]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server-2008 - SQL Server 2008 阻止进程在扩展事件中报告错误
尝试在 SQL Server 2008 中创建扩展事件以捕获被阻止的进程报告。这是我正在使用的脚本:
当我运行脚本时,我得到了这个错误:
消息 25623,级别 16,状态 1,第 7 行
事件名称“sqlserver.blocked_process_report”无效,或找不到对象
我相信要么我没有正确处理这个问题,要么blocked_process_report
在这个版本的 SQL Server 中不可用。
当我运行此查询时:
...没有结果。
谁能确定地为我确认 A)blocked_process_report 是否确实在 SQL Server 2008 中可用,以及 B)如果我的上述代码需要更改?
提前致谢
sql-server - SQL Server 扩展事件:使用 SP 调用跟踪异常
我需要跟踪失败的远程过程调用(RPC 启动/完成事件)。
- 具有所有输入/输出参数的精确过程调用语句
- 过程抛出的异常
我尝试了什么:
它易于跟踪确切的 RPC 开始/完成事件
使用 error_reported 事件很容易跟踪错误
但是,我找不到如何在一个地方跟踪两者的方法。
PS 我不能使用输出参数返回错误并使用 RPC 完成事件跟踪它。
sql-server - 如何清除 SQL Server 扩展事件事件文件
如何清除存储在文件中的SQL Server扩展事件?
背景
SQL Server 扩展事件事件文件目标的文件存储在哪里?
我想删除几个月的日志文件;但 SQL Server 没有告诉我文件在哪里:
我会遵循 Microsoft 的 SQL Server 论坛上的建议:
清除文件目标中的事件?
如果不再需要,只需停止会话并删除 .xel 文件。
尝试#3
我尝试做任何称职的用户界面设计师从一开始就会创建的最明显的事情:右键单击事件文件目标,然后选择:
- 清除
- 删除
- 清除
- 空的
除了没有选择做任何这些明显的事情:
尝试#4
我还尝试进入Extended Events菜单,然后单击Clear Data。但是该选项被莫名其妙地禁用:
尝试#5
我还尝试编写Extended Events Session脚本,以查看它存储文件的位置。但当然 SQL Server 团队没有帮助:
尝试#6
在 SQL Server Profiler 中。如果您想清除事件,请按下按钮清除事件:
SQL Profiler 已弃用,它的替代品无法清除事件。
清除事件的方法是什么?
奖金阅读
sql-server - 过程中的 Ms Sql 扩展事件过程
我有一个程序,它执行另外两个程序,如下所示:
然后,执行[tmp].[Test]
程序,我想显示sys.fn_xe_file_target_read_file
这些内部程序的信息。
我创造了这样的东西:
但它只返回结果[tmp].[Test]
。我怎样才能得到[tmp].[Test2]
and的结果[tmp].[Test1]
?
sql-server - 连接记录
我希望 SQL Server 创建一个记录所有(成功)登录/连接到数据库的日志文件。日志应至少包含:
- 连接客户端的 IP 地址和端口
- 客户端的应用程序名称
- 用户名
- 数据库名称
- 连接时间或适用交易
看起来服务器跟踪可能可以捕获所有这些信息,但微软表示不推荐使用服务器跟踪以支持扩展事件。
所以我试图用扩展事件收集这些信息。对于我的测试,我使用的是 SQL Server 2017 Developer Edition(在 Windows 10 上的 Docker 容器中运行)和 SSMS v17.7。当我创建或查看扩展事件时,我以“sa”身份登录。
到目前为止,我已经能够通过扩展事件收集大部分信息。问题是收集客户端 IP 和端口。我可以单独获得任何一部分,但不能同时获得两者。下面列出了我正在使用的 XEvent。两次列出的事实connection_accept
并不是一个错误。SQL Server 实际上有两个具有完全相同名称的不同事件(!!!)。
Login
:没有选项(字段或操作)来收集客户端 IP 或端口。至少它确实提供client_hostname
!Logout
:没有选项(字段或操作)来收集客户端 IP 或端口。这也捕捉到了client_hostname
。connection_accept
:- 收集客户端 IP,但它掩盖了最低八位字节(例如 192.168.1.XX)!!!
- 收集客户端端口!好的!
- 不收集 session_id,因此无法与
Login
或Logout
事件关联。 - My指定和
EVENT SESSION
的集合username
,但这些字段/操作都不存在于收集的数据中。:(client_app_name
client_hostname
connection_accept
:- 收集客户端端口,但不收集客户端IP!!!
- 有 sesstion_id,所以至少它可以与
Login
和相关联Logout
- 注意:我还没有在野外捕捉到这个特定的事件,所以我没有进一步的评论。
这些事件都没有提供客户端的 IP 地址,但我会接受客户端主机名作为合理的替代。但是,获得端口号是一个真正的问题。端口号仅在connection_accept
事件中找到,没有明显的方法可以将其与login
具有主机名的事件相关联。简而言之,扩展事件似乎根本无法提供这种基本的客户端 IP 和端口配对。我想相信我错了,因为它是如此基本的数据。对于我所忽略的任何帮助或建议将不胜感激。
扩展事件 DDL
这是EVENT SESSION
我一直在测试的 DDL:
备择方案
除了扩展事件之外,“安全审计”是另一种未被弃用的机制。所以我想我也试试这个:
提供的字段包括“客户端应用程序”、“客户端 IP”、“会话 ID”和用户名(即“服务器主体名称”)。但是,无法将其与connection_accept
XEvent 关联起来。所以没有办法提取我想要的两条信息:客户端IP和端口号。:(
奖金
除了收集客户端 IP 和端口,我还对收集 SQL Server 网络流量感兴趣。但是,我还没有看到任何方法可以做到这一点。提示赞赏!我只看到模糊相关的帖子。
更新
我注意到一个名为的全局动作(字段)task_address
似乎与login
,logout
和connection_accept
事件相关。因此,现在可以通过组合login:client_hostname
和来找到 IP 和端口connection_accept:port
。我唯一担心的是我找不到文档task_address
来验证我的观察结果。
sql-server - 在 SQL Server 的表中存储死锁数据
我想创建一个程序来存储每周在数据库中发生多少死锁的数据,并将这个输出存储在一个表中——这是最好的方法吗?
我尝试使用扩展日志,但如何将 XML 输出存储在表中?
先感谢您
sql-server - SQL Server Profiler 中的数据与扩展事件不一致
我一直在从事一个项目,该项目旨在使用 SSIS 包自动对我们服务器上的一些存储过程进行性能测试。以前它是使用 SQL Server Profiler 手动完成的。我们曾经存储跟踪表,然后将最新数据(Duration、CPU、Reads)与旧数据进行比较。作为自动化的一部分,我们使用扩展事件将事件数据存储到文件中,然后将数据读取到数据库表中。
我面临的问题是,每当我手动运行存储过程时,我得到的数据与我在使用自动化工具运行这些存储过程时得到的数据不一致。我很确定我们已经在工具中正确实现了扩展事件。
以下是我得到的结果(在手动测试以及使用工具之前清理缓存)
一些存储过程有 40-50% 的 CPU 变化和 >100% 的持续时间变化。
有人可以提出相同的可能原因吗?除了使用 XEvents 自动执行任务外,我找不到其他方法。
EDIT1:数据快照
.net - 如何通过 .net 代码读取扩展事件
我有记录和读取扩展事件的要求,我确实通过 Xpath 查询实现了这一点,并且它按预期工作。一段时间过去了,现在 .xel 文件的大小变大了,Xpath 查询需要很长时间才能返回结果。我听说有 .net 代码有助于更高效地读取 .xel 文件。请帮我提供相同的源代码。
sql-server - 使用 SQL 扩展事件捕获链接服务器查询
我尝试了许多事件类型,但无法实现链接服务器的日志记录。我可以找出所有其他数据库的事件,但链接服务器没有运气。有什么建议么 ?
azure-sql-database - 谁创建了这个扩展活动会话?
我被要求找出谁在 Azure SQL 数据库上创建了某个扩展事件会话。然而,翻阅 DMV,有很多属性,但没有表明它是什么时候创建的,或者是由谁创建的。
有没有办法确定这一点?
谢谢你。