Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Máy chủ SQL và các ràng buộc bộ nhớ .NET, cấp phát và thu gom rác

Vấn đề là, vì một số lý do, DataReader của bạn không bị đóng. Một ngoại lệ? Người dùng phương pháp không nhớ đã đóng DataReader?

Một hàm trả về một DataReader được sử dụng bên ngoài phần thân của nó sẽ khiến nó có trách nhiệm đóng nó với mã bên ngoài, vì vậy không có gì đảm bảo rằng Reader sẽ bị đóng. Nếu bạn không đóng trình đọc, bạn không thể sử dụng lại kết nối mà nó đã được mở.

Vì vậy, trả lại DataReader từ một hàm là một ý tưởng rất tồi!

Bạn có thể xem toàn bộ cuộc thảo luận về chủ đề này tại đây .

Tìm cách sử dụng của chức năng này (GetDataReader ), và kiểm tra xem có đảm bảo rằng đầu đọc đang được đóng không. Và, quan trọng nhất, không có khả năng mã này nhập lại và sử dụng cùng một bộ sưu tập để mở một DataReader mới trước khi cái đầu tiên bị đóng. (Đừng để bị đánh lừa bởi CommandBehavior.CloseConnection. Điều này chỉ quan tâm đến việc đóng kết nối khi DataReader bị đóng ... chỉ khi bạn không đóng nó)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Một cách thanh lịch hơn để thoát SQL động?

  2. Khóa ngoại cho nhiều bảng

  3. Làm cách nào để tạo một số ngẫu nhiên cho mỗi hàng trong một lựa chọn T-SQL?

  4. T-SQL Cast so với Convert

  5. Không thể tải dữ liệu Tên bộ đếm vì chỉ mục không hợp lệ-Ngoại lệ