SqlConnection 시간 초과 변경
기본값을 재정의하려고 합니다.SqlConnection
15초의 시간 제한이 있고 다음과 같은 오류가 발생합니다.
읽기 전용이므로 속성 또는 인덱서를 할당할 수 없습니다.
이 일을 피할 방법이 있습니까?
using (SqlConnection connection = new SqlConnection(Database.EstimatorConnection))
{
connection.Open();
using (SqlCommand command = connection.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
connection.ConnectionTimeout = 180; // This is not working
command.CommandText = "sproc_StoreData";
command.Parameters.AddWithValue("@TaskPlanID", order.Projects[0].TaskPlanID);
command.Parameters.AddWithValue("@AsOfDate", order.IncurDate);
command.ExecuteNonQuery();
}
}
특정 쿼리에 대한 시간 초과를 제공하려면 CommandTimeout이 앞으로 나아가는 방법입니다.
사용 방법은 다음과 같습니다.
command.CommandTimeout = 60; //The time in seconds to wait for the command to execute. The default is 30 seconds.
연결 문자열에 시간 초과 값을 설정할 수 있지만 연결한 후에는 읽기 전용입니다.자세한 내용은 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectiontimeout.aspx 에서 확인하실 수 있습니다.
아닐이 암시하는 바와 같이, 연결시간 제한은 필요하지 않을 수 있습니다. 시간 제한은 새 연결을 설정할 때 ADO 드라이버가 대기하는 시간을 제어합니다.특정 SQL 쿼리가 실행될 때까지 정상보다 오래 기다려야 하는 것으로 보이며, 이 경우 Anil이 정확합니다. CommandTimeout(R/W)을 사용하여 개별 SQL Command의 예상 완료 시간을 변경합니다.
더 깨끗한 방법은 xml 파일에 connectionString을 설정하는 것입니다(예:Web.Confing(WepApplication)
또는App.Config(StandAloneApplication)
.
<connectionStrings>
<remove name="myConn"/>
<add name="myConn" connectionString="User ID=sa;Password=XXXXX;Initial Catalog=qualitaBorri;Data Source=PC_NAME\SQLEXPRESS;Connection Timeout=60"/>
</connectionStrings>
코드별로 다음과 같은 방식으로 연결할 수 있습니다.
public static SqlConnection getConnection()
{
string conn = string.Empty;
conn = System.Configuration.ConfigurationManager.ConnectionStrings["myConn"].ConnectionString;
SqlConnection aConnection = new SqlConnection(conn);
return aConnection;
}
설정할 수 있습니다.ConnectionTimeout
사용자만 인스턴스를 만듭니다.인스턴스가 생성될 때 이 값은 변경되지 않습니다.
언제든지 연결 문자열에 추가할 수 있습니다.
connect timeout=180;
SqlConnectionStringBuilder를 사용할 수도 있습니다.
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(ConnectionString);
builder.ConnectTimeout = 10;
using (var connection = new SqlConnection(builder.ToString()))
{
// code goes here
}
추가할 수 있습니다.Connection Timeout=180;
연결 문자열로
이전 게시물이지만 검색하던 내용이 나타나면서 이 주제에 정보를 추가해야겠다고 생각했습니다.제가 댓글을 달려고 했는데, 댓글이 부족해요.
다른 사람들이 말했듯이,
연결.연결초기 연결에 시간 초과가 사용됨
지휘권CommandTimeout은 개별 검색, 업데이트 등에 사용됩니다.
그러나:
연결.연결시간 초과는 트랜잭션을 커밋하고 롤백하는 데도 사용됩니다.
네, 이것은 완전히 미친 디자인 결정입니다.
따라서 커밋 또는 롤백 시 시간 초과가 발생할 경우 연결 문자열을 통해 이 값을 늘려야 합니다.
연결 시간 초과를 연결 수준 및 명령 수준으로 설정할 수 있습니다.
연결 문자열에 "연결 시간 초과=10"을 추가합니다.이제 연결 제한 시간은 10초입니다.
var connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;Connection Timeout=10";
using (var con = new SqlConnection(connectionString))
{
}
의 CommandTimeout 속성을 SqlCommand로 설정합니다.
var connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword";
using (var con = new SqlConnection(connectionString))
{
using (var cmd =new SqlCommand())
{
cmd.CommandTimeout = 10;
}
}
저는 이 주제에 대한 훌륭한 블로그 게시물을 찾았습니다: https://improve.dk/controlling-sqlconnection-timeouts/
기본적으로 연결 문자열에 다음과 같이 연결 시간 초과를 설정합니다.
Data Source=server;Initial Catalog=databaseUser Id=username;Password=password;Connect Timeout=30
또는 연결을 설정합니다.다음과 같은 명령 개체의 시간 초과:
sqlCommand.CommandTimeout = 30;
시간 초과 시간은 초 단위입니다.
또한 이 제한 시간은 서버가 중단되거나 과부하 상태가 된 경우와 같은 상황으로 인한 연결 손실을 고려하지 않습니다.그러면 결국 TCP 시간 초과가 트리거됩니다.블로그 게시물에서 이를 처리할 수 있는 좋은 확장 예제를 확인하십시오.
은 야합다니해를 사용해야 .command.CommandTimeout
언급URL : https://stackoverflow.com/questions/10108565/changing-sqlconnection-timeout
'sourcecode' 카테고리의 다른 글
mongoengine - 스키마 유효성 검사를 위해 추가 필드를 무시 (0) | 2023.05.29 |
---|---|
치명적 오류: 잘못된 형식 또는 손상된 AST 파일 - Xcode (0) | 2023.05.29 |
정확히 어떻게 std::string_view가 conststd::string&보다 빠릅니까? (0) | 2023.05.29 |
powershell 2.0 예외에 액세스하는 방법을 시도합니다. (0) | 2023.05.29 |
C# 객체 목록, 속성의 합계를 가져오는 방법 (0) | 2023.05.29 |