【发布时间】:2011-08-03 13:32:05
【问题描述】:
我想使用 SQL Server 跟踪来跟踪有关哪些代码正在使用数据库的更多上下文。我打算在连接字符串上使用“应用程序名称”属性。如下所示:
object CallingObject; //set elsewhere
SqlConnectionStringBuilder connectionString = GetConnectionString();
connectionString.ApplicationName = CallingObject.GetType().ToString();
using (SqlConnection connection = new SqlConnection(connectionString.ToString()))
{
// do your thing
}
除非产生的连接字符串种类繁多,这意味着 .net 的连接池不再有效。
如何在 SQL 跟踪中跟踪调用代码而不失去连接池的好处?
【问题讨论】:
-
我有一个可能可行的想法,但是:您希望在跟踪中实现哪些关键目标? (这将告诉我这个想法是否成立)
-
嗨,Marc,我想收集跟踪并使用该信息将 x% 的数据库活动归因于此代码,将 y% 的数据库活动归因于该代码。 (活动是 CPU、读取、写入、持续时间等...)
-
嗯;好的-然后进行一些数据挖掘。我不认为这是直接“命中”,但对于 code-path 分析(例如,基于每个请求)我们使用mvc-mini-profiler,这对于查找时间位置很有用在单个请求中(比如说)被花费。在你的情况下不太有用,也许/
-
FWIW,感谢您对此的关注。
-
我自己还没有测试过这个,所以我没有提交作为答案,但是不能在命令前加上评论吗? IE。类似于:string.Format("/*{0}*/\n{1}",CallingObject.GetType().ToString(),myCommand);
标签: .net sql-server ado.net