Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL server dan batasan memori .NET, alokasi, dan pengumpulan sampah

Masalahnya adalah, untuk beberapa alasan, DataReader Anda tidak ditutup. Pengecualian? Pengguna metode tidak ingat untuk menutup DataReader?

Fungsi yang mengembalikan DataReader untuk digunakan di luar tubuhnya meninggalkan tanggung jawab untuk menutupnya ke kode luar, jadi tidak ada jaminan bahwa Reader akan ditutup. Jika Anda tidak menutup pembaca, Anda tidak dapat menggunakan kembali koneksi yang membukanya.

Jadi, mengembalikan DataReader dari suatu fungsi adalah ide yang sangat buruk!

Anda dapat melihat seluruh diskusi tentang topik ini di sini .

Cari kegunaan fungsi ini (GetDataReader ), dan periksa apakah ada jaminan bahwa pembaca akan ditutup. Dan yang terpenting, tidak ada kemungkinan kode ini masuk kembali dan menggunakan koleksi yang sama untuk membuka DataReader baru sebelum yang pertama ditutup. (Jangan disesatkan oleh CommandBehavior.CloseConnection. Ini hanya menangani penutupan koneksi saat DataReader ditutup... hanya jika Anda tidak gagal menutupnya)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara membuat daftar contoh SQL Server yang tersedia menggunakan SMO di C #?

  2. Bagaimana saya bisa mencari baris di sekitar nilai string yang diberikan?

  3. Tidak dapat menangkap kesalahan tabel ubah SQL Server

  4. menghubungkan ke server sql melalui aplikasi .net winform

  5. Output Salah dalam kueri FULL OUTER JOIN