sql >> Database teknologi >  >> RDS >> Sqlserver

SQL-server- og .NET-hukommelsesbegrænsninger, tildelinger og affaldsindsamling

Problemet er, at din DataReader af en eller anden grund ikke lukkes. En undtagelse? Har metodebrugeren ikke husket at lukke DataReader?

En funktion, der returnerer en DataReader til at blive brugt uden for dens krop, efterlader ansvaret for at lukke den til ydre kode, så der er ingen garanti for, at Reader vil blive lukket. Hvis du ikke lukker læseren, kan du ikke genbruge forbindelsen, hvor den blev åbnet.

Så det er en meget dårlig idé at returnere en DataReader fra en funktion!

Du kan se en hel diskussion om dette emne her .

Se efter brugen af ​​denne funktion (GetDataReader ), og kontroller, om der er garanti for, at læseren lukker. Og vigtigst af alt, at der ikke er nogen mulighed for, at denne kode kommer ind igen og bruger den samme samling til at åbne en ny DataReader, før den første lukkes. (Lad dig ikke vildlede af CommandBehavior.CloseConnection. Denne sørger kun for at lukke forbindelsen, når DataReader er lukket... kun hvis du ikke undlader at lukke den)



  1. Skift fra JsonStringType til JsonBinaryType, når projektet bruger både MySQL og PostgreSQL

  2. Hvordan gemmer man udvalgte forespørgselsresultater i en midlertidig tabel?

  3. Outputdata fra den aktuelle måned?

  4. MySQL-fejl - Kommandoer ude af synkronisering; du kan ikke køre denne kommando nu