引起SQL數據庫超時的一種問題_動易Cms教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!
       錯誤信息是最常見的那種:Microsoft OLE DB Provider for SQL Server 錯誤 '80040e31'[ODBC SQL Server Driver]超時已過期)

      服務器上看CPU、內存,都非常非常的低呀,這么低的占用率也能導致超時!后來到處查看,后來在事件日志中看到一個非警告的日志:

      事件類型: 信息
      事件來源: MSSQLSERVER
      事件種類: (2)
      事件 ID: 17055
      日期: 2005-8-23
      事件: 9:39:00
      用戶: N/A
      計算機: ********
      描述:
      5144:
      數據庫 '*********' 中文件 '***********' 的自動增長在 453 毫秒后已取消或出現超時。使用 ALTER DATABASE 設置更小的 FILEGROWTH 或設置新的大小。


      竟然是數據庫文件在增加的時候超時了!而不是平經常以為的具體的SQL語句超時。把 FILEGROWTH 設置為一個更低的值,ok 一切都恢復了。

      FILEGROWTH 的設置就是在數據庫的 Enterprise Manager 中,對數據庫的屬性的如下窗口進行設置:


      此主題相關圖片如下:
      按此在新窗口瀏覽圖片

      一旦你的數據庫文件大了后,上述超時就可能出現。這時候不要簡單地以為服務器壓力太大了。也許就是你的一個設置導致了超時。

      默認SQL Server 在數據庫文件滿了后,是自動增加原數據庫文件的10%大小,用來繼續使用。

      假如你的數據庫文件很大了,這時候麻煩就來了,因為大文件*10%,是很大的。

      然后其它所有的新增操作都會報超時,而這時候其實CPU、內存占用率都非常非常的低。

      解決方法就是把上述的文件增長這里設置為一個更低的百分比或者直接指定增加多少兆字節。

      這個問題,在企業的生產環境中經常碰到。不僅是數據文件滿會導致此問題,日志文件滿也一樣。某一條數據更新語句在數據庫或日志文件即將滿的時候執行,數據庫增長的IO操作會導致延時,此延時會阻塞其他數據庫操作,連鎖反應,形成blocking。

      其實此時找出一條正在阻塞的更新語句,在查詢分析器中執行,此時是沒有超時時間的。忍過幾分鐘,當這條語句執行完后,數據文件就會增長完成,所有的blocking也就解開了

      查看更多 動易Cms教程  動易Cms模板

      來源:模板無憂//所屬分類:動易Cms教程/更新時間:2006-11-16
      相關動易Cms教程