[SQL]Msg 605, Level 21, State 3

訊息 605,層級 21,狀態 3,程序 sp_自已寫的SP_35,行 85
嘗試提取資料庫 2 中的邏輯頁 (3:269752) 失敗。它屬於配置單位 427583862145024,而非屬於 2954388358027345920。

前陣子在客戶執行某支SP時發生了以下的錯誤,

訊息 605,層級 21,狀態 3,程序 sp_自已寫的SP_35,行 85
嘗試提取資料庫 2 中的邏輯頁 (3:269752) 失敗。它屬於配置單位 427583862145024,而非屬於 2954388358027345920。

 

KB960770有針對這個問題解決!

安裝此累積更新套件之後,您必須啟用追蹤旗標 4135。若要執行此動作可以新增 -T4135 啟動參數,或者您可以為個別的工作階段使用 dbcc traceon(4135) 陳述式。

但那是針對SQL 2008,客戶的版本是 SQL 2008 R2 SP2

So...那就想別的解法,

有詢問 Super SQL Server 上的先進,有建議將tempDB的實體檔案移到別的磁碟去,如下


select DB_NAME(2) -- 應該是tempdb
--如 果一直發生這樣的狀況,可預期是tempdb所 屬disk或是file的 狀況。建議您可以使用
USE master;
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf');
GO

變更tempdb的路徑(當然該部分需要重新啟動SQL Server Instance)才會生效。

之後持續保持觀察是否有這樣況問題

 

但因為我們的客戶不能移動tempdb的位置!

所以只好修改SQL,找到那個建立temp table的地方,

增加CLUSTERED PRIMARY KEY,如下


ADD id int IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^