Wednesday, August 25, 2010

Error: 5243: An inconsistency was detected during an internal operation.

Environment: WinServer2008 SP2+SQL Server 2008

昨天檢查SQL Server的時候在記錄檔裡看見一整串長相不凡的訊息... 大概長這樣:

ex_raise2: Exception raised, major=52, minor=43, state=8, severity=22, attempting to create symptom dump
Using 'dbghelp.dll' version '4.0.5'
***Stack Dump being sent to D:\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\LOG\SQLDump0001.txt
... (略)
錯誤: 5243,嚴重性: 22,狀態: 8。
An inconsistency was detected during an internal operation. Please contact technical support.

最明顯的訊息大概就最後兩行了吧... 另外一個dump file內容更是人類無法閱讀=   =,明顯是要給機器讀的。

先是找到這篇: M$技術支援, Article ID:828337: An assertion or Msg 7987 may occur when an operation is performed on an instance of SQL Server.
標題看起來不怎麼有關係,不過內容確實有一些蛛絲馬跡。最早在SQL Server2000執行SELECT或UPDATE之類的transact-SQL時,就可能會有3624的錯誤訊息,而同樣的錯誤在SQL Server2005, 2008則是錯誤5242或5243。

造成5242/5243錯誤的原因只有簡單一小行: The problem may occur if inconsistencies exist in the databases on the instance of SQL Server....
還好相當有良心的還有solution..

  1. On the instance of SQL Server where the failure occurred, run the DBCC CHECKDB Transact-SQL command on all the databases.
  2. If the DBCC CHECKDB Transact-SQL command reports errors that indicate database inconsistencies, resolve the errors.

哈哈哈(乾笑三聲)... 一點都沒有好人做到底,送佛送到西的精神XD,連CHECKDB都不認識請參閱這兒(2000)或這兒(2008)。

所以就找了時間針對SQL Server裡的每個資料庫跑了下面這串指令。

DBCC CHECKDB(‘DB_NAME’) WITH ALL_ERRORMSGS;

(如果資料庫真的相當龐大,建議加個PHYSICAL_ONLY選項..)
結果每個資料庫的檢查結果都正常@_@a.. 雖然是個好消息,不過還是滿令人錯愕的阿XD 資料庫不會平白無故地耍人吧OTZ,所以不死心又多看了幾篇文章,終於,Paul S. Randal先生(SQL Server MVP, 撰寫2005 DBCC CHECKDB的人,這篇文章最後有簡介)給了個比較讓人釋懷的說明

基本上5242跟5243是一樣的錯誤,不過5242會明確指出資料庫的哪個地方出了問題,5243卻是不明原因,資料庫無法指出的錯誤所丟出來的。雖然記錄檔紀錄了相關的訊息,這中間有可能其他的維護作業重建了索引,currupt pages被釋放,所以事後跑checkdb就看不出有任何錯誤。

大致上就這樣囉~

Ref:

  1. Microsoft Support KB828337
  2. MSDN: DBCC CHECKDB (SQL Server2008)
  3. Corruption errors: Msg 5242, Level 22
Thursday, August 05, 2010

[Mobile Phone] EDGE, 3G and HSDPA

筆記一下行動電話通訊技術:

  • GSM(Global System for Mobile Communication), 全球行動通訊系統
    GSM是目前傳統行動電話最廣泛使用的通訊標準,1990年由歐洲電信標準協會(ETSI)制定出第一版標準,發展至今。GSM也是我們熟知的2G--二代行動通訊;二代與前代的最大差異就是在他的信號與語音通道都是數位的。也因為GSM標準的廣泛使用,使全球行動電話廠商間可簽訂"漫遊協定",讓用戶於不同國家也能使用行動電話(使用漫遊服務)。
  • GPRS(General Packet Radio Service), 通用封包無線服務
    GPRS是GSM行動電話用戶可用的一種移動數據服務,約於2000年開始商用,被視為是2.5G。它使用GSM網路中未被使用的TDMA通道,使得GSM系統能夠以效率更高的"封包"方式提供數據通訊,也就是說多個用戶可以共享一個相同的傳輸通道,每個用戶只有在傳輸數據的時候才會佔用通道;所以其計費方式也不同於電路交換的以秒計費,而是以KB計。
  • EDGE(Enhanced Data rates for GSM Evolution), GSM數據速度增強版
    EDGE約於2003年開始商用,亦不屬於GSM網路中,可視為GSM(2G)和GPRS(2.5G)的延伸,所以有時稱為2.75G。EDGE也可寫作EGPRS, Enhanced GPRS, 因為它引進一個GPRS所沒有使用的技術: Incremental Redundancy, 此技術使用更多的冗於資訊來與接收端連接,取代重新發送受干擾的封包,藉此提高解碼的正確性。雖是介於2G與3G間,但是EDGE的數據傳輸最大理論值473.6Kbps已經達到3G標準。
  • 3G(3rd-Generation), 第三代行動通訊
    3G,也就是IMT-2000,是國際電信聯盟(ITU)定義的第三代無線通訊的全球標準,於1988年開始由3GPP制定規範。3G將無線通訊與國際網際網路等多媒體通訊結合,能同時傳送聲音(通話)及數據資訊(電子郵件、即時通訊等)。無線網路必須能夠支持不同的數據傳輸速度,也就是說在室內、室外和行車的環境中能夠分別支持至少2Mbps、 384kbps以及144kbps的傳輸速度。由於採用蜂巢式行動通訊技術,3G標準的通訊質量較之前大幅改善。
  • HSDPA(High-Speed Downlink Packet Access), 高速下行封包存取
    3.5G, 基於3G網路系統,可提供高達7.2mbit/s的數據傳輸速度。

Ref:

  1. [Wiki] GSM
  2. [Wiki] GPRS
  3. [Wiki] EDGE
  4. [Wiki] 3G
  5. [Wiki] HSDPA
  6. [Clove] Guide to GSM, GPRS, EDGE, 3G and HSDPA

The lost July..

消失的七月.. XD 相當不長進的一篇文章都沒有。

Tags