Episode

Batas Waktu Perintah SQL Server - Batas Waktu Aplikasi - Perhatian Peristiwa diperpanjang

Saat Anda menggunakan ODBC atau SqlClient untuk mengakses data dari SQL Server, secara default kueri akan dibatalkan jika tidak ada respons dari server dalam periode waktu tertentu (30 detik secara default). ODBC atau SqlClient akan memulai timer setelah mengirim kueri ke SQL Server dan jika tidak ada hasil dari server dalam waktu 30 detik, kueri akan dibatalkan dan pesan kesalahan waktu habis akan dikirim ke aplikasi. Jika paket jaringan (berisi hasil kueri) diterima dalam 30 detik, dan jika kita mengharapkan paket jaringan tambahan (baris tambahan yang tidak dapat masuk dalam paket jaringan pertama), maka timer dimulai ulang, jika paket jaringan berikutnya tidak diterima dalam periode 30 detik ini, kueri akan dibatalkan.

Alasan umum untuk batas waktu perintah SQL adalah skema yang tidak optimal atau kueri yang tidak efisien yang dijalankan untuk jangka waktu yang lama atau yang melewatkan indeks atau mengunci masalah tunggu. Penting untuk menyetel kueri daripada meningkatkan pengaturan batas waktu perintah SQL.

Dalam video, contohnya ditunjukkan di mana penurunan ukuran paket jaringan menghilangkan waktu habis, demonstrasi ini adalah untuk memahami bagaimana paket jaringan terlibat dalam mengatur ulang timer dan untuk mengembangkan pemahaman yang lebih baik tentang batas waktu. Mengubah ukuran paket jaringan bukanlah solusi untuk menghindari waktu habis, menyetel skema yang tidak optimal atau kueri yang tidak efisien atau menambahkan indeks atau menghindari tunggu kunci adalah solusi yang tepat.

Untuk mengidentifikasi perintah yang mengarah ke kesalahan batas waktu perintah SQL, Anda dapat menggunakan Extended Events dan memantau peristiwa 'sqlserver.attention'. Skrip peristiwa yang diperluas yang digunakan dalam video tersedia di www.sqlvideo.com/xevents.

Di SQL Server Management Studio, batas waktu Perintah SQL dapat diubah menggunakan 'Opsi' dalam dialog koneksi. Secara default, ini diatur ke '0', yang berarti tidak ada batas waktu. Saat kueri atau prosedur tersimpan dijalankan, jika Anda mengklik tombol 'Batal' (kotak merah), perhatian yang sama akan dikirim ke SQL Server (seperti SQL Batas Waktu Perintah). Dan ini pada gilirannya akan menghasilkan peristiwa 'sqlserver.attention' di Extended Events.

Dalam video di bawah ini Anda dapat melihat contoh batas waktu Perintah SQL. Alat SQLTest mensimulasikan lab langsung untuk Anda, tidak perlu pendaftaran. Anda dapat mempraktikkan contoh langsung online saat menonton Video.