2010-12-10 1 views
3

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

Exact ErrorMessage: ERROR [HYT00] [Microsoft] [ODBC SQL Server Driver] Время ожидания истекло

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

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

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

Но так как SQL заявление concantenated так 1 вызов ExecuteNonQuery, executue действительно делает 500 операторов SQL ....

Я знаю, что это МУСОР, неприемлемо .... Но я унаследовал так на данный момент я не могу переписать это.

К точке:

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

вопрос: - Почему это заявление работу в старой среде ASP (без проблем), а не в этом environement в 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 

ответ

0

Вы пробовали CommandTimeout свойство на классе команд еще?

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

+0

Hi Frederik, это здорово ... Я установил Timeout на объект соединения. кажется, я должен установить его на объект команды ... Теперь он отлично работает! спасибо .... btw: Действительно, этот материал должен быть переписан. еще раз спасибо – ethem 2010-12-10 13:43:34

1
lblMessage.Text = sql  
cmd = New OdbcCommand(sql, conn) 

cmd.CommandTimeout= 200 

ra = cmd.ExecuteNonQuery()  
lblMessage.Text = "ssssst" 
Смежные вопросы