MSSQL資料庫超時的原因與解決方法
MSSQL資料庫超時的原因與解決方法【199cloud艾娜小編】
如果SQL的資料庫越來越多,有時候會遇到讀取超時,鎖等一大堆問題,按經驗來說,資料結構設計不合理,經常使用檢視等原因都有,那些怎麼解決呢?
1、由於資料庫設計問題造成SQL資料庫新增資料時超時
症狀:
A、
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e31'
[ODBC SQL Server Driver]超時已過期)
B、伺服器上看CPU、記憶體佔用率很低;
C、事件日誌中提示: 資料庫 '*********' 中檔案 '***********' 的自動增長在 453 毫秒後已取消或出現超時。使用 ALTER DATABASE 設定更小的 FILEGROWTH 或設定新的大小。
原因:
資料庫設定時,[檔案增長]按百分比來增長,當資料庫檔案很大時(1G以上),新增操作都會報超時,而這時候其實CPU、記憶體佔用率都非常非常的低。
解決方法:
把上述的檔案增長這裡設定為一個更低的百分比或者直接指定增加多少兆位元組。
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 表名;
C、增加記憶體。
如果想手動設定查詢超時,可以使用以下語句:
sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'query wait', 2147483647
GO
RECONFIGURE
GO
4、應用程式連線失敗
故障:
在應用程式中我們也會遇到類似的錯誤資訊,例如:
Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80004005'
[Microsoft][ODBC SQL Server Driver]超時已過期
解決方法:
A、如果遇到連線超時的錯誤,我們可以在程式中修改 Connection 物件的超時設定,再開啟該連線。例如:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSNtest="DRIVER={SQL Server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=mydatabase"
Conn. Properties("Connect Timeout") = 15 '以秒為單位,0表示不限制
Conn.open DSNtest
%>
B、如果遇到查詢超時的錯誤,我們可以在程式中修改 Recordset 物件的超時設定,再開啟結果集。例如:
Dim cn As New ADODB.Connection
Dim rs As ADODB.Recordset
cmd1 = txtQuery.Text
Set rs = New ADODB.Recordset
rs.Properties("Command Time Out") = 300
'同樣以秒為單位,如果設定為 0 表示無限制
rs.Open cmd1, cn
rs.MoveFirst
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69975301/viewspace-2694063/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫連線錯誤的原因及解決方法資料庫
- 資料庫連線失敗的原因及解決方法資料庫
- mssql2008使用者預設資料庫登陸失敗的解決方法SQL資料庫
- 建立資料庫時“Insufficient privileges”的解決方法DK資料庫
- Linux 動態庫 undefined symbol 原因定位與解決方法LinuxUndefinedSymbol
- MYSQL++ 資料庫連線超時的解決辦法LTMySql資料庫
- 解析MSSQL跨資料庫查詢的實現方法SQL資料庫
- mssql sqlserver 使用sql指令碼 清空所有資料庫表資料的方法分享SQLServer指令碼資料庫
- mssql資料庫異地進行異地備份的方法SQL資料庫
- 資料庫匯入匯出時報ORA-01843的解決方法資料庫
- MsSql 資料庫使用sqlplus建立DDL和DML操作方法SQL資料庫
- 實時資料庫與時序資料庫資料庫
- oracle資料庫CPU特別高的解決方法Oracle資料庫
- SQLPro for MSSQL for Mac(MSSQL資料庫客戶端) v2020.68SQLMac資料庫客戶端
- 解密MSSQL連結資料庫的密碼解密SQL資料庫密碼
- MSSQL系列 (一):資料庫的相關操作SQL資料庫
- 解決代理超時問題的三種方法
- pip安裝selenium超時解決方法
- (資料庫十)資料庫中的鎖機制以及死鎖產生的原因及解決辦法資料庫
- MsSql資料庫使用SQL plus建立DDL和DML操作方法SQL資料庫
- 資料庫連結時的時區問題serverTimezone永久解決資料庫Server
- 資料庫高併發解決方法總結資料庫
- mssql生成資料庫字典指令碼-MarkDownSQL資料庫指令碼
- 資料庫——慢sql的原因資料庫SQL
- 硬碟資料丟失原因和解決方案/資料恢復方法硬碟資料恢復
- Mybatis解決實體類屬性名與資料庫列名不對應的方法MyBatis資料庫
- 常見的HTTP介面超時問題出現原因及解決辦法HTTP
- 解決無法連線SQL Server資料庫的方法BWSQLServer資料庫
- MSSQL-最佳實踐-資料庫恢復模式與備份的關係SQL資料庫模式
- Selenium爬蟲遇到超時TimeOut問題的解決方法爬蟲
- 安裝mysql資料庫及問題解決方法MySql資料庫
- MYSQL資料庫匯入資料時出現亂碼的解決辦法MySql資料庫
- GitHub下載慢的原因及解決方法Github
- MySQL併發時經典常見的死鎖原因及解決方法MySql
- 資料庫查詢慢的原因資料庫
- linux-wdt 原理和任意超時時間設定的解決方法Linux
- 使用requests庫解決Session物件設定超時的問題Session物件
- oracle 程式滿了,登陸不上資料庫的解決方法Oracle資料庫