sql >> Databasteknik >  >> RDS >> Sqlserver

SQL-server och .NET-minnesbegränsningar, tilldelningar och sophämtning

Problemet är att din DataReader av någon anledning inte stängs. Ett undantag? Metodanvändaren kom inte ihåg att stänga DataReader?

En funktion som returnerar en DataReader för att användas utanför dess kropp lämnar ansvaret för att stänga den till yttre kod, så det finns ingen garanti för att Reader kommer att stängas. Om du inte stänger läsaren kan du inte återanvända anslutningen där den öppnades.

Så att returnera en DataReader från en funktion är en mycket dålig idé!

Du kan se en hel diskussion om detta ämne här .

Leta efter användningsområden för denna funktion (GetDataReader ), och kontrollera om det finns garanti för att läsaren stängs. Och, viktigast av allt, att det inte finns någon möjlighet att den här koden kommer in igen och använder samma samling för att öppna en ny DataReader innan den första stängs. (Låt dig inte vilseledas av CommandBehavior.CloseConnection. Detta tar bara hand om att stänga anslutningen när DataReader är stängd... bara om du inte misslyckas med att stänga den)



  1. Alla kolumner i tabellen bör indexeras eller inte mysql databas?

  2. Få localhost att köra på mac OS X Yosemite

  3. Mysql-anslutning nekades på localhost

  4. behöver uppdatering för mysql-fråga för att välja datumintervall för bokning av ett hotellrum eller någonting