我最近開始了一份新工作,他們有一個與單獨的資料庫伺服器通訊的網路伺服器。最近在運行 ASP 頁面時會導致死鎖錯誤,例如:
錯誤:MSSQL 2kTransaction(進程 ID 103)在鎖資源上與另一個進程發生死鎖,並已被選為死鎖犧牲品。重新運行事務。
當asp頁面試圖存取MSSQL 2k資料庫時,會發生上述錯誤。
他們認為這是一個伺服器問題,所以我被要求處理它。任何幫助將不勝感激。
答案1
通常死鎖是資料庫設計或應用程式存取資料庫資源方式不一致的問題。通常,您可以透過對基礎設施進行變更來找到問題的解決方案。在功能測試期間通常不會發現死鎖,但在進行效能和可擴展性測試時往往會發現死鎖。
您可以透過使用追蹤來幫助開發團隊解決此問題,從而將更詳細的資訊記錄到 SQL 日誌中。
例如:DBCC TRACEON (3605,1205,-1) - 確保在捕獲日誌訊息後將其關閉 (DBCC TRACEOFF)!
接下來,驗證任何 SQL 安裝的典型事項:
- 確保它位於SP4
- 具有正確的硬體設定 - raid 1 磁碟機上的日誌檔案、raid 5 磁碟機上的資料檔案、raid 1 磁碟機上的 tempdb 以及 raid 5 磁碟機上的備份 - 我將其稱為任何真實伺服器的最小值。
- 制定了維護計劃(備份、重建索引、完整性檢查、更新統計資料)。我相信 SQL 2000 有一個用於此目的的維護計劃精靈。
最後,開始計劃遷移到 SQL 2008 R2 - SQL 2000 現在已結束主流支持,並於 2013 年退出擴展支持。