Avatar billede misbruger Nybegynder
04. september 2006 - 21:10 Der er 12 kommentarer og
1 løsning

Åbner ny connection hver gang

Jeg har lavet en server app, som bliver kaldt af 2-3 clienter max.

Men for næsten hver gang en client laver et kald, oprettet min server en ny db connection.

Jeg benytter C# 2.0 på en W2K op imod en SQL 2005

Min connection string:
string connString = "Data Source=sql2.domain.dk;Initial Catalog=myDatabase;User Id=myDBUser;Password=myPassword;"

Samtlige kald til databasen bliver rejst ved:
SqlCommand command = new SqlCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = storedProcedure;
command.Connection = new SqlConnection(connString);

Jeg har kørt sp_who på min SQL server, og den viser ca. 80 connections:
Status.....Login......Database.....Command
SLEEPING - myDBUser - myDatabase - AWAITING COMMAND

Til sidst ender jeg med at få ConnectionPool exception.

Hvad sker der her.... ?

Tak!
Avatar billede arne_v Ekspert
04. september 2006 - 21:11 #1
du skal vel bare kalde Close (eller Dispose) på den connection
Avatar billede arne_v Ekspert
04. september 2006 - 21:12 #2
command.Connection.Close();
Avatar billede dr_chaos Nybegynder
04. september 2006 - 21:13 #3
kald command.Connection.Open() før du kalder op til databasen og close som arne siger efterfølgende.
Avatar billede misbruger Nybegynder
04. september 2006 - 21:22 #4
Ja det gør jeg også....

f.eks.

try
{
  bla bla...

  command.Connection.Open()
}
catch
{
  bla bla...
}
finally
{
  command.Connection.Close();
  command.Connection.Dispose(); // Har også prøve at indsætte denne
}
Avatar billede arne_v Ekspert
04. september 2006 - 21:24 #5
Hvis du kalder Close og alligevel får pool exceptiom, så tror jeg at du
har tildelt færre connections i SQLServer end default i .NET connection pool (100).

Angiv et lavere antal i connection string !
Avatar billede misbruger Nybegynder
04. september 2006 - 21:37 #6
Jeg får skam 100 connections, førend den min pool exceeder.

Men desuden vil jeg ikke have 100 connections.
Det gør den sløv, og når først jeg får en lille håndfuld af applicationer kørende bliver det et stort problem.
Avatar billede misbruger Nybegynder
04. september 2006 - 21:38 #7
Nu har jeg ikke har en aktiv handling mod serveren i ca. 45 minutter, men der er stadig 58 sleeping connections i poolen.
Avatar billede misbruger Nybegynder
04. september 2006 - 21:38 #8
NumberOfReclaimedConnections i PerfMon står til 100
Avatar billede misbruger Nybegynder
04. september 2006 - 21:42 #9
Exception:
Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.
Avatar billede misbruger Nybegynder
04. september 2006 - 21:44 #10
...
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
  at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
  at System.Data.SqlClient.SqlConnection.Open()
Avatar billede brassmaid Nybegynder
05. september 2006 - 13:26 #11
Kan du ikke bare skrive noget i denne retning i din connection string

pooling=true; Min Pool Size=10;Max Pool Size=30;Connect Timeout=2
Avatar billede misbruger Nybegynder
06. september 2006 - 08:42 #12
Tjo...
Men principielt har jeg aldrig før haft dette problem, og har faktisk altid syntes at default indstillingerne har fungeret optimalt for disse små apps, så det generer mig voldsomt hvis jeg skal til at lave projekt orienterede konfiguration af dette.

Men der ud over har jeg ikke oplevet problemet i et helt døgn nu.... uden at have lavet nogle ændringer... Har kørt i 3 uger med dette problem, hvor den har crashet hver dag, og nu pludselig ikke i et døgn.
Jeg afventer "spændt" at det skal ske igen....?
Avatar billede misbruger Nybegynder
05. april 2007 - 16:15 #13
tak!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester