Kami menggunakan Otentikasi SQL (untuk mengurangi jumlah kumpulan koneksi) & string koneksi .NET 4.0 untuk tersambung ke SQL Server Enterprise Edition 2012 SP1 pada Windows 2008 R2 Enterprise Server:
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
19 Okt 2012 13:38:57
Hak cipta (c) Microsoft Corporation
Enterprise Edition (64-bit) pada Windows NT 6.1 (Build 7601: Paket Layanan 1)
Kami menggunakan sekitar 50 server yang dipecah menjadi 8 grup yang berbeda di berbagai bagian situs web.
Situs web kami menggunakan SQL Server ini untuk mencatat data pelacakan kunjungan. Selama beberapa hari terakhir ini telah memuntahkan pesan berikut tentang pengaturan ulang koneksi pool:
Klien tidak dapat menggunakan kembali sesi dengan SPID 1327, yang telah diatur ulang untuk pooling koneksi. ID kegagalan adalah 46. Kesalahan ini mungkin disebabkan oleh kegagalan operasi sebelumnya. Periksa log kesalahan untuk operasi yang gagal segera sebelum pesan kesalahan ini.
Log galat berbunyi:
Kesalahan: 18056, Severity: 20, State: 46.
Klien tidak dapat menggunakan kembali sesi dengan SPID 959, yang telah diatur ulang untuk penyatuan koneksi. ID kegagalan adalah 46. Kesalahan ini mungkin disebabkan oleh kegagalan operasi sebelumnya. Periksa log kesalahan untuk operasi yang gagal segera sebelum pesan kesalahan ini.
Gagal masuk untuk pengguna 'xxxx'. Alasan: Gagal membuka basis data 'xxxxxxxx' yang dikonfigurasikan dalam objek login saat memvalidasi ulang login pada koneksi. [KLIEN: 10.xx.xx.xxx]
Setelah beberapa penggalian, saya menemukan dokumen ini di blog CSS: Bagaimana Cara Kerjanya: Kesalahan 18056 - Klien tidak dapat menggunakan kembali sesi dengan SPID ##, yang telah disetel ulang untuk pooling koneksi dan yang ini oleh Aaron Bertrand: Troubleshooting Error 18456 . Saya tahu nomor kesalahannya berbeda tetapi ID kegagalannya sama dengan jumlah pesannya sama).
ID Kegagalan 46 menunjukkan bahwa login tidak memiliki izin. Login kami secara default ke database master dan nama db dikhususkan dalam string koneksi.
Saya ingin memeriksa jumlah kumpulan string koneksi, dll. Dan memeriksa semua penghitung di Perfmon .Net Data Provider for SqlServer
. Itu hanya memberi saya pilihan defaultdomain9675
untuk contoh, jadi saya memilih asumsi bahwa itu adalah sistem yang menghasilkan nama ID untuk jaringan Datacentre kami. Sayangnya semua penghitung membaca nol. Pada salah satu server utama kami yang lain, kumpulan koneksi melayang di sekitar 10 yang merupakan apa yang saya harapkan untuk dilihat pada server yang sehat dengan beban semacam itu.
Pertanyaan saya 3 kali lipat
Adakah yang bisa menyarankan mengapa Windows 2008 R2 Server tidak muncul
.Net Data Provider for SqlServer
?Adakah yang mengalami hal ini karena saya jelas percaya bahwa login yang tidak memiliki izin adalah herring merah?
Jika berbagai grup server web memiliki sintaksis string koneksi yang sama tetapi dengan spasi yang sedikit berbeda, apakah ini akan menyebabkan server menggunakan kumpulan koneksi lain?
Pengaturan memori min & maks masing-masing 20GB & 58GB. Server adalah server basis data khusus dengan 64GB RAM. Saya tidak berpikir memori adalah masalah karena kotak tampaknya memiliki harapan halaman lfe yang layak. Tutup otomatis tidak diaktifkan. Server selalu menyala: ini adalah situs web 24x7 dengan penggunaan berat.
sumber
Jawaban:
1 - tidak bisa mengatakan dengan pasti, saya harus mencari server untuk menggali sendiri.
2 - ya, saya melihat ini secara berkala di lingkungan saya meskipun kami belum menggunakan sql 2012 pada sistem tempat kami melihatnya. Anda mungkin juga ingin memeriksa http://blogs.msdn.com/b/psssql/archive/2013/02/13/breaking-down-18065.aspx meskipun Negara 46 tampaknya terkait dengan memiliki Database spesifik = xxx in string koneksi, apakah db itu masih ada?
Cara jaringan saya diatur. Saya menduga itu adalah penutupan sesi tcp otomatis jaringan setelah 5 menit menganggur karena masalah tersebut - db maupun klien menutup sesi sehingga kumpulan koneksi masih berpikir koneksi terbuka dan mencoba menggunakan hanya untuk menemukan itu tidak benar-benar terbuka lagi. Anda tidak menyebutkan bagaimana jaringan antara server web dan db Anda dikonfigurasi, mungkin kasus Anda serupa.
Kemungkinan lain mungkin adalah (lama, tidak yakin apakah pernah benar-benar terselesaikan, lihat http://support.microsoft.com/kb/942861 ) masalah tentang pengaturan TCP Chimney Offload.
3 - Pemahaman saya tentang penyatuan membutuhkan pencocokan string yang tepat, sehingga spasi dan urutan parameter yang berbeda akan menyebabkan kumpulan yang berbeda. (Jika saya salah tentang itu, tolong beri tahu saya.)
sumber
Jawaban Komunitas Wiki awalnya dibiarkan sebagai komentar oleh penulis pertanyaan
Dalam kasus saya, ini ternyata merupakan tabel logging yang dijalankan oleh seseorang yang telah diubah menjadi verbose untuk memecahkan masalah, tetapi lupa untuk mematikannya. Itu akhirnya mencatat hingga 1000 catatan per detik.
Pekerjaan lain sedang mencoba untuk menghapus catatan lama dari tabel. akhirnya masuk ke simpul seperti terkunci ketika mencoba untuk menghapus, memblokir semua sisipan bahwa itu kehabisan sumber daya koneksi pool.
Segera setelah saya menemukan pekerjaan itu, menampar orang yang menyalahgunakan hak mereka di server itu, dan menghentikan pekerjaan itu, semua pesan kesalahan untuk kumpulan koneksi berhenti.
sumber