Menghapus Koneksi
Pooler koneksi menghapus koneksi dari pool setelah menganggur untuk waktu yang lama, atau jika pooler mendeteksi bahwa koneksi dengan server telah terputus.
Perhatikan bahwa koneksi terputus hanya dapat dideteksi setelah mencoba berkomunikasi dengan server. Jika ditemukan koneksi yang tidak lagi terhubung ke server, itu ditandai sebagai tidak valid.
Koneksi yang tidak valid dihapus dari kumpulan koneksi hanya ketika mereka ditutup atau direklamasi.
Jika ada koneksi ke server yang telah hilang, koneksi ini dapat diambil dari kolam bahkan jika pooler koneksi belum mendeteksi koneksi terputus dan menandainya sebagai tidak valid.
Ini terjadi karena overhead memeriksa bahwa koneksi masih valid akan menghilangkan manfaat memiliki pooler dengan menyebabkan bolak-balik ke server terjadi.
Ketika ini terjadi, upaya pertama untuk menggunakan koneksi akan mendeteksi bahwa koneksi telah terputus, dan pengecualian dilemparkan.
Pada dasarnya apa yang Anda lihat adalah pengecualian dalam kalimat terakhir.
Koneksi diambil dari kumpulan koneksi, aplikasi tidak tahu bahwa koneksi fisik hilang, upaya untuk menggunakannya dilakukan dengan asumsi bahwa koneksi fisik masih ada.
Dan Anda mendapatkan pengecualian Anda.
Ada beberapa alasan umum untuk ini.
- Server telah dihidupkan ulang, ini akan menutup koneksi yang ada.
Dalam hal ini, lihat log SQL Server, biasanya ditemukan di: C: \ Program Files \ Microsoft SQL Server \\ MSSQL \ LOG
Jika cap waktu untuk memulai sangat baru, maka kami dapat menduga bahwa inilah yang menyebabkan kesalahan. Coba kaitkan stempel waktu ini dengan waktu pengecualian.
2009-04-16 11: 32: 15.62 Server Logging Pesan SQL Server dalam file 'C: \ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ LOG \ ERRORLOG'.
- Seseorang atau sesuatu telah membunuh SPID yang sedang digunakan.
Sekali lagi, lihat log SQL Server. Jika Anda menemukan pembunuhan, cobalah untuk menghubungkan timestamp ini dengan waktu pengecualian.
2009-04-16 11: 34: 09.57 spidXX Process ID XX dibunuh oleh hostname xxxxx, proses host ID XXXX.
- Ada failover (dalam pengaturan cermin misalnya) lagi, lihat log SQL Server.
Jika ada kegagalan, cobalah untuk menghubungkan timestamp ini dengan waktu pengecualian.
2009-04-16 11: 35: 12.93 spidXX Basis data yang dicerminkan "" mengubah peran dari "PRINCIPAL" menjadi "CERMIN" karena Failover.