She*_*llz 1 sql-server stored-procedures extended-events
我有一个长时间运行的扩展事件会话,它捕获rpc_completed为几个过程过滤的事件。它发现了一些已经运行的。但其他人当我知道他们已被处决时,它并没有捕捉到他们。我知道这一点的原因是因为我查看了缓存并发现它们在那里被调用。
我正在使用 SQL Server 2016。我将过滤object_name作为字段名称、equal_i_sql_unicode_string运算符和值减去架构名称。我还修改了会话以添加我知道经常使用的 proc,它可以很好地捕获那些。
为什么它会忽略而不捕获一些?
当您查找某些原因时,扩展事件数据中可能没有内容
XE 会话过滤中的某些内容排除了数据。如果没有您的 XE 会话代码以及未包含在其中的代码,这将很难诊断。请注意,我不是在询问这些细节——这只是冰山一角,不适合在这里进行问答。
设置 XE 会话时,您可以选择丢失单个事件、多个事件或不丢失事件。GUI 甚至会警告您不要选择不丢失任何内容。
事件可能未在指定时间内分派到文件。例如,如果您运行一个查询以查看它是否进入那里,您可能需要等待至少 30 秒才能从它完成直到它出现在 XE 会话数据中。
rpc_completed,可能rpc没有complete-d。要解决这个问题,您需要获取rpc_starting,然后在 XE 会话设置中跟踪因果关系。我可能要覆盖sp_statement_starting和sql_batch_starting为好。正如David Browne 所提到的,在正确的位置捕捉东西可能很棘手:
RPC 是从客户端发送的查询,而不是嵌入在 TSQL 批处理中。存储过程可以从 TSQL 批处理运行,也可以从另一个存储过程运行,而不是作为 RPC 出现。
如果不直接查看服务器,这不是很容易解决的问题,但它应该足以让您开始自己的调查。
| 归档时间: |
|
| 查看次数: |
882 次 |
| 最近记录: |