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 에서 자세한 내용을 읽을 수 있습니다 .
Anil이 암시 하듯이 ConnectionTimeout은 필요한 것이 아닐 수 있습니다. 새 연결을 설정할 때 ADO 드라이버가 대기하는 시간을 제어합니다. 귀하의 사용법은 특정 SQL 쿼리가 실행될 때까지 평소보다 오래 기다려야 함을 나타내는 것 같습니다.이 경우 Anil이 정확히 맞습니다. CommandTimeout (R / W)을 사용하여 개별 SqlCommand의 예상 완료 시간을 변경합니다.
언제든지 연결 문자열에 추가 할 수 있습니다.
connect timeout=180;
더 깨끗한 방법은 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
인스턴스 생성 만 설정할 수 있습니다 . 인스턴스가 생성되면이 값을 변경하지 않습니다.
Connection Timeout=180;
연결 문자열에 추가 할 수 있습니다.
이전 게시물이지만 내가 검색 한 내용이 나오면이 주제에 정보를 추가 할 것이라고 생각했습니다. 코멘트를 추가하려고했는데 담당자가 부족합니다.
다른 사람들이 말했듯이 :
connection.ConnectionTimeout은 초기 연결에 사용됩니다.
command.CommandTimeout은 개별 검색, 업데이트 등에 사용됩니다.
그러나:
connection.ConnectionTimeout은 트랜잭션 커밋 및 롤백 에도 사용됩니다.
예, 이것은 절대적으로 미친 디자인 결정입니다.
따라서 커밋 또는 롤백시 시간 초과가 발생하는 경우 연결 문자열을 통해이 값을 늘려야합니다.
당신은 사용해야합니다 command.CommandTimeout
SqlConnectionStringBuilder를 사용할 수도 있습니다.
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(ConnectionString);
builder.ConnectTimeout = 10;
using (var connection = new SqlConnection(builder.ToString()))
{
// code goes here
}
연결 시간 제한을 연결 수준 및 명령 수준으로 설정할 수 있습니다.
Add "Connection Timeout=10" to the connection string. Now connection timeout is 10 seconds.
var connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;Connection Timeout=10";
using (var con = new SqlConnection(connectionString))
{
}
Set the of CommandTimeout property to 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;
}
}
참고URL : https://stackoverflow.com/questions/10108565/changing-sqlconnection-timeout
'programing tip' 카테고리의 다른 글
HTML 테이블에 스크롤 막대를 표시하는 방법 (0) | 2020.10.28 |
---|---|
jQuery에서 div 내부의 모든 HTML을 제거하고 싶습니다. (0) | 2020.10.28 |
원 또는 도넛에서 선분 그리기 (0) | 2020.10.28 |
Rails Select Drop Down for States? (0) | 2020.10.28 |
자바 스크립트에서 xml 엔티티를 이스케이프하는 방법은 무엇입니까? (0) | 2020.10.28 |