Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL сървър и .NET ограничения на паметта, разпределения и събиране на отпадъци

Проблемът е, че по някаква причина вашият DataReader не се затваря. Изключение? Потребителят на метода не е запомнил да затвори DataReader?

Функция, която връща DataReader за използване извън тялото, оставя отговорността за затварянето му на външен код, така че няма гаранция, че Reader ще бъде затворен. Ако не затворите четеца, не можете да използвате повторно връзката, в която е бил отворен.

Така че връщането на DataReader от функция е много лоша идея!

Можете да видите цяла дискусия по тази тема тук .

Потърсете употребите на тази функция (GetDataReader ) и проверете дали има гаранция, че четецът се затваря. И най-важното е, че няма възможност този код да влезе отново и да използва същата колекция, за да отвори нов DataReader, преди първият да бъде затворен. (Не се подвеждайте от CommandBehavior.CloseConnection. Това се грижи само за затварянето на връзката, когато DataReader е затворен... само ако не пропуснете да го затворите)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявка за съвпадение на IP адрес в SQL Server

  2. Сравнете стойностите на датата между 3 колони в SQL Server и изтеглете информация за активи в SQL Server

  3. Как да създадете йерархично меню от различна таблица въз основа на примерна структура на база данни

  4. Денормализиране на данни (може би Pivot?)

  5. Мога ли да използвам променлива, когато използвам ISABOUT?