SQL Server 錯(cuò)誤 ''80040e31'' 超時(shí)已過(guò)期
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
一種可能是數(shù)據(jù)庫(kù)文件在增加的時(shí)候超時(shí)了,而不是平常常以為的具體的SQL語(yǔ)句超時(shí)。把 FILEGROWTH 設(shè)置為一個(gè)更低的值,可能會(huì)恢復(fù)這個(gè)錯(cuò)誤。 FILEGROWTH 的設(shè)置就是在數(shù)據(jù)庫(kù)的 Enterprise Manager 中,對(duì)數(shù)據(jù)庫(kù)的屬性的如下窗口進(jìn)行設(shè)置: 一旦你的數(shù)據(jù)庫(kù)文件大了后,上述超時(shí)就可能出現(xiàn)。這時(shí)候不要簡(jiǎn)單地以為服務(wù)器壓力太大了。也許就是你的一個(gè)設(shè)置導(dǎo)致了超時(shí)。 默認(rèn)SQL Server 在數(shù)據(jù)庫(kù)文件滿了后,是自動(dòng)增加原數(shù)據(jù)庫(kù)文件的10%大小,用來(lái)繼續(xù)使用,解決方法就是把上述的文件增長(zhǎng)這里設(shè)置為一個(gè)更低的百分比或者直接指定增加多少兆字節(jié)。如果是默認(rèn)的10%的話,可能導(dǎo)致的問(wèn)題在于數(shù)據(jù)庫(kù)大小一次性需要增長(zhǎng)數(shù)G。 另外:不僅是數(shù)據(jù)文件滿會(huì)導(dǎo)致此問(wèn)題,日志文件滿也一樣。 某一條數(shù)據(jù)更新語(yǔ)句在數(shù)據(jù)庫(kù)或日志文件即將滿的時(shí)候執(zhí)行,數(shù)據(jù)庫(kù)增長(zhǎng)的IO操作會(huì)導(dǎo)致延時(shí),此延時(shí)會(huì)阻塞其他數(shù)據(jù)庫(kù)操作,連鎖反應(yīng),形成blocking。 其實(shí)此時(shí)找出一條正在阻塞的更新語(yǔ)句,在查詢分析器中執(zhí)行,此時(shí)是沒(méi)有超市時(shí)間的。忍過(guò)幾分鐘,當(dāng)這條語(yǔ)句執(zhí)行完后,數(shù)據(jù)文件就會(huì)增長(zhǎng)完成,所有的blocking也就解開(kāi)了。 微軟的 文章招錄:(由機(jī)器人翻譯) 替代方法 要變通解決此問(wèn)題, 請(qǐng)使用下列方法之一: 手動(dòng)展開(kāi)數(shù)據(jù)庫(kù)。以手動(dòng), 展開(kāi)數(shù)據(jù)庫(kù)使用 ALTERDATABASE 語(yǔ)句或 SQLServer 企業(yè)管理器。 增大的應(yīng)用程序,以便有時(shí)間來(lái)展開(kāi)數(shù)據(jù)庫(kù)服務(wù)器請(qǐng)求 DML 客戶查詢超時(shí)值。DML 提示數(shù)據(jù)庫(kù)以展開(kāi)。 例如, 如果使用 SQL 查詢分析器, 默認(rèn)查詢超時(shí)值為 0 (無(wú)限)。如果正在使用默認(rèn)值, 您不會(huì)遇到此問(wèn)題。如果不使用默認(rèn)值,增大查詢超時(shí)值。 可用于其他應(yīng)用程序(無(wú)論它們是否基于Web),您在應(yīng)用程序進(jìn)行更改。 例如, 如果您使用 ADO, 可更改 CommandTimeout 屬性 連接 或 Command 對(duì)象。
確定服務(wù)器上數(shù)據(jù)庫(kù)擴(kuò)展多長(zhǎng)時(shí)間。確定此, SQL 查詢分析器中運(yùn)行 ALTERDATABASE 語(yǔ)句,然后查看狀態(tài)欄。在您確定此, 設(shè)置客戶超時(shí)值為東西大于此值。 不要更改客戶超時(shí)值。 繼續(xù)執(zhí)行測(cè)試自動(dòng)擴(kuò)展并查看多少擴(kuò)展完成小于客戶超值中。 自動(dòng)增長(zhǎng) 選項(xiàng)設(shè)置為此新(小)值。 該文章在 2012/3/2 23:39:13 編輯過(guò)
|
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |