2016-12-02 54 views
0

所以我有這個功能超時已過期。之前的操作的完成的超時時間已過或服務器未響應

Public Function getDataSetonDataTable(ByVal query As String, ByVal sDatabaseConnection As String) As DataTable 
    Dim dsRecordset As New DataSet 
    Dim dtReturn As DataTable 

    Try 
     open(sDatabaseConnection) 
     oConn.Open() 
    Catch ex As Exception 
     log.infoError(ex, "GET DATA SETON DATA PART 1 ON cDatabase.vb") 
     Return Nothing 
    End Try 

    Try 
     createLog("Q || " & query) 

     dsRecordset = oDatabase.ExecuteDataSet(System.Data.CommandType.Text, query) 
     dtReturn = dsRecordset.Tables(0) 
    Catch ex As Exception 
     If ex.Message.ToString = "Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding." Then 
      Try 
       createLog("Query : " & query) 
       dsRecordset = oDatabase.ExecuteDataSet(System.Data.CommandType.Text, query) 
       dtReturn = dsRecordset.Tables(0) 
      Catch ex2 As Exception 
       log.infoError(ex, "GET DATA SETON DATA PART 2 ON cDatabase.vb") 
       dtReturn = Nothing 
       ErrorMessage = ex2.Message.ToString 
       MessageBox.Show(ErrorMessage, "Database Error", MessageBoxButtons.OK, MessageBoxIcon.Stop) 
      Finally 
       oConn.Close() 
      End Try 
      Return dtReturn 
     End If 
     dtReturn = Nothing 
     ErrorMessage = ex.Message.ToString 
     MessageBox.Show(ErrorMessage, "Database Error", MessageBoxButtons.OK, MessageBoxIcon.Stop) 
    Finally 
     oConn.Close() 
    End Try 
    Return dtReturn 
End Function 

這是數據檢索程序代碼

dsRecordset = oDatabase.ExecuteDataSet(System.Data.CommandType.Text, query) 

然而,如果執行復雜的查詢,恰好60秒後纔會出現此異常

System.Data.SqlClient.SqlException was caught 
    Class=11 
    ErrorCode=-2146232060 
    LineNumber=0 
    Message="Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding." 
    Number=-2 
    Procedure="" 
    Server="KF-DC1DB01" 
    Source=".Net SqlClient Data Provider" 
    State=0 
    StackTrace: 
     at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 
     at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 
     at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 
     at System.Data.SqlClient.SqlDataReader.ConsumeMetaData() 
     at System.Data.SqlClient.SqlDataReader.get_MetaData() 
     at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 
     at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 
     at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) 
     at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) 
     at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) 
     at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) 
     at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) 
     at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 
     at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 
     at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) 
     at Microsoft.Practices.EnterpriseLibrary.Data.Database.DoLoadDataSet(DbCommand command, DataSet dataSet, String[] tableNames) 
     at Microsoft.Practices.EnterpriseLibrary.Data.Database.LoadDataSet(DbCommand command, DataSet dataSet, String[] tableNames) 
     at Microsoft.Practices.EnterpriseLibrary.Data.Database.LoadDataSet(DbCommand command, DataSet dataSet, String tableName) 
     at Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteDataSet(DbCommand command) 
     at Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteDataSet(CommandType commandType, String commandText) 
     at Database.cDatabase.getDataSetonDataTable(String query, String sDatabaseConnection) in D:\My Project\ClassLibraryKalbe\Database\cDatabase.vb:line 117 

如何將超時設置爲較長時間段?
我在Visual Studio 2005中使用vb.net
在此先感謝。

回答

相關問題