超時時間已到。在操做完成以前超時時間已過或服務器未響應。 (.Net SqlClient Data Provider)

超時時間已到。在操做完成以前超時時間已過或服務器未響應。 (.Net SqlClient Data Provider)

在作一個小東西的時候出現了這個問題,就是使用VS調試幾回項目後,使用SQL Server Management Studio管理數據庫時,使用SA登陸就會出現這個錯誤,固然,若是項目中的數據庫鏈接字符串中使用的sa驗證,那麼項目也會連不到數據庫的.但是若是是在 Server Management Studio和項目中使用Windows身份驗證,就沒有任何問題.
提示錯誤消息以下
html


超時時間已到。在操做完成以前超時時間已過或服務器未響應。 (.Net SqlClient Data Provider)

------------------------------
有關幫助信息,請單擊: http:
//go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=-2&LinkId=20476

------------------------------
服務器名稱: ZY
-CQU
錯誤號: 
-2
嚴重性: 
11
狀態: 
0

------------------------------
程序位置:
#region 程序信息
   在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   在 System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
   在 System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
   在 System.Data.SqlClient.TdsParserStateObject.ReadPacket(Int32 bytesExpected)
   在 System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
   在 System.Data.SqlClient.TdsParserStateObject.ReadByte()
   在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   在 System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
   在 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
   在 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
   在 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
   在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
   在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
   在 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
   在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   在 System.Data.SqlClient.SqlConnection.Open()
   在 Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.ObjectExplorer.ValidateConnection(UIConnectionInfo ci, IServerType server)
   在 Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()
#endregion 程序信息

初步推斷多是因爲個人那個DBAcess類沒有正確的關閉數據庫鏈接吧.在網上搜了一通,也沒有什麼實質性的進展web


      這裏有一個帖子(點我看帖子)反映的狀況好像和個人相似,但是他沒有說具體的解決方案,僅僅提到優化了一下存儲過程數據庫


        CSDN這裏有一個相似問題(點我看原文)大意就是說要把TimeOut時間設的長一點,但是個人不是這個緣由        
        初步分析緣由爲對MSSQL操做時鏈接超時,知道這事,之前沒留意,大概是在配置文件中設置鏈接時限,在網上找了下解決方法,大多說在數據庫鏈接字符串裏解決  服務器

 

SqlConnection con  =   new  SqlConnection( " server=.;database=myDB;uid=sa;pwd=password; " )

改成:async

SqlConnection con  =   new  SqlConnection( " server=.;database=myDB;uid=sa;pwd=password;Connect Timeout=500 " )

彷佛沒效果。依然運行30秒即報超時!
忽然感受彷佛應該能夠在鏈接數據庫代碼中指明,式了下con的屬性,有個ConnectionTimeout,ide

SqlConnection con  =   new  SqlConnection( " server=.;database=myDB;uid=sa;pwd=; " );
con.ConnectionTimeout 
=   180 ; // 報錯,屬性ConnectionTimeout 爲只讀!

 嘗試失敗,再接着看command對象屬性,發現其也有相似屬性!CommandTimeout設置一下:優化

 

SqlCommand cmd  =   new  SqlCommand();
cmd.CommandTimeout 
=   180 ;

 再運行,即解決,這裏設置的時間的180秒,即三分鐘!可根據須要設置,若是過長,也能夠設置爲0,當此屬性設置爲0時表示不限制時間。此屬性值應該慎用。還須要在Web.config配置文件中設置http請求運行時限間ui

< system .web >   
< httpRuntime  maxRequestLength ="102400"  executionTimeout ="720"   />
</ system.web >

這裏設置的爲720秒,前面的屬性maxRequestLength通常用於用戶上傳文件限制大小!默認通常爲4096 KB (4 MB)。spa

相關文章
相關標籤/搜索