如何发送与每个SQL Server语句关联的自定义标记以进行跟踪过滤?

时间:2017-03-09 16:21:54

标签: sql-server profiling

我有一个自定义.NET应用服务器,它将大量SQL语句发送到后端SQL Server。我可以控制在app服务器上运行的代码,我可以以任何方式自定义SQL Server。

我需要向每个语句发送一个自定义标记,该标记作为SQL跟踪列可见,以便我可以通过这些自定义标记过滤跟踪。

我不能使用SQL连接的ApplicationName,因为这是特定于连接的,并且连接在应用服务器中汇集并随机分配给语句。如果我在每个语句之前更改ApplicationName,则池会崩溃,并且连接需要重做,这太过分了。

有什么想法吗?感谢。

注意:我有想法改变通过SqlCommand的每个语句,并在T-SQL前面添加注释(/ CustomTags tag1 tag12 /)或虚拟语句(SELECT'tag1') ,'tag5')但我觉得必须有更好的方法。我需要这个来进行面向业务的分析。标签来自客户端,通过应用服务器,我想将它们粘贴到SQL语句,以便立即反馈某个业务操作/模块在数据库服务器上生成的负载量。

1 个答案:

答案 0 :(得分:0)

如果您能够自定义正在发送的SQL,则可以将标记作为表别名的一部分。这样做的另一个好处是,甚至可以包含Showplan XML Statistics Profile事件来获取实际查询计划并过滤除目标查询之外的所有内容。

SELECT *
FROM sys.tables as YourFilterHere
INNER JOIN sys.columns 
  ON YourFilterHere.object_id = columns.object_id

然后您可以过滤TextData,例如%YourFilterHere%