sql >> Database >  >> RDS >> Sqlserver

SQL-server en .NET-geheugenbeperkingen, toewijzingen en afvalverzameling

Het probleem is dat om de een of andere reden uw DataReader niet wordt afgesloten. Een uitzondering? Is de methodegebruiker vergeten de DataReader te sluiten?

Een functie die een DataReader retourneert om buiten zijn hoofdtekst te worden gebruikt, laat de verantwoordelijkheid om deze te sluiten voor externe code, dus er is geen garantie dat de Reader wordt gesloten. Als u de lezer niet sluit, kunt u de verbinding waarin deze is geopend niet opnieuw gebruiken.

Dus het retourneren van een DataReader van een functie is een heel slecht idee!

Je kunt een hele discussie over dit onderwerp bekijken hier .

Zoek naar het gebruik van deze functie (GetDataReader ), en controleer of er garantie is dat de lezer wordt gesloten. En het belangrijkste is dat er geen mogelijkheid is dat deze code opnieuw binnenkomt en dezelfde verzameling gebruikt om een ​​nieuwe DataReader te openen voordat de eerste wordt gesloten. (Laat u niet misleiden door CommandBehavior.CloseConnection. Dit zorgt er alleen voor dat de verbinding wordt gesloten wanneer de DataReader is gesloten... alleen als u het niet nalaat om het te sluiten)



  1. De Oracle DUAL-tabel opnieuw maken

  2. Hoe prioriteit te geven aan bepaalde zoekopdrachten in MySQL?

  3. Waarom maak je een View in een database?

  4. Big data exporteren van PostgreSQL naar AWS s3