verwendetes Datenbanksystem: MSSQL Express
Hallo habe eine Frage und komme nicht weiter. Soweit ich weiß, wird bei SQL Pooling standardmäßig verwendet, was auch bei dem Test hier im SQL Server Profiler zu sehen ist:
SqlConnection con = new SqlConnection(@"Data Source=127.0.0.1,1433;Network Library=DBMSSOCN;Initial Catalog=db1;User=server;Password=12345;");
// Verbindung 10-mal öffnen und schließen
for (int i = 0; i < 10; i++)
{
con.Open();
con.Close();
Thread.Sleep(100);
}
Console.WriteLine("Feritg!!");
Console.ReadLine();
Wen ich nun aber z.B. 10 Abfragen hintereinader mache um das Pooling zu testen, öffnet er mir jedesmal eine Verbindung und schließt Diese danach auch wieder (10 mal). Wie wenn es keine Pool gäbe!?
SqlConnection con = new SqlConnection(@"Data Source=127.0.0.1,1433;Network Library=DBMSSOCN;Initial Catalog=db1;User=server;Password=1234;");
// Verbindung 10-mal öffnen und schließen
SqlCommand command = new SqlCommand("Select * from Benutzer", con);
for (int i = 0; i < 10; i++)
{
con.Open();
SqlDataReader dataReader = command.ExecuteReader();
while (dataReader.Read())
{
Console.WriteLine(dataReader.GetValue(1));
}
con.Close();
Thread.Sleep(100);
}
Console.WriteLine("Feritg!!");
Console.ReadLine();
Irgednwie kappiere ich das nicht. Dachte das Pooling genau für solche Fälle da ist!?
Viele Grüße und danke schon im Voraus für die Mühe...
thron
Dafür ist prinzipiell nicht unbedingt nur der MSSQL verantwortlich, sondern ADO.NET.
ADO.NET empfiehlt hier auch immer eine neue SqlConnection Instanz zu erzeugen, und nicht das gleiche Objekt wieder zu verwenden.
Der Key für den Pool ist nur der Connection String.
Meine Vermutung:
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code