1.由於資料庫設計問題造成SQL資料庫新增資料時逾時
癥狀:
Microsoft OLE DB Provider for SQL Server 錯誤 "80040e31" ([ODBC SQL Server Driver]逾時已到期);
伺服器上看CPU、記憶體佔用率很低;
事件記錄中提示: 資料庫 "*********" 中檔案 "***********" 的自動成長在 453 毫秒後已取消或出現逾時。使用 ALTER DATABASE 設定更小的 FILEGROWTH 或設定新的大小。
原因:
資料庫設定時,[檔案增長]按百分比來增長,當資料庫檔案很大時(1G以上),新增操作都會報逾時,而這時候其實CPU、記憶體佔用率都非常非常的低。
解決方案:
把上述的檔案增長這裡設定為一個更低的百分比或者直接指定增加多少MB。
2.SQL Server資料庫逾時設定
修改用戶端的連線逾時設定。預設情況下,通過企業管理器註冊另外一台SQL Server的逾時設定是 4 秒,而查詢分析器是 15 秒。
企業管理器中的設定:
A、在企業管理器中,選擇菜單上的"工具",再選擇"選項";
B、在彈出的"SQL Server企業管理器屬性"視窗中,點擊"進階"選項卡;
C、在"串連設定"下的"登入逾時(秒)"右邊的框中輸入一個比較大的數字,如 30。
查詢分析器中的設定:
單擊“工具”->"選項"->"串連"; 將登入逾時設定為一個較大的數字,連線逾時改為0。
3.查詢語句時逾時
原因分析:
查詢逾時一般來說首先要從sql語句和資料表的結構上找原因,最佳化sql語句和為資料庫的查詢欄位建索引是最常用的辦法。
另外,資料庫的查詢逾時設定一般是sqlserver自己維護的(在你沒有修改query wait配置前),只有當你的實際查詢事件超過估計查詢時間的25倍時,才會逾時。
而造成超出估計值那麼多的原因有兩種可能:
一是估計時間不準確;
二是sql語句涉及到大量佔用記憶體的查詢(如排序和雜湊操作),記憶體不夠,需要排隊等待資源造成的。
解決辦法:
A.最佳化語句,建立使用合適的索引;
B.解決第一個問題的方法,更新要查詢表的索引分發統計,保證估計時間的正確性,UPDATE STATISTICS 表名;