ODBC - ExecuteNonQuery дает тайм-аут -> где это увеличить? - PullRequest
3 голосов
/ 10 декабря 2010

Я тоже добавляю группу C #, потому что это не проблема VB, но ExecuteNonQuery дает тайм-аут.как увеличить время ожидания?

Точное сообщение об ошибке: ОШИБКА [HYT00] [Microsoft] [Драйвер ODBC SQL Server] Время ожидания истекло

У нас есть система CMS ив этой CMS я создал IFRAME, который вызывает этот код ASPX + VB, который находится в другой физической папке и управляет Pipeline Classic.

Когда я запускаю это в старом приложении, оно работает нормально.Но я скопировал страницы на сервер новостей и создал новый пул приложений / веб-сайт. Вызов OldASPPAGES У меня истекает время ожидания ODBC для функции «ExecuteNonQuery ()» ниже.

Иногда я работаю, но в 9 из 10 случаев я получаю тайм-аут.Я проверил записи, и есть 247 записей.Но ниже вы видите, что 2 SQL-оператора составлены для каждого цикла.(обновить и вставить) ... 2 x 247 записей = прибл.500 записей.

Но поскольку оператор sql объединен, поэтому 1 вызов ExecuteNonQuery выполняет executue 500 операторов SQL ....

Я знаю, что это GARBAGE, неприемлемо .... НоЯ унаследовал, поэтому на данный момент я не могу переписать это.

К вопросу:

Ниже приведены исходные состояния: я только что добавил: conn.ConnectionTimeout = 240 Как вы можете видеть, я добавил 240 секунд, но по-прежнему получаю тайм-аут после прибл.30 секунд ... так что это не правильное место ....

вопрос: - Почему это утверждение работает в старой среде ASP (без проблем), а не в этой среде в IFRAME ....

  • Я установил тайм-аут = 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

Ответы [ 2 ]

1 голос
/ 28 июня 2012
lblMessage.Text = sql       
cmd = New OdbcCommand(sql, conn)  

cmd.CommandTimeout= 200   

ra = cmd.ExecuteNonQuery()      
lblMessage.Text = "ssssst" 
0 голосов
/ 10 декабря 2010

Вы уже пробовали свойство CommandTimeout в классе Command?

Однако это только устранение симптомов.Разве вы не можете настроить свой запрос, чтобы сделать его более производительным?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...