Apakah ada perbedaan antara SqlCommand.CommandTimeout
dan SqlConnection.ConnectionTimeout
di .NET?
.net
sqlconnection
sqlcommand
Dhanapal
sumber
sumber
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.
sumber
SqlCommand.CommandTimeout
= batas waktu tunggu untuk kueri SQL Anda. Berarti, berapa banyak waktu (misalnya:SELECT
,UPDATE
) permintaan dapat mengambil untuk pelaksanaannya. Jika melebihiSqlCommand.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.sumber
ConnectionTimeout
Menentukan durasi menunggu sebelum waktu keluar ketika mencoba untuk membuka sebuahSqlConnection
. Ini relevan denganConnection.Open()
perintah.sementara
SqlCommand.CommandTimeout
menentukan durasi untuk SqlCommand menunggu sebelum waktu habis. Ini terjadi setelah koneksi dibuka dan salah satuExecuteXXX
metode telah dipanggil pada objek Command.sumber
Informasi tambahan
Nilai defaultnya
CommandTimeout
adalah 30 detik. Nol (0) menunjukkan tidak ada batasan. Anda hanya dapat menyetelCommandTimeout
nilai dalam Coding.Nilai defaultnya
ConnectiontTimeout
adalah 15 detik. Nol (0) menunjukkan tidak ada batasan juga. Nilai kurang dari nol (nilai minus) akan didapatArgumentException
. Anda dapat menyetelConnectionTimeout
nilai di file Coding dan Config.sumber
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1 set LOCK_TIMEOUT = 600//set TIMEOUT with ms
sumber
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
sumber