代码之家  ›  专栏  ›  技术社区  ›  RicardoBalda

如何在Sql Server 2008中将ConnectionTimeout设置为0?

  •  0
  • RicardoBalda  · 技术社区  · 16 年前

            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
    

    它工作得很好!

    1 回复  |  直到 16 年前
        1
  •  3
  •   Guffa    16 年前

    通过将连接超时设置为零,您试图实现什么?

    连接超时是尝试打开数据库连接时等待的时间。这与连接何时关闭无关。

    CommandTimeout 房地产 OdbcCommand 上课?设定

    但是,如果数据库离线,你的程序将无限期地等待一些不会发生的事情,所以你应该考虑设置一个很长的时间,这样命令最终会超时,而不是永远。