Sql Server的數(shù)據(jù)庫(kù)超時(shí)問(wèn)題
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
一、由于數(shù)據(jù)庫(kù)設(shè)計(jì)問(wèn)題造成SQL數(shù)據(jù)庫(kù)新增數(shù)據(jù)時(shí)超時(shí) 癥狀: Microsoft OLE DB Provider for SQL Server 錯(cuò)誤 '80040e31' ([ODBC SQL Server Driver]超時(shí)已過(guò)期);
原因: 解決方法: 二、SQL Server數(shù)據(jù)庫(kù)超時(shí)設(shè)置
修改客戶端的連接超時(shí)設(shè)置。默認(rèn)情況下,通過(guò)企業(yè)管理器注冊(cè)另外一臺(tái)SQL Server的超時(shí)設(shè)置是 4 秒,而查詢分析器是 15 秒。 企業(yè)管理器中的設(shè)置: 在企業(yè)管理器中,選擇菜單上的"工具",再選擇"選項(xiàng)"; 在彈出的"SQL Server企業(yè)管理器屬性"窗口中,點(diǎn)擊"高級(jí)"選項(xiàng)卡; 在"連接設(shè)置"下的"登錄超時(shí)(秒)"右邊的框中輸入一個(gè)比較大的數(shù)字,如 30。 查詢分析器中的設(shè)置: 單擊“工具”->"選項(xiàng)"->"連接"; 將登錄超時(shí)設(shè)置為一個(gè)較大的數(shù)字,連接超時(shí)改為0。
查詢超時(shí)一般來(lái)說(shuō)首先要從sql語(yǔ)句和數(shù)據(jù)表的結(jié)構(gòu)上找原因,優(yōu)化sql語(yǔ)句和為數(shù)據(jù)庫(kù)的查詢字段建索引是最常用的辦法。 另外,數(shù)據(jù)庫(kù)的查詢超時(shí)設(shè)置一般是sqlserver自己維護(hù)的(在你沒(méi)有修改query wait配置前),只有當(dāng)你的實(shí)際查詢時(shí)間超過(guò)估計(jì)查詢時(shí)間的25倍時(shí),才會(huì)超時(shí)。 而造成超出估計(jì)值那么多的原因有兩種可能: 一是估計(jì)時(shí)間不準(zhǔn)確; 二是sql語(yǔ)句涉及到大量占用內(nèi)存的查詢(如排序和哈希操作),內(nèi)存不夠,需要排隊(duì)等待資源造成的。 這有什么辦法解決呢? 1、優(yōu)化語(yǔ)句,創(chuàng)建使用合適的索引; 2、解決第一個(gè)問(wèn)題的方法,更新要查詢表的索引分發(fā)統(tǒng)計(jì),保證估計(jì)時(shí)間的正確性,UPDATE STATISTICS 表名; 3、增加內(nèi)存。 如果想手動(dòng)設(shè)置查詢超時(shí),可以使用以下語(yǔ)句:
你會(huì)遇到這樣的故障: 在應(yīng)用程序中我們也會(huì)遇到類似的錯(cuò)誤信息,例如: Microsoft OLE DB Provider for ODBC Drivers 錯(cuò)誤 '80004005'. [Microsoft][ODBC SQL Server Driver]超時(shí)已過(guò)期. 解決方法如下: 如果遇到連接超時(shí)的錯(cuò)誤,我們可以在程序中修改 Connection 對(duì)象的超時(shí)設(shè)置,再打開(kāi)該連接。例如:
如果遇到查詢超時(shí)的錯(cuò)誤,我們可以在程序中修改 Recordset 對(duì)象的超時(shí)設(shè)置,再打開(kāi)結(jié)果集。例如:
另外,一些硬件及網(wǎng)絡(luò)方面的原因也可能造成SQL數(shù)據(jù)庫(kù)連接超時(shí)。 該文章在 2012/3/2 23:30:49 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |