C# ODBC-ExecuteOnQuery提供超时->;在哪里增加这个?

C# ODBC-ExecuteOnQuery提供超时->;在哪里增加这个?,c#,sql,vb.net,C#,Sql,Vb.net,我在这里也添加了C#组,因为这不是VB的问题,但ExecuteOnQuery给出了超时。如何增加超时 确切错误消息:错误[HYT00][Microsoft][ODBC SQL Server驱动程序]超时已过期 我们有cms系统,在cms中,我创建了一个IFRAME,它调用这个ASPX+VB代码,它位于不同的physicall文件夹中,并且管理了Pipeline Classic 当我在旧的应用程序中运行它时,它工作得很好。但我将页面复制到新闻服务器,并创建了新的应用程序池/网站调用OldASPPA

我在这里也添加了C#组,因为这不是VB的问题,但ExecuteOnQuery给出了超时。如何增加超时

确切错误消息:错误[HYT00][Microsoft][ODBC SQL Server驱动程序]超时已过期

我们有cms系统,在cms中,我创建了一个IFRAME,它调用这个ASPX+VB代码,它位于不同的physicall文件夹中,并且管理了Pipeline Classic

当我在旧的应用程序中运行它时,它工作得很好。但我将页面复制到新闻服务器,并创建了新的应用程序池/网站调用OldASPPAGES。我在下面的“ExecuteOnQuery()”函数上获得ODBC超时

有时我会工作,但10个案例中有9个是我及时完成的。我查了一下记录,一共有247条记录。但下面您可以看到,每个循环有2条sql语句。(更新并插入)。。。2 x 247条记录=约500条记录

但是由于sql语句是连接的,因此调用ExecuteOnQuery的1次调用,executue会执行500条sql语句

我知道这是垃圾,不能接受。。。。但是我继承了,所以现在我不能重写

切中要害:

下面是原始状态ST:我刚刚添加了:conn.ConnectionTimeout=240 正如你所看到的,我增加了240秒,但在大约30秒后我仍然会超时。。。所以这不是正确的地方

问题: -为什么这个语句在旧的ASP环境中工作(没有问题),而不是在IFRAME中的这个环境中工作

  • 我将timeout设置为240,但30秒后仍然会超时。你在哪里设置的超时更多
有人能给我一些建议吗

谢谢

 Private Function data30bis_save(ByVal data_30bis_list, ByVal user_id)
        lblMessage.Text = "data30bis_save"
        Dim conn As OdbcConnection, cmd As OdbcCommand, ra As Integer, sql As String, data_30bis As Attest30bis.Data30bisCobonet
        ' important: always purge the old situation before loading the new one !
        data30bis_cleanup(user_id)
        conn = New OdbcConnection("dsn=chris2;uid=xxx;pwd=ssddddd;")
        conn.ConnectionTimeout = 240
        conn.Open()
        sql = ""
        lblMessage.Text = "st"
        For Each data_30bis In data_30bis_list
            sql = sql & "update usr_codes set "
            If Len(data_30bis.analyseDate) > 0 Then
                sql = sql & "a30b_analysedate=convert(datetime,'" & data_30bis.analyseDate.ToString & "',103)"
            Else
                sql = sql & "a30b_analysedate=getdate()"
            End If
            sql = sql & ", a30b_errorcode=" & data_30bis.errorCode
            sql = sql & ", a30b_inputcompanyidvalid=" & Abs(CInt(data_30bis.inputCompanyIdValid))
            sql = sql & ", a30b_inputnossvalid=" & Abs(CInt(data_30bis.inputNossValid))
            sql = sql & ", a30b_noss=" & data_30bis.noss
            sql = sql & ", a30b_reservecontractorconcept=" & Abs(CInt(data_30bis.reserveContractorConcept))
            If Len(data_30bis.reserveContractorDate) > 0 Then
                sql = sql & ", a30b_reservecontractordate=convert(datetime,'" & data_30bis.reserveContractorDate.ToString & "',103)"
            Else
                sql = sql & ", a30b_reservecontractordate=getdate()"
            End If
            sql = sql & ", a30b_reservemakingconcept=" & Abs(CInt(data_30bis.reserveMakingConcept))
            If Len(data_30bis.reserveMakingDate) > 0 Then
                sql = sql & ", a30b_reservemakingdate=convert(datetime,'" & data_30bis.reserveMakingDate.ToString & "',103)"
            Else
                sql = sql & ", a30b_reservemakingdate=getdate()"
            End If
            sql = sql & ", a30b_date_modified=getdate()"
            sql = sql & " where user_id='" & user_id & "' and no_tva='" & data_30bis.companyId & "' and cd_pays_tva = 'BE'"
            sql = sql & vbCrLf
            ' 2nd SQL
            sql = sql & "insert a30b_controles (dt_ctrl, user_id, cd_pays_tva, no_tva, no_societe, a30b_analysedate, a30b_errorcode, a30b_inputcompanyidvalid, a30b_inputnossvalid, "
            sql = sql & "a30b_noss, a30b_reservecontractorconcept, a30b_reservecontractordate, a30b_reservemakingconcept, a30b_reservemakingdate, a30b_companyId) "
            sql = sql & "values (getdate(),'" & user_id & "','FR','massif',''," & "convert(datetime,'" & data_30bis.analyseDate.ToString & "',103)"
            sql = sql & "," & data_30bis.errorCode & "," & Abs(CInt(data_30bis.inputCompanyIdValid)) & "," & Abs(CInt(data_30bis.inputNossValid)) & "," & data_30bis.noss & "," & Abs(CInt(data_30bis.reserveContractorConcept))
            sql = sql & ",convert(datetime,'" & data_30bis.reserveContractorDate.ToString & "',103)," & Abs(CInt(data_30bis.reserveMakingConcept))
            sql = sql & ",convert(datetime,'" & data_30bis.reserveMakingDate.ToString & "',103)," & data_30bis.companyId & ")"
            sql = sql & vbCrLf
        Next
        lblMessage.Text = sql
        cmd = New OdbcCommand(sql, conn)
        ra = cmd.ExecuteNonQuery()
        lblMessage.Text = "ssssst"
        conn.Close()
        cmd = Nothing
        conn = Nothing
        lblMessage.Text = "ssssat"
        Return ra
    End Function
您在命令类上尝试过该属性了吗


然而,这只是症状修复。你能不能调整一下你的查询,让它更高效?

嗨,弗雷德里克,这太好了。。。我正在设置连接对象的超时。似乎我必须把它设置在命令对象上。。。现在它工作得很好!谢谢顺便说一句:事实上,这些东西必须重写。再次感谢
lblMessage.Text = sql       
cmd = New OdbcCommand(sql, conn)  

cmd.CommandTimeout= 200   

ra = cmd.ExecuteNonQuery()      
lblMessage.Text = "ssssst"