2009-05-11 59 views

Trả lời

101

Có. CommandTimeout là thời gian một lệnh duy nhất có thể thực hiện để hoàn thành. ConnectionTimeout là mất bao lâu để thiết lập kết nối với máy chủ để bắt đầu. Ví dụ: bạn có thể đang thực hiện các truy vấn tương đối dài - hoàn toàn ổn định để hoàn thành 10 phút, nhưng nếu mất 10 phút để kết nối bắt đầu, bạn sẽ biết rằng sai.

+0

Vì tò mò: Vì thời gian chờ mặc định là 30 giây, điều gì xảy ra nếu tôi đặt CommandTimeout thành 60 giây nhưng không thay đổi ConnectionTimeout từ mặc định? – flipdoubt

+2

Ý của bạn là gì? Hoặc bạn đang thiết lập CommandTimeout hoặc bạn không ... –

+4

Vì lợi ích của đối số, giả sử tôi có một **! & # Q @? truy vấn mất 32 giây để chạy. Nếu tôi đặt SqlCommand.CommandTimeout = 40 nhưng để lại SqlConnection.ConnectionTimeout tại mặc định của nó (có lẽ là 30), sẽ hết thời gian kết nối? Nói cách khác, tôi có phải đặt cả hai thuộc tính? Có vẻ như bạn đang nói "không", nhưng tôi phải quên thuộc tính SqlConnection.ConnectionTimeout và bắt đầu đặt câu hỏi liệu việc đặt CommandTimeout có làm mọi thứ tôi cần đến không. – flipdoubt

23

SqlCommand.CommandTimeout = giới hạn thời gian chờ cho truy vấn SQL của bạn. Có nghĩa là, thời gian truy vấn (ví dụ: SELECT, UPDATE) có thể mất bao lâu để thực thi nó. Nếu nó vượt quá SqlCommand.CommandTimeout, sau đó nó dừng thực hiện. Một lỗi thời gian chờ lệnh sẽ xảy ra.

SqlConnection.ConnectionTimeout = giới hạn thời gian chờ cho kết nối của bạn. Có nghĩa là, bao nhiêu thời gian đối tượng kết nối của bạn có thể thử kết nối. Nếu nó vượt quá thời gian quy định, nó sẽ ngừng kết nối. Lỗi kết nối thời gian chờ sẽ xảy ra.

10

ConnectionTimeout chỉ định thời lượng chờ trước khi hết thời gian khi cố gắng mở an SqlConnection. Nó có liên quan đến lệnh Connection.Open().

khi

SqlCommand.CommandTimeout quy định thời gian cho một SqlCommand để đợi trước khi thời gian ra ngoài. Điều này xảy ra sau khi kết nối đã được mở và một trong các phương thức ExecuteXXX đã được gọi trên đối tượng Command.

2
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1 
set LOCK_TIMEOUT = 600//set TIMEOUT with ms 
+1

Đây là loại thứ ba của thời gian chờ. Không một trong hai chủ sở hữu chủ đề yêu cầu. Và không trả lời câu hỏi. Tôi sẽ không -1 nó, bởi vì tôi không biết câu hỏi trước khi chỉnh sửa là gì. –

6

Thông tin cá

Giá trị mặc định của CommandTimeout là 30 giây. Không (0) cho biết không có giới hạn. Bạn chỉ có thể đặt giá trị CommandTimeout trong mã hóa.

Giá trị mặc định là ConnectiontTimeout là 15 giây. Không (0) cũng không có giới hạn. Giá trị nhỏ hơn 0 (giá trị âm) sẽ nhận được ArgumentException. Bạn có thể đặt giá trị ConnectionTimeout trong cả tệp Mã hóa và Cấu hình.

Các vấn đề liên quan