มีความแตกต่างใด ๆ ระหว่างSqlCommand.CommandTimeout
และSqlConnection.ConnectionTimeout
ใน .NET?
มีความแตกต่างใด ๆ ระหว่างSqlCommand.CommandTimeout
และSqlConnection.ConnectionTimeout
ใน .NET?
คำตอบ:
ใช่. CommandTimeout
คำสั่งเดียวใช้เวลานานเพียงใดจึงจะเสร็จสมบูรณ์ ConnectionTimeout
ระยะเวลาในการสร้างการเชื่อมต่อกับเซิร์ฟเวอร์จึงจะเริ่มต้นได้
ตัวอย่างเช่นคุณอาจดำเนินการค้นหาที่ใช้เวลาค่อนข้างนานซึ่งเป็นเรื่องปกติที่พวกเขาจะใช้เวลา 10 นาทีในการดำเนินการให้เสร็จสมบูรณ์ แต่ถ้าใช้เวลา 10 นาทีในการเริ่มต้นการเชื่อมต่อคุณจะรู้ว่ามีบางอย่างผิดปกติ
SqlCommand.CommandTimeout
= ขีด จำกัด การหมดเวลาสำหรับแบบสอบถาม SQL ของคุณ หมายถึงแบบสอบถาม(เช่น: SELECT
, UPDATE
) สามารถใช้เวลาในการดำเนินการได้นานเท่าใด ถ้าเกินSqlCommand.CommandTimeout
ก็จะหยุดการดำเนินการ จะเกิดข้อผิดพลาดการหมดเวลาของคำสั่ง
SqlConnection.ConnectionTimeout
= ขีด จำกัด การหมดเวลาสำหรับการเชื่อมต่อของคุณ หมายถึงระยะเวลาที่วัตถุเชื่อมต่อของคุณสามารถพยายามเชื่อมต่อได้ หากเกินเวลาที่กำหนดจะหยุดเชื่อมต่อ ข้อผิดพลาดการหมดเวลาการเชื่อมต่อจะเกิดขึ้น
ConnectionTimeout
ระบุระยะเวลาที่จะรอก่อนที่จะหมดเวลาเมื่อพยายามที่จะเปิด SqlConnection
มันเกี่ยวข้องกับConnection.Open()
คำสั่ง
ในขณะที่
SqlCommand.CommandTimeout
ระบุระยะเวลาสำหรับ SqlCommand เพื่อรอก่อนหมดเวลา สิ่งนี้เกิดขึ้นหลังจากเปิดการเชื่อมต่อและExecuteXXX
มีการเรียกใช้วิธีใดวิธีหนึ่งบนวัตถุคำสั่ง
ข้อมูลเพิ่มเติม
ค่าเริ่มต้นCommandTimeout
คือ 30 วินาที ศูนย์ (0) หมายถึงไม่มีขีด จำกัด คุณสามารถตั้งCommandTimeout
ค่าในการเข้ารหัสเท่านั้น
ค่าเริ่มต้นConnectiontTimeout
คือ 15 วินาที ศูนย์ (0) หมายถึงไม่มีขีด จำกัด เช่นกัน น้อยกว่าศูนย์ค่า (ค่าลบ) ArgumentException
จะได้รับ คุณสามารถตั้งConnectionTimeout
ค่าได้ทั้งในไฟล์ Coding และ Config
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1
set LOCK_TIMEOUT = 600//set TIMEOUT with ms
หมายเหตุด่วนเกี่ยวกับ CommandTimeout เนื่องจากเป็นคุณสมบัติของอ็อบเจ็กต์ Connection และ Command ...
การตั้งค่า CommandTimeout บนวัตถุ Connection ไม่มีผลต่อการตั้งค่า CommandTimeout บนวัตถุ Command บนการเชื่อมต่อเดียวกัน นั่นคือคุณสมบัติ CommandTimeout ของอ็อบเจ็กต์ Command ไม่สืบทอดค่าของค่า CommandTimeout ของอ็อบเจ็กต์ Connection
ดังนั้นการตั้งค่า CommandTimeout บนวัตถุ Connection จะมีผลเฉพาะคำสั่งที่ดำเนินการภายใต้วัตถุ Connection เท่านั้น (โดยไม่ใช้วัตถุ Command)
เช่นเมื่อคุณเชื่อมต่อกับ Stored Proc และเพิ่มพารามิเตอร์ให้กับวัตถุคำสั่งและเรียกใช้วัตถุ Command โดยใช้การเชื่อมต่อของ Connection Object คุณจะต้องตั้งค่า CommandTimeout บนวัตถุ Command และ ConnectionTimeout บนวัตถุ Connection เพื่อแทนที่ทั้งสองอย่าง ค่าเริ่มต้น การตั้งค่า CommandTimeout บน Connection Object จะไม่แทนที่การหมดเวลาเริ่มต้นสำหรับคำสั่ง Command Object
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 / อ้างอิง / Ado-api / connectiontimeout-property-Ado? view = sql-server-ver15