IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁數(shù)據(jù)庫MSSQL → Sql Server 數(shù)據(jù)庫超時(shí)問題的解決方法

Sql Server 數(shù)據(jù)庫超時(shí)問題的解決方法

時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)

1.由于數(shù)據(jù)庫設(shè)計(jì)問題造成SQL數(shù)據(jù)庫新增數(shù)據(jù)時(shí)超時(shí)

癥狀:

Microsoft OLE DB Provider for SQL Server 錯(cuò)誤 '80040e31' ([ODBC SQL Server Driver]超時(shí)已過期);

服務(wù)器上看CPU、內(nèi)存占用率很低;

事件日志中提示: 數(shù)據(jù)庫 '*********' 中文件 '***********' 的自動(dòng)增長在 453 毫秒后已取消或出現(xiàn)超時(shí)。使用 ALTER DATABASE 設(shè)置更小的 FILEGROWTH 或設(shè)置新的大小。

原因:

數(shù)據(jù)庫設(shè)置時(shí),[文件增長]按百分比來增長,當(dāng)數(shù)據(jù)庫文件很大時(shí)(1G以上),新增操作都會報(bào)超時(shí),而這時(shí)候其實(shí)CPU、內(nèi)存占用率都非常非常的低。

解決方法:

把上述的文件增長這里設(shè)置為一個(gè)更低的百分比或者直接指定增加多少兆字節(jié)。

2.SQL Server數(shù)據(jù)庫超時(shí)設(shè)置

修改客戶端的連接超時(shí)設(shè)置。默認(rèn)情況下,通過企業(yè)管理器注冊另外一臺SQL Server的超時(shí)設(shè)置是 4 秒,而查詢分析器是 15 秒。

企業(yè)管理器中的設(shè)置:

A、在企業(yè)管理器中,選擇菜單上的"工具",再選擇"選項(xiàng)";

B、在彈出的"SQL Server企業(yè)管理器屬性"窗口中,點(diǎn)擊"高級"選項(xiàng)卡;

C、在"連接設(shè)置"下的"登錄超時(shí)(秒)"右邊的框中輸入一個(gè)比較大的數(shù)字,如 30。

查詢分析器中的設(shè)置:

單擊"工具"->"選項(xiàng)"->"連接"; 將登錄超時(shí)設(shè)置為一個(gè)較大的數(shù)字,連接超時(shí)改為0。

3.查詢語句時(shí)超時(shí)

原因分析:

查詢超時(shí)一般來說首先要從sql語句和數(shù)據(jù)表的結(jié)構(gòu)上找原因,優(yōu)化sql語句和為數(shù)據(jù)庫的查詢字段建索引是最常用的辦法。

另外,數(shù)據(jù)庫的查詢超時(shí)設(shè)置一般是sqlserver自己維護(hù)的(在你沒有修改query wait配置前),只有當(dāng)你的實(shí)際查詢時(shí)間超過估計(jì)查詢時(shí)間的25倍時(shí),才會超時(shí)。

而造成超出估計(jì)值那么多的原因有兩種可能:

一是估計(jì)時(shí)間不準(zhǔn)確;

二是sql語句涉及到大量占用內(nèi)存的查詢(如排序和哈希操作),內(nèi)存不夠,需要排隊(duì)等待資源造成的。

解決辦法:

A.優(yōu)化語句,創(chuàng)建\使用合適的索引;

B.解決第一個(gè)問題的方法,更新要查詢表的索引分發(fā)統(tǒng)計(jì),保證估計(jì)時(shí)間的正確性,UPDATE STATISTICS 表名;

C.增加內(nèi)存

如果想手動(dòng)設(shè)置查詢超時(shí),可以使用以下語句:

sp_configure? 'show? advanced? options',? 1?
??? GO?
??? RECONFIGURE?
??? GO?
??? sp_configure? 'query? wait',? 2147483647?
??? GO?
??? RECONFIGURE?
??? GO
?
4.應(yīng)用程序連接失敗

故障:

在應(yīng)用程序中我們也會遇到類似的錯(cuò)誤信息,例如:

Microsoft OLE DB Provider for ODBC Drivers 錯(cuò)誤 '80004005'. [Microsoft][ODBC SQL Server Driver]超時(shí)已過期.

解決方法:

A.如果遇到連接超時(shí)的錯(cuò)誤,我們可以在程序中修改 Connection 對象的超時(shí)設(shè)置,再打開該連接。例如:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSNtest="DRIVER={SQL Server};SERVER=ServerName;UID=USER;
PWD=password;DATABASE=mydatabase"
Conn. Properties("Connect Timeout") = 15 '以秒為單位
Conn.open DSNtest
%>

B.  如果遇到查詢超時(shí)的錯(cuò)誤,我們可以在程序中修改 Recordset 對象的超時(shí)設(shè)置,再打開結(jié)果集。例如:

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
'同樣以秒為單位,如果設(shè)置為 0 表示無限制
rs.Open cmd1, cn
rs.MoveFirst
. . .
?
另外,一些硬件及網(wǎng)絡(luò)方面的原因也可能造成SQL數(shù)據(jù)庫連接超時(shí).

關(guān)鍵詞標(biāo)簽:Sql Server 數(shù)據(jù)庫超時(shí)

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 淺談JSP JDBC來連接SQL Server 2005的方法 淺談JSP JDBC來連接SQL Server 2005的方法 SqlServer2005對現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 SqlServer2005對現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 sql server系統(tǒng)表損壞的解決方法 sql server系統(tǒng)表損壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫用戶、角色、架構(gòu)的關(guān)系 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫用戶、角色、架構(gòu)的關(guān)系

相關(guān)下載

    人氣排行 配置和注冊O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫 SQL2000數(shù)據(jù)庫遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級到2000的正確操作步驟 sql server系統(tǒng)表損壞的解決方法 淺談JSP JDBC來連接SQL Server 2005的方法