.NET에서 SqlCommand.CommandTimeout
와 사이에 차이점이 SqlConnection.ConnectionTimeout
있습니까?
답변:
예. CommandTimeout
단일 명령을 완료하는 데 걸리는 시간입니다. ConnectionTimeout
시작하기 위해 서버에 연결하는 데 걸리는 시간입니다.
예를 들어 상대적으로 오래 실행되는 쿼리를 실행하고있을 수 있습니다. 완료하는 데 10 분이 걸리는 것은 괜찮지 만 연결을 시작하는 데 10 분이 걸린다면 뭔가 잘못되었다는 것을 알 수 있습니다.
SqlCommand.CommandTimeout
= SQL 쿼리에 대한 시간 제한. (예 : SELECT
, UPDATE
) 쿼리가 실행되는 데 걸리는 시간을 의미합니다 . 을 초과하면 SqlCommand.CommandTimeout
실행을 중지합니다. 명령 시간 초과 오류가 발생합니다.
SqlConnection.ConnectionTimeout
= 연결 시간 제한. 연결 개체가 연결을 시도 할 수있는 시간을 의미합니다. 지정된 시간을 초과하면 연결이 중지됩니다. 연결 시간 초과 오류가 발생합니다.
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1
set LOCK_TIMEOUT = 600//set TIMEOUT with ms
Connection 및 Command 개체의 속성이므로 CommandTimeout에 대한 빠른 참고 ...
Connection 개체의 CommandTimeout 설정은 동일한 Connection의 Command 개체에 대한 CommandTimeout 설정에 영향을주지 않습니다. 즉, Command 개체의 CommandTimeout 속성은 Connection 개체의 CommandTimeout 값을 상속하지 않습니다.
따라서 Connection 개체의 CommandTimeout 설정은 Command 개체를 사용하지 않고 Connection 개체에서 실행되는 명령에만 영향을줍니다.
예를 들어 Stored Proc에 연결하고 명령 개체에 매개 변수를 추가하고 연결 개체의 연결을 사용하여 Command 개체를 실행할 때 Command 개체에 CommandTimeout을 설정하고 Connection 개체에 ConnectionTimeout을 설정하여 둘 다 재정의해야합니다. 기본값. 연결 개체에 CommandTimeout을 설정해도 명령 개체 명령에 대한 기본 제한 시간이 재정의되지 않습니다.
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