myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Datentechnologien » MSSQL Pooling funktioniert nicht bei 10 aufeinanderfolgenden Anfragen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

MSSQL Pooling funktioniert nicht bei 10 aufeinanderfolgenden Anfragen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Thron
myCSharp.de-Mitglied

Dabei seit: 30.05.2017
Beiträge: 57


Thron ist offline

MSSQL Pooling funktioniert nicht bei 10 aufeinanderfolgenden Anfragen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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:

C#-Code:
            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!?

C#-Code:
            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
13.08.2019 12:49 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.918
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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:
- Im Audit übersiehst Du "Nonpooled" und "Pooled" Eigenschaften der Verbindungen
- Du disposed nirgends SqlDataReader, sodass hier vermutlich noch nen Handle offen ist (allgemein hast Du nirgends ein Dispose). Close() hat noch nie für das Freigeben gereicht; weder bei Readern noch bei Connections.
- Dein Code läuft viel schneller durch als der Connection Pool die Verbindungen verwalten kann
- Irgendein anderer Seiteneffekt
13.08.2019 14:15 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 22.08.2019 15:39