ID Artikel: 118552 - Kajian Terakhir: 14 September 2011 - Revisi: 2.0

Deskripsi menangani kebuntuan kondisi di SQL Server

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
Perbesar semua | Perkecil semua

RINGKASAN

Kebuntuan adalah suatu kondisi di mana proses 2 (atau lebih) mencoba untuk mengakses sumber daya yang lain memegang kunci pada. Karena setiap proses memiliki permintaan untuk sumber daya lain, proses tidak dapat diselesaikan. Ketika jalan buntu terdeteksi, SQL Server gulung kembali transaksi yang memiliki sedikit pengolahan waktu dan kembali pesan galat 1205 ke aplikasi. Pesan kesalahan 1205 berakhir saat ini kiriman dan gulung kembali transaksi saat ini.

INFORMASI LEBIH LANJUT

Dalam beberapa kasus, kondisi kebuntuan akan menyebabkan DB-perpustakaan (DB-Lib) perintah (seperti dbsqlexec, dbsqlok, atau dbresults) untuk kembali gagal. Itu selalu tanggung jawab program untuk memeriksa kode kembali dari setiap perintah DB Lib. Jika gagal kembali oleh salah satu perintah DB Lib ini, program harus membatalkan bets dan tidak mencoba untuk melanjutkan. Dalam beberapa kasus, dimungkinkan untuk melanjutkan eksekusi perintah berikutnya dalam batch. Namun, karena situasi buntu terjadi dan perintah yang menyebabkan itu adalah perintah kembali digulung, kemudian dalam batch akan mungkin gagal dengan kesalahan yang lebih serius, seperti objek tidak ditemukan.



Dalam kasus lainnya, kebuntuan kondisi tidak akan menyebabkan perintah DB Lib untuk kembali gagal. Untuk menangani kondisi ini, program harus memeriksa pesan 1205 dalam pesan handler dan menggunakan fungsi dbsetuserdata berkomunikasi ini untuk aplikasi Anda (contoh dapat ditemukan di Bab 4 "Fungsi DB-perpustakaan" dalam SQL Server "Programmer's referensi untuk C" di bawah dbsetuserdata). Program harus kemudian memeriksa kebuntuan indikator setelah setiap panggilan DB-perpustakaan dan harus membatalkan bets jika kebuntuan terdeteksi.



Sementara itu mungkin tampak tidak perlu untuk membatalkan batch setelah menerima 1205 kebuntuan pesan, hal ini diperlukan karena server tidak selalu membatalkan batch dalam situasi buntu. Jika bets tidak dibatalkan, apapun mencoba untuk mengirimkan batch baru dapat mengakibatkan kesalahan DB-perpustakaan 10038 "Hasil tertunda."

Anda dapat menemukan deskripsi dari deadlocking dan contoh bagaimana mendeteksi kebuntuan kondisi di "Lampiran E memaksimalkan konsistensi dan Concurrency" dalam SQL Server untuk Windows NT "Programmer's referensi untuk C".

Berlaku bagi:
  • Microsoft SQL Server 4.21a Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Kata kunci: 
kbinfo kbprogramming kbmt KB118552 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:118552  (http://support.microsoft.com/kb/118552/en-us/ )