如何使 SqlConnection.RetrieveStatistics 工作
本文关键字:工作 RetrieveStatistics SqlConnection 何使 | 更新日期: 2023-09-27 17:56:59
我不能让SqlConnection.RetrieveStatistics工作,它总是返回一个由18个元素组成的哈希表,这些元素都是零。
我想做什么:在我的测试环境中,我想为每个httpresponse添加一个标头,其中包含在请求处理期间执行的sql命令的数量。
我的应用程序只是(休息)网络服务,我有一个sql连接par请求(每个请求一个NHibernate会话)。
处理请求后,我执行:
var connection = statelessSession.NHSession.Connection as ReliableSqlDbConnection;
if (connection != null)
queries += Convert.ToInt32(connection.ReliableConnection.Current.RetrieveStatistics()["Prepares"]);
数字始终为 0,当我在这一行上中断时,我看到所有数字都是零。
打开会话后,我执行:
var ret = module.OpenSession();
var connection = (ret.Connection as ReliableSqlDbConnection);
if(connection != null)
{
connection.ReliableConnection.Current.StatisticsEnabled =true;
ret.CreateSQLQuery("SET STATISTICS IO ON; SET STATISTICS TIME ON;").ExecuteUpdate();
connection.ReliableConnection.Current.ResetStatistics();
}
return ret;
我使用 https://github.com/MRCollective/NHibernate.SqlAzure 因为在生产中我使用的是sql azure,但在本地,我有一个Sql Server 2014开发人员版的实例。
对于我的数据库,我有:自动创建统计信息 true自动更新统计信息 true
我错过了什么吗?
造成这种情况的原因是NHibernate为每个请求打开一个新连接,这就是我每次都丢失统计信息的原因。