2010-01-05 4 views
0

제한 시간을 0으로 설정했지만 연결이 자연스럽지 않게 닫힙니다.이 문장에 어떤 문제가 있습니까?Sql Server 2008에서 ConnectionTimeout을 0으로 설정하는 방법은 무엇입니까?

 Using odbcconn As New OdbcConnection(DataShared.gstrCNN) 

     odbcconn.ConnectionTimeout = 0 
     odbcconn.Open() 
     Dim OdbcCmd As New OdbcCommand(_ 
      "{ ? = CALL [proc_Cp_GenEstadoCta](" & _ 
      PCOD_EMPR & ", " & _ 
      PPER_ANUAL & "," & _ 
      DataShared.gintCODUSER & ") }", odbcconn) 

     OdbcCmd.Parameters.Add("@return", OdbcType.Int) 
     OdbcCmd.Parameters("@return").Direction = ParameterDirection.ReturnValue 

     OdbcCmd.ExecuteNonQuery() 
     If CInt(OdbcCmd.Parameters("@return").Value) = 0 Then 
      GenEstadoMovsSaldos = True 
     Else 
      GenEstadoMovsSaldos = False 
     End If 

    End Using 

수정 된 코드

그것은 잘 작동하고
 Using odbcconn As New OdbcConnection(DataShared.gstrCNN) 

     --odbcconn.ConnectionTimeout = 0 

     odbcconn.Open() 
     Dim OdbcCmd As New OdbcCommand(_ 
      "{ ? = CALL [proc_Cp_GenEstadoCta](" & _ 
      PCOD_EMPR & ", " & _ 
      PPER_ANUAL & "," & _ 
      DataShared.gintCODUSER & ") }", odbcconn) 

     OdbcCmd.CommandTimeout = 60 

     OdbcCmd.Parameters.Add("@return", OdbcType.Int) 
     OdbcCmd.Parameters("@return").Direction = ParameterDirection.ReturnValue 

     OdbcCmd.ExecuteNonQuery() 
     If CInt(OdbcCmd.Parameters("@return").Value) = 0 Then 
      GenEstadoMovsSaldos = True 
     Else 
      GenEstadoMovsSaldos = False 
     End If 

    End Using 

!

답변

3

연결 시간 제한을 0으로 설정하여 수행하려는 작업은 무엇입니까?

연결 시간 초과는 데이터베이스 연결을 열려고 시도하는 동안 기다리는 시간입니다. 연결이 닫힐 때와 아무 관련이 없습니다.

아마도 OdbcCommand 클래스의 CommandTimeout 속성을 찾고 있습니까? CommandTimeout을 0으로 설정하면 쿼리가 실행될 때까지 대기하는 시간 제한이 제거됩니다.

그러나 데이터베이스가 오프라인 상태가되면 프로그램은 무언가 일어나기를 무한정 기다려야하므로 대신 오랜 시간을 설정하여 명령이 결국 절대로 시간 초과되지 않도록해야합니다.

+0

참으로 내가 MySQL을 같은 다른 데이터베이스에 연결하기 때문에 (당신이 ODBC 데이터베이스 드라이버 대신에보다 신속하고 전문화하는 SqlClient 드라이버를 사용하는 이유는 방법?으로). Thx – RicardoBalda

관련 문제