2011年7月9日 星期六

如何判斷正在執行的是哪一版本的 SQL Server

SQL SERVER 2000 - 2008 使用
SELECT SERVERPROPERTY('productversion'),SERVERPROPERTY ('productlevel'),SERVERPROPERTY ('edition')

SQL SERVER 6.5 - 7.0 使用
SELECT @@VERSION

2011年7月8日 星期五

SQL Server 偵測到邏輯的一致性 I/O 錯誤

訊息 8921,層級 16,狀態 1,行 1
檢查結束。收集事實時偵測到失敗。可能是由於 tempdb 空間用完或系統資料表不一致。請檢查先前的錯誤。
訊息 824,層級 24,狀態 2,行 1
SQL Server 偵測到邏輯的一致性 I/O 錯誤: 不正確的頁面識別碼 (預期是 1:98000; 實際是 0:0)。這是當在檔案 'D:\MSSQL\CSERPSOFT.mdf' 中位移 0x0000002fda0000 的資料庫識別碼 5 之頁面 (1:98000) 進行 讀取 的期間所發生的。SQL Server 錯誤記錄檔和系統事件記錄檔中的訊息,或許可以提供其他詳細資訊。這是嚴重的錯誤狀況,且可能會損及資料庫的完整性,所以必須立即更正。請執行完整的資料庫一致性檢查 (DBCC CHECKDB)。會導致這個錯誤的原因有許多可能性; 如需詳細資訊,請參閱《SQL Server 線上叢書》。

此問題通常都是硬碟異常引起

1. 請先備份資料庫檔案
2. 利用Microsoft SQL Server Management Studio建立一新資料庫
    將損毀的資料庫中的資料表紀錄
    利用Insert * into NewDataBase.dbo.TableName FROM TableName 轉出
3. 使用下列方式處理
    1. 設定有疑問的資料庫為緊急模式
      ALTER DATABASE cserpsoft SET EMERGENCY
    2. 檢查資料庫狀態
      DBCC checkdb('cserpsoft')
    3. 設定資料庫為SINGLE_USER 和 修復模式
       ALTER DATABASE cserpsoft SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    4. 進行修復
      DBCC CheckDB ('cserpsoft', REPAIR_ALLOW_DATA_LOSS)
    5. 還原資料庫為多人使用模式
       ALTER DATABASE cserpsoft SET MULTI_USER
4. 檢查硬碟並且修復