2010-12-10 85 views
3

我在這裏也添加了C#組,因爲這不是VB問題,而是ExecuteNonQuery給出超時。如何增加超時?ODBC - ExecuteNonQuery給出超時 - >在哪裏增加這個?

精確的ErrorMessage:錯誤[HYT00] [微軟] [ODBC SQL Server驅動程序]超時過期

我們有CMS系統,並在CMS我創建了調用該ASPX + VB代碼IFRAME,它位於不同的物理文件夾中,並且已管理Pipeline Classic。

當我在舊應用程序中運行它時,它工作正常。但我將這些頁面複製到新聞服務器並創建了新的應用程序池/網站調用OldASPPAGES我在下面的'ExecuteNonQuery()'函數中獲得了ODBC超時。

有時我工作,但我gettimeout 10例中的9。我檢查了這些記錄,並且有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

嗨弗雷德裏克,這是偉大的...我設置連接對象的超時。它似乎是我必須將它設置在命令對象上......現在它工作的很棒!謝謝....順便說一句:事實上這個東西必須重寫。再次感謝 – 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"