SQLプロファイラを使用すると、接続プールから接続をフェッチするたびに、ストアドプロシージャsp_reset_connectionが実行されることがわかります。
このリセットを取り除くには(実際にはsp_reset_connectionは必要ありません)。接続文字列のConnection Resetパラメータをfalseに設定しようとしましたが、これは何の効果もないようです。私は、おそらく私は接続のリセットパラメータの目的を誤解していると思っています。
私は、Connectionのリセットパラメータが http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx を参照してください。しかし、それは http://www.techrepublic.com/article/educate-yourself-about-net-sql-server-connection-string-syntax/6084879 を参照してください。
Conection Resetフラグを無効な値(「hello」など)に設定すると、Connection Resetフラグが実際に使用されていることを示す接続を開くときに例外が発生します。
ADO.NETは実際にConnectionリセットフラグを気にしますか?
下の私のコード:
static void Main(string[] args)
{
const string connectionString =
"Data Source=(local);Initial Catalog=MyDatabse;User ID=sa;Password=;Connection Timeout=5;Pooling=true;Min Pool Size=1; Max Pool Size=1; Enlist=false; Connection Reset=false;";
var connections = new List();
for (int i = 0; i < 1000000; i++)
{
using (var conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand command = new SqlCommand("SELECT * FROM DatabaseVersion", conn);
command.ExecuteNonQuery();
connections.Add(conn);
}
}
}