Apakah ada perbedaan antara SqlCommand.CommandTimeout
dan SqlConnection.ConnectionTimeout
di .NET?
Jawaban:
Iya. CommandTimeout
adalah berapa lama waktu yang dibutuhkan untuk menyelesaikan satu perintah. ConnectionTimeout
adalah berapa lama waktu yang dibutuhkan untuk membuat sambungan ke server untuk memulai.
Misalnya, Anda mungkin menjalankan kueri yang berjalan relatif lama - tidak masalah bagi mereka untuk menyelesaikannya selama 10 menit, tetapi jika perlu 10 menit untuk membuat koneksi untuk memulai, Anda akan tahu bahwa ada sesuatu yang salah.
SqlCommand.CommandTimeout
= batas waktu tunggu untuk kueri SQL Anda. Berarti, berapa banyak waktu (misalnya: SELECT
, UPDATE
) permintaan dapat mengambil untuk pelaksanaannya. Jika melebihi SqlCommand.CommandTimeout
, maka eksekusi akan dihentikan. Kesalahan waktu tunggu perintah akan terjadi.
SqlConnection.ConnectionTimeout
= batas waktu habis untuk koneksi Anda. Berarti, berapa lama objek koneksi Anda dapat mencoba untuk terhubung. Jika melebihi waktu yang ditentukan, itu berhenti terhubung. Kesalahan batas waktu koneksi akan terjadi.
ConnectionTimeout
Menentukan durasi menunggu sebelum waktu keluar ketika mencoba untuk membuka sebuah SqlConnection
. Ini relevan dengan Connection.Open()
perintah.
sementara
SqlCommand.CommandTimeout
menentukan durasi untuk SqlCommand menunggu sebelum waktu habis. Ini terjadi setelah koneksi dibuka dan salah satu ExecuteXXX
metode telah dipanggil pada objek Command.
Informasi tambahan
Nilai defaultnya CommandTimeout
adalah 30 detik. Nol (0) menunjukkan tidak ada batasan. Anda hanya dapat menyetel CommandTimeout
nilai dalam Coding.
Nilai defaultnya ConnectiontTimeout
adalah 15 detik. Nol (0) menunjukkan tidak ada batasan juga. Nilai kurang dari nol (nilai minus) akan didapat ArgumentException
. Anda dapat menyetel ConnectionTimeout
nilai di file Coding dan Config.
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1
set LOCK_TIMEOUT = 600//set TIMEOUT with ms
Catatan singkat mengenai CommandTimeout, karena ini adalah properti dari objek Connection dan Command ...
Pengaturan CommandTimeout pada objek Connection tidak berpengaruh pada pengaturan CommandTimeout pada objek Command pada Connection yang sama; Artinya, properti CommandTimeout objek Command tidak mewarisi nilai dari nilai CommandTimeout objek Connection.
Jadi pengaturan CommandTimeout pada objek Connection hanya mempengaruhi perintah yang dijalankan di bawah objek Connection saja (tanpa menggunakan objek Command).
misalnya Saat Anda menghubungkan ke Proc Tersimpan dan menambahkan parameter ke objek perintah, dan menjalankan objek Perintah menggunakan koneksi Objek Koneksi, maka Anda perlu menyetel CommandTimeout pada objek Command dan ConnectionTimeout pada objek Koneksi untuk menimpa keduanya default. Menyetel CommandTimeout pada Objek Koneksi tidak akan menimpa batas waktu default untuk perintah Objek Perintah.
https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/commandtimeout-property-ado?view=sql-server-ver15 https://docs.microsoft.com/en-us / sql / ado / reference / ado-api / connectiontimeout-property-ado? view = sql-server-ver15