我有一个自定义.NET应用服务器,它将大量SQL语句发送到后端SQL Server。我可以控制在app服务器上运行的代码,我可以以任何方式自定义SQL Server。
我需要向每个语句发送一个自定义标记,该标记作为SQL跟踪列可见,以便我可以通过这些自定义标记过滤跟踪。
我不能使用SQL连接的ApplicationName,因为这是特定于连接的,并且连接在应用服务器中汇集并随机分配给语句。如果我在每个语句之前更改ApplicationName,则池会崩溃,并且连接需要重做,这太过分了。
有什么想法吗?感谢。
注意:我有想法改变通过SqlCommand的每个语句,并在T-SQL前面添加注释(/ CustomTags tag1 tag12 /)或虚拟语句(SELECT'tag1') ,'tag5')但我觉得必须有更好的方法。我需要这个来进行面向业务的分析。标签来自客户端,通过应用服务器,我想将它们粘贴到SQL语句,以便立即反馈某个业务操作/模块在数据库服务器上生成的负载量。
答案 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%