超時時間已到。在操作完成之前超時時間已過或伺服器未響應。 (.Net SqlClient Data Provider)(轉)

来源:http://www.cnblogs.com/yellowcool/archive/2017/09/13/7513295.html
-Advertisement-
Play Games

在做一個小東西的時候出現了這個問題,就是使用VS調試幾次項目後,使用SQL Server Management Studio管理資料庫時,使用SA登錄就會出現這個錯誤,當然,如果項目中的資料庫連接字元串中使用的sa驗證,那麼項目也會連不到資料庫的.可是如果是在 Server Management S ...


在做一個小東西的時候出現了這個問題,就是使用VS調試幾次項目後,使用SQL Server Management Studio管理資料庫時,使用SA登錄就會出現這個錯誤,當然,如果項目中的資料庫連接字元串中使用的sa驗證,那麼項目也會連不到資料庫的.可是如果是在 Server Management Studio和項目中使用Windows身份驗證,就沒有任何問題.
提示錯誤消息如下


Code
超時時間已到。在操作完成之前超時時間已過或伺服器未響應。 (.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類沒有正確的關閉資料庫連接吧.在網上搜了一通,也沒有什麼實質性的進展


--------------------------------------------------------------------------------
      這裡有一個帖子(點我看帖子)反映的情況好像和我的類似,可是他沒有說具體的解決方案,僅僅提到優化了一下存儲過程

--------------------------------------------------------------------------------
        CSDN這裡有一個類似問題(點我看原文)大意就是說要把TimeOut時間設的長一點,可是我的不是這個原因        
        初步分析原因為對MSSQL操作時連接超時,知道這事,以前沒留意,大概是在配置文件中設置連接時限,在網上找了下解決方法,大多說在資料庫連接字元串里解決   
 

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

SqlConnection con = new SqlConnection("server=.;database=myDB;uid=sa;pwd=password;Connect Timeout=500")
似乎沒效果。依然運行30秒即報超時!
突然感覺似乎應該可以在連接資料庫代碼中指明,式了下con的屬性,有個ConnectionTimeout,

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請求運行時限間

<system.web>  
<httpRuntime maxRequestLength="102400" executionTimeout="720" />
</system.web>
這裡設置的為720秒,前面的屬性maxRequestLength一般用於用戶上傳文件限制大小!預設一般為4096 KB (4 MB)。

 

解決方法,可以照下圖片的步驟來實現。原來值是600秒,改為0即可。

   

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/ulark/archive/2010/01/18/5208779.aspx

ps:本人小白一枚,對sql優化極不瞭解,希望大家可以推薦一些優化sql的博客!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在代碼運行期間動態增加功能的方式,稱之為“裝飾器”(Decorator)。 由於函數也是一個對象,而且函數對象可以賦值給變數,所以通過變數也能調用該函數。 函數對象有一個__name__屬性,可以拿到函數的名字 ...
  • Python的functools模塊提供了很多有用的功能,其中一個就是偏函數(Partial function)。要註意,這裡的偏函數和數學意義上的偏函數不一樣。 在介紹函數參數的時候,我們講到,通過設定參數的預設值,可以降低函數調用的難度。而偏函數也可以做到這一點。舉例如下: int()函數可以把 ...
  • 關鍵字lambda表示匿名函數,冒號前面的x表示函數參數。 匿名函數有個限制,就是只能有一個表達式,不用寫return,返回值就是該表達式的結果。 ...
  • 一:函數作為返回值 二:閉包 ...
  • 我們都知道linux下所有設備都是以文件存在的,所以當我們需要用到這些設備的時候,首先就需要打開它們,下麵我們來詳細瞭解一下文件I/O操作。 用到的文件I/O有以下幾個操作:打開文件、讀文件、寫文件、關閉文件等,對應用到的函數有:open、read、write、close、lseek(文件指針偏移) ...
  • cd命令用來切換工作目錄至dirname。 其中dirName表示法可為絕對路徑或相對路徑。若目錄名稱省略,則變換至使用者的home directory(也就是剛login時所在的目錄)。 另外,~也表示為home directory的意思,.則是表示目前所在的目錄,..則表示目前目錄位置的上一層目 ...
  • 1.環境: /home/jello # uname -aLinux 3.10.0 #2 SMP Mon Mar 6 17:52:09 CST 2017 armv7l GNU/Linux 2.獲取mono源碼 wget download.mono-project.com/sources/mono/mo ...
  • 1、概述 log4net是.Net下一個非常優秀的開源日誌記錄組件。log4net記錄日誌的功能非常強大。它可以將日誌分不同的等級,以不同的格式,輸出到不同的媒介。本文主要是介紹如何在Visual Studio2008中使用log4net快速創建系統日誌,如何擴展以輸出自定義欄位。 2、一個簡單的使 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...