ãã®èšäºã§ã¯ãæå·ããããŒã¿ããŒã¹ã§ã¯ã§ããªãããšã説æããå®è¡ããå¿ èŠããããã®ãæå·ã®çš®é¡ãããã³ããããä¿®æ£ããæ¹æ³ã«ã€ããŠèª¬æããŸãã
ããŒã¿ããŒã¹ãç ŽæããŠããããšãæ€åºããæ¹æ³
éåžžãç ŽæããããŒãžã«ã¢ã¯ã»ã¹ããããšãããšãç Žæãéåžžã«æ€åºãããŸãã ãªã¯ãšã¹ããããã¯ã¢ããããŸãã¯ã€ã³ããã¯ã¹åäœæã®æé ã«ãããé倧床ã¬ãã«ã®é«ããšã©ãŒãçºçããŸãã
ããŒã¿ããŒã¹ã®ç Žæãæ€åºãããå Žåã®ã·ã¹ãã ã¡ãã»ãŒãžã®äŸã次ã«ç€ºããŸãã
SQL Serverã¯ãè«ççãªäžè²«æ§ããŒã¹ã®I / Oãšã©ãŒãæ€åºããŸããïŒãã§ãã¯ãµã ãæ£ãããããŸããïŒäºæ³ãããå€ïŒ0xfdff74c9;å®éã®å€ïŒ0xfdff74cbïŒã ãã¡ã€ã« 'DïŒ\ Develop \ Databases \ Broken1.mdf'ã®ãªãã»ãã0x0000002229a000ã«ããããŒã¿ããŒã¹ID 13ã®ããŒãžïŒ1ïŒ69965ïŒã®èªã¿åãäžã«çºçããŸããã
è«çããŒãž1ããã§ããããããšããŸããïŒããŒã¿ããŒã¹13ã®69965ã倱æããŸããã 281474980642816ã§ã¯ãªããå²ãåœãŠãŠããã72057594049069056ã«å±ããŸããäž»ãªåé¡ã¯ãããŒã¿ããŒã¹ã®æŽåæ§ãã§ãã¯ãç¶ç¶çã«å®è¡ãããŠããªãå Žåãäœããä¿®æ£ããã®ãé£ããç¬éã«ãæ°æéåŸãæ°æ¥åŸãããã«ã¯æ°ãæåŸã«æå·ãæ€åºã§ããããšã§ãã ã
ããŒã¿ããŒã¹ããçããããç¶æ ïŒ SQL Serverã®ãã·ã¢èªçã§ã¯ãçãããã-ãããTranslator ïŒã«ãªã£ããšãã®ç¶æ³ã«ã€ããŠã¯èª¬æããŸããã ããŒã¿ããŒã¹ããçããããç¶æ ã«ãªãå¯èœæ§ã®ããããããçš®é¡ã®çç±ã®èª¬æãšããããä¿®æ£ããããã®å€ãã®ãªãã·ã§ã³ã¯ãæ¬ã§ã¯ãªãã«ããŠããå¥ã®èšäºã®ãããã¯ã§ãã
ããŒã¿ããŒã¹ããŸã ç ŽæããŠããå Žåã®å¯ŸåŠæ¹æ³
- ãããã¯ã«ãªããªãã§
- åãå€ããªãã§ãã ãã
- SQL Serverãåèµ·åããªãã§ãã ãã
- ããã«åŸ©æ§ãéå§ããªãã§ãã ãã
- æŽåæ§ãã§ãã¯ãå®è¡ãã
- çç±ãèŠã€ãã
ãããã¯ã«ãªããªãã§ãã ãã
ããŒã¿ããŒã¹ã®ç Žæãæ€åºããéã®æãéèŠãªããšã¯ããããã¯ã«é¥ããªãããšã§ãã 決å®ã¯æ éã«æ€èšããå¿ èŠããããèãããããã¹ãŠã®èŠå ãèæ ®ããå¿ èŠããããŸãã äžæ確ãªæ±ºå®ãäžãããšã§ç¶æ³ãæªåãããã®ã¯ç°¡åã§ãã
ããŒã¿ããŒã¹ããã¿ããããªãã§ãã ãã
ã»ãšãã©ã®å ŽåãSQL ServerãããŒã¿ããŒã¹ã®ç Žæãæ€åºãããšãããŒã¿ããŒã¹ã«å®éã«ç ŽæããããŒãžãããããšãæå³ããŸãã ããŒã¿ããŒã¹ã®ãã¿ãããšã¢ã¿ãããããã¯ã¢ãããšåŸ©å ãSQL ServerãµãŒãã¹ã®åèµ·åããŸãã¯ãµãŒããŒã®åèµ·åã«ãã£ãŠããããäºå®ã§ã¯ãªãããšãSQL Serverã«çŽåŸãããããšããŠãããšã©ãŒã¯æ¶ããŸããã
ããŒã¿ããŒã¹ãç ŽæããSQL Serverãæ¥ç¶æã«ãããæ€åºããå ŽåãããŒã¿ããŒã¹ãæ¥ç¶ã§ããŸããã ãã®ããŒã¿ããŒã¹ã衚瀺ããæ¹æ³ã¯ããã€ããããŸãããåæããªãæ¹ãã¯ããã«è¯ãæ¹æ³ã§ãã
SQL Serverãåèµ·åããªãã§ãã ãã
åæããŠåå ãããšããšåãããã«ãSQL ServerãµãŒãã¹ãåèµ·åããŠããæ€åºããããšã©ãŒïŒååšããå ŽåïŒãä¿®æ£ããããšã¯ã§ããŸããã
ãµãŒãã¹ãåèµ·åãããšãç¶æ³ãæªåããå¯èœæ§ããããŸãã SQL Serverã¯ãåèµ·ååŸã®ããŒã¿ããŒã¹ãªã«ããªãã§ãŒãºäžã«ãšã©ãŒãæ€åºãããšããçãããããšããŒã¯ããããŒã¿ããŒã¹ãªã«ããªããã»ã¹ãå€§å¹ ã«è€éã«ããŸãã
ããã«åŸ©æ§ãéå§ããªãã§ãã ãã
ãå埩ããªãã·ã§ã³ïŒéåžžã¯ããŒã¿æ倱ïŒã®1ã€ã䜿çšããŠDBCC CHECKDBãå®è¡ããã ãã§ãç¶æ³ãæ¹åãããããšãæåŸ ãããããããŸããïŒ ç§ã®çµéšã§ã¯ãéã³ã¢SQL Serverãã©ãŒã©ã ã§æåã«æšå¥šãããã®ã¯DBCC CHECKDB REPAIR_ALLOW_DATA_LOSSãå®è¡ããããšã§ã-翻蚳è ã®ã³ã¡ã³ã ïŒã å€ãã®å Žåããã®ãããªå埩ãéå§ããããšã¯ãå§ãããŸããã ãã¹ãŠã®ãšã©ãŒã®ä¿®æ£ãä¿èšŒãããã®ã§ã¯ãªãã蚱容ã§ããªãããŒã¿ã®æ倱ã«ã€ãªããå¯èœæ§ããããŸãã
ãã®å埩ã¯ããšã©ãŒãä¿®æ£ããæåŸã®ã¹ãããã§ãã ä»ã®éžæè¢ããªãå Žåã«ã®ã¿éå§ããå¿ èŠããããŸãããããããéå§ããªãã§ãã ããã
æŽåæ§ãã§ãã¯ãå®è¡ãã
ããŒã¿ããŒã¹ã®ä¿®æ£æ¹æ³ã決å®ããããã«ã¯ãæ£ç¢ºã«äœãç ŽæããŠãããã確å®ã«ç¥ãå¿ èŠããããŸãã ãããææ¡ã§ããå¯äžã®æ¹æ³ã¯ãAll_ErrorMsgsãã©ã¡ãŒã¿ãŒãæå®ããŠDBCC CHECKDBãå®è¡ããããšã§ãïŒSQL Server 2005 SP3ãSQL Server 2008 SP1ãããã³ä»¥åã®ããŒãžã§ã³ã§ã¯ããã®ãã©ã¡ãŒã¿ãŒã¯æ¢å®ã§æå¹ã«ãªã£ãŠãããããæå®ããå¿ èŠã¯ãããŸããïŒã No_InfoMsgsãã©ã¡ãŒã¿ãŒãæå®ããã«DBCC CHECKDBãå®è¡ãããšããã®ããã·ãŒãžã£ã®åºåã«ã¯åããŒãã«ã®è¡ãšããŒãžã®æ°ã«é¢ããæ å ±ãå«ãŸããããšã«æ³šæããŠãã ããã
DBCC CHECKDBã¯ã倧èŠæš¡ãªããŒã¿ããŒã¹ã§ã®å®è¡ã«æéããããå ŽåããããŸããããã®æé ãå®äºãããŸã§åŸ ã€å¿ èŠããããŸãã ããŒã¿ããŒã¹ã«ãã¹ãŠã®åé¡ã«é¢ããæ å ±ãããå Žåã«ã®ã¿ãæèœãªå埩æŠç¥ãæ§ç¯ã§ããŸãã
çç±ãèŠã€ãã
ãšã©ãŒãä¿®æ£ããããšãäœæ¥ãçµäºãããšèŠãªãããšã¯ã§ããŸããã ãããã®ãšã©ãŒã®åå ãç¹å®ãããŠããªãå Žåãåã³çºçããå¯èœæ§ããããŸãã éåžžããšã©ãŒã®äž»ãªåå ã¯I / Oãµãã·ã¹ãã ã®åé¡ã§ããããäœã¬ãã«ãœãããŠã§ã¢ãïŒã¢ã³ããŠã€ã«ã¹ãªã©ïŒã®èª€æäœã人éã®è¡åããŸãã¯SQL Serverã®ãã°èªäœã«ãã£ãŠãçºçããå¯èœæ§ããããŸãã
次ã¯äœã§ãã
ãšã©ãŒãå®å šãã€å®å šã«ä¿®æ£ããããã®è¿œå æé ã¯ãCheckDBã®çµæã«äŸåããŸãã å°ãå ã«ãæãé »ç¹ã«çºçãããšã©ãŒã®ããã€ãã瀺ããŸãïŒãã®èšäºã¯ãããããçš®é¡ã®ãšã©ãŒã®å®å šãªèª¬æã䞻匵ãããã®ã§ã¯ãªãããšã«æ³šæããŠãã ããïŒã
èšèŒãããŠãããšã©ãŒã¯ãé倧床ã®äœãé ã«äžŠã¹ãããŠããŸãã äžè¬ã«ãCheckDBã§æ€åºãããæãé倧ãªãšã©ãŒã«ã€ããŠã¯ããããã解決ããããã«å©çšå¯èœãªã¡ãœããã®èª¬æããããŸãã
èšäºã«èšèŒãããŠããªããšã©ãŒãçªç¶èŠã€ãã£ãå Žåã¯ãæåŸã®ã»ã¯ã·ã§ã³ããã«ãã®æ€çŽ¢ãã«æ³šæããŠãã ããã
ç¡å¹ãªããŒãžã¹ããŒã¹æ å ±
ã¡ãã»ãŒãž2508ãã¬ãã«16ãç¶æ 3ãè¡1SQL Server 2000ã§ã¯ãã¡ã¿ããŒã¿ã«æ ŒçŽãããŠããããŒãã«ãŸãã¯ã€ã³ããã¯ã¹ã®è¡ãšããŒãžã®æ°ãæ£ãããªãïŒããã«ã¯ãã€ãã¹ã«ãªãïŒå¯èœæ§ããããDBCC CHECKDBã¯ããã«é¢ããŠäœãééã£ãŠããŸããã§ããã SQL Server 2005ã§ã¯ããã®çªå·ã¯æ£ç¢ºã§ããå¿ èŠããããCheckDBã¯çªç¶äžäžèŽãæ€åºããå Žåã«èŠåãçºè¡ããŸãã
ãªããžã§ã¯ã "Broken1"ãã€ã³ããã¯ã¹ID 0ãããŒãã£ã·ã§ã³ID 76911687695381ãå²ãåœãŠãŠãããID 76911687695381ïŒè¡å ããŒã¿åïŒã®è¡å ããŒã¿RSVDããŒãžæ°ãæ£ãããããŸããã DBCC UPDATEUSAGEãå®è¡ããŸãã
ããã¯è»œåŸ®ãªåé¡ã§ãããéåžžã«ç°¡åã«è§£æ±ºã§ããŸãã ã¡ãã»ãŒãžã«èšèŒãããŠããããã«ãç®çã®ããŒã¿ããŒã¹ã®ã³ã³ããã¹ãã§DBCC UPDATEUSAGEãå®è¡ããã ãã§ãèŠåãæ¶ããŸãã ãã®ãšã©ãŒã¯ãSQL Server 2000ããã¢ããã°ã¬ãŒããããããŒã¿ããŒã¹ã§ã¯äžè¬çã§ãããSQL Server 2005/2008ã§äœæãããããŒã¿ããŒã¹ã«ã¯è¡šç€ºãããŸããã
ã¡ãã»ãŒãž8914ãã¬ãã«16ãç¶æ 1ãè¡1ãã®ãšã©ãŒã¯ãããŒã¿ããŒã¹å ã®ããŒãžã®ç©ºãç¶æ³ãèæ ®ããPFSããŒãžïŒããŒãžã®ç©ºãé åïŒã«èª€ã£ãå€ãå«ãŸããŠããå Žåã«è¡šç€ºãããŸãã åè¿°ã®ããã«ããã®ãšã©ãŒã¯é倧ã§ã¯ãããŸããã SQL Server 2000ã§ããŒãžãã©ãã ããã£ã±ãã«ãªã£ãŠããããå€æããããã«äœ¿çšãããã¢ã«ãŽãªãºã ã¯ãåžžã«æ£ããæ©èœããŸããã§ããã ãã®åé¡ã解決ããã«ã¯ãREPAIR_ALLOW_DATA_LOSSãã©ã¡ãŒã¿ãŒãæå®ããŠDBCC CHECKDBãå®è¡ããå¿ èŠããããŸãããããããŒã¿ããŒã¹å ã®å¯äžã®ãšã©ãŒã§ããå ŽåãããŒã¿ã¯å®éã«ã¯åœ±é¿ãåããŸããã
ãªããžã§ã¯ãID 181575685ãã€ã³ããã¯ã¹ID 1ãããŒãã£ã·ã§ã³ID 293374720802816ãå²ãåœãŠãŠãããID 76911687695381ïŒã¿ã€ãLOBããŒã¿ïŒã®ããŒãžïŒ1ïŒ26839ïŒã®PFS空ãé åæ å ±ãæ£ãããããŸããã æåŸ å€0_PCT_FULLãå®éã®å€100_PCT_FULLã
éã¯ã©ã¹ã¿ãŒåã€ã³ããã¯ã¹ã®ã¿ã«ãã¡ãŒãžãäžãã
CheckDBã«ãã£ãŠæ€åºããããã¹ãŠã®ãšã©ãŒãID = 2以äžã®ã€ã³ããã¯ã¹ã«é¢é£ããŠããå Žåãããã¯éã¯ã©ã¹ã¿ãŒåã€ã³ããã¯ã¹ã®ã¿ãç ŽæããŠããããšãæå³ããŸãã éã¯ã©ã¹ã¿ãŒåã€ã³ããã¯ã¹ã«å«ãŸããæ å ±ã¯ãåé·ãã§ããããïŒ åãããŒã¿ãããŒããŸãã¯ã¯ã©ã¹ã¿ãŒã€ã³ããã¯ã¹ã«ä¿åãããŸã-ãããTranslator ïŒããããã®æå·ã¯ããŒã¿ã倱ãããšãªã修埩ã§ããŸãã
CheckDBã§æ€åºããããã¹ãŠã®ãšã©ãŒãéã¯ã©ã¹ã¿ãŒåã€ã³ããã¯ã¹ã«é¢é£ããŠããå ŽåãDBCC CHECKDBã®æšå¥šããããå埩ã¬ãã«ãã¯REPAIR_REBUILDã§ãã ãã®ãããªãšã©ãŒã®äŸïŒå®éããã®ã¿ã€ãã®ãšã©ãŒã¯ã¯ããã«å€ããããŸãïŒïŒ
ã¡ãã»ãŒãž8941ãã¬ãã«16ãç¶æ 1ãè¡1
ããŒãã«ãšã©ãŒïŒãªããžã§ã¯ãID 181575685ãã€ã³ããã¯ã¹ID 4ãããŒãžïŒ3ïŒ224866ïŒã ãã¹ãïŒãœãŒãæžã¿[i] .offset> = PAGEHEADSIZEïŒã倱æããŸããã ã¹ããã159ããªãã»ãã0x1ã¯ç¡å¹ã§ãã
ã¡ãã»ãŒãž8942ãã¬ãã«16ãç¶æ 1ãè¡1ãã®å Žåãç Žæããéã¯ã©ã¹ã¿ãŒåã€ã³ããã¯ã¹ãåé€ããŠåäœæããããšã«ãããç Žæãå®å šã«ä¿®åŸ©ã§ããŸãã ã€ã³ããã¯ã¹ïŒALTER INDEX REBUILDïŒããªã³ã©ã€ã³ïŒããã³ãªãã©ã€ã³ïŒã§åæ§ç¯ãããšãå€ãã€ã³ããã¯ã¹ã®ããŒãžãèªã¿åãããŠæ°ããã€ã³ããã¯ã¹ãäœæãããããã倱æããŸãã ãããã£ãŠãå€ãã€ã³ããã¯ã¹ãåé€ããŠåäœæããå¿ èŠããããŸãã
ããŒãã«ãšã©ãŒïŒãªããžã§ã¯ãID 181575685ãã€ã³ããã¯ã¹ID 4ãããŒãžïŒ3ïŒ224866ïŒã ãã¹ãïŒãœãŒãæžã¿[i] .offset> = maxïŒã倱æããŸããã ã¹ããã0ããªãã»ãã0x9fã¯åã®è¡ãšéè€ããŠããŸãã
ããã¯ãDBCC CHECKDBãREPAIR_REBUILDãã©ã¡ãŒã¿ãŒã䜿çšããŠè¡ãããšãšãŸã£ããåãã§ãããããŒã¿ããŒã¹ã¯ã·ã³ã°ã«ãŠãŒã¶ãŒã¢ãŒãã§ããå¿ èŠããããŸãã ãã®ãããéåžžããããã®æäœãæåã§å®è¡ããŠãã€ã³ããã¯ã¹ãåäœæãããŠããéãããŒã¿ããŒã¹ãæ©èœãç¶ããããšãæåã§ãã
å¿ èŠãªã€ã³ããã¯ã¹ãåäœæããã®ã«ååãªæéããªãããã¯ãªãŒã³ããªïŒãšã©ãŒã®ãªãïŒå®å šããã¯ã¢ãããšããã°ã®åãç®ã®ãªããã©ã³ã¶ã¯ã·ã§ã³ãã°ã®ããã¯ã¢ãããããå Žåãç ŽæããããŒãžã埩å ã§ããŸãã
LOBããŒãžã®ç Žæ
ã¡ãã»ãŒãž8964ãã¬ãã«16ãç¶æ 1ãè¡1ãã®ãšã©ãŒã¯ãããŒã¿ããŒãžããªã³ã¯ããŠããªãLOBããŒãžïŒå€§ããªãªããžã§ã¯ãïŒãããããšã瀺ããŠããŸãã ããã¯ãã¯ã©ã¹ã¿ãŒã€ã³ããã¯ã¹ïŒãŸãã¯ããŒãïŒã以åã«ç ŽæããŠãããç ŽæããããŒãžãåé€ãããå Žåã«çºçããå¯èœæ§ããããŸãã
ããŒãã«ãšã©ãŒïŒãªããžã§ã¯ãID 181575685ãã€ã³ããã¯ã¹ID 1ãããŒãã£ã·ã§ã³ID 72057594145669120ãå²ãåœãŠãŠãããID 72057594087800832ïŒã¿ã€ãLOBããŒã¿ïŒã ããŒãžïŒ1ïŒ2444050ïŒãã¹ããã0ãããã¹ãID 901891555328ã®è¡å€ããŒã¿ããŒãã¯åç §ãããŸããã
CheckDBããã®ãããªãšã©ãŒã«ã€ããŠã®ã¿è©±ãå ŽåãREPAIR_ALLOW_DATA_LOSSãã©ã¡ãŒã¿ãŒãæå®ããŠDBCC CHECKDBãå®è¡ã§ããŸã-ãããã®ããŒãžã¯ç Žæ£ãããŸãã ãããã®ããŒãžã«ãªã³ã¯ããããŒã¿ããŒãžããŸã ãªããããããŒã¿ã®æ倱ã¯ãããŸããã
ç¯å²å€ãšã©ãŒ
ã¡ãã»ãŒãž2570ãSev 16ãState 3ãLine 17ãããã®ãšã©ãŒã¯ãåã«ç¯å²å€ã®å€ãå«ãŸããŠããããšã瀺ããŸãã ããã¯ãæ·±å€0æãããã€ãæ°ã2ã§å²ãåããªãUnicodeæååããŸãã¯äžæ£ãªç²ŸåºŠå€ãæã€å®æ°/å®æ°ãã1440å以äžçµéãããšæ³å®ããæ¥æå€ã§ãã
ããŒãžïŒ1ïŒ1103587ïŒããªããžã§ã¯ãID 34ã®ã¹ããã24ãã€ã³ããã¯ã¹ID 1ãããŒãã£ã·ã§ã³ID 281474978938880ãå²ãåœãŠãŠãããID 281474978938880ïŒãè¡å ããŒã¿ãã¿ã€ãïŒã åã®å€ã¯ãããŒã¿å«æ¥æ»ã®ç¯å²å€ã§ãã«å€æŽÂ»ã æå¹ãªå€ã«åãæŽæ°ããŸãã
DATA_PURITYãã©ã¡ãŒã¿ãŒãæå¹ã«ããŠDBCC CHECKDBã³ãã³ããå®è¡ããããšããªãå ŽåãSQL Server 2000以åããã¢ããã°ã¬ãŒãããããŒã¿ããŒã¹ã§ã¯ããããã®ãšã©ãŒã®ãã§ãã¯ã¯ããã©ã«ãã§ã¯å®è¡ãããŸããã
CheckDBã¯ãããã®ãšã©ãŒãä¿®æ£ã§ããŸãããããã¯ãééã£ãå€ã®ä»£ããã«ã©ã®å€ãèšå®ããã®ãããããªãããã§ãã ãããã®ãšã©ãŒã®èšæ£ã¯ãå€ãã®åªåãå¿ èŠãšããŸããããããã¯æåã§è¡ãããŸãã 誀ã£ãå€ã蚱容å¯èœãªäœãã«çœ®ãæããŠãã ããã äž»ãªåé¡ã¯ã - ç¡å¹ãªå€ã®ããã®æ€çŽ¢ã§ãã ãã®ãã¬ããžããŒã¹ã®èšäºã«ã¯ã段éçãªæé ãèšèŒãããŠããŸãã
ã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ãŸãã¯ããŒãã®æå·
ã¯ã©ã¹ã¿ãŒã€ã³ããã¯ã¹ã®ããŒãããŒãžãŸãã¯ãªãŒãããŒãžãç ŽæããŠããããšãå€æããå Žåãããã¯ãããã®ããŒã¿ã倱ãããŠããããšãæå³ããŸãã ã¯ã©ã¹ã¿åã€ã³ããã¯ã¹ã®ãªãŒãã¬ãã«ã®ããŒãžã«ã¯ããŒã¿ããŒãžãçŽæ¥å«ãŸããŠããããããã®ããŒãžã«ã¯åé·æ§ã¯äžåæäŸãããŸããã
CheckDBãã¯ã©ã¹ã¿ãŒåã€ã³ããã¯ã¹ã®ãªãŒãã¬ãã«ã®ããŒãžã«æå·ãå ±åããå ŽåãDBCC CHECKDBã«å¿ èŠãªãå埩ã¬ãã«ãã¯REPAIR_ALLOW_DATA_LOSSã§ãã
ãã®ãããªãšã©ãŒã®äŸïŒ
ãµãŒããŒïŒã¡ãã»ãŒãž8976ãã¬ãã«16ãç¶æ 1ãè¡2
ããŒãã«ãšã©ãŒïŒãªããžã§ã¯ãID 181575685ãã€ã³ããã¯ã¹ID 1ãããŒãã£ã·ã§ã³ID 76911687695381ãå²ãåœãŠãŠãããID 76911687695381ïŒè¡ããŒã¿åïŒã ããŒãžïŒ1ïŒ22417ïŒã¯ã¹ãã£ã³ã§èŠãããŸããã§ãããããã®èŠªïŒ1ïŒ479ïŒãšåã®ããŒãžïŒ1ïŒ715544ïŒã¯ãããåç §ããŠããŸãã
ãµãŒããŒïŒã¡ãã»ãŒãž8939ãã¬ãã«16ãç¶æ 1ãè¡2CheckDBã«ãã£ãŠè¿ããããšã©ãŒãã€ã³ããã¯ã¹ID = 0ãŸãã¯1ã«é¢é£ããŠããå Žåãããã¯ããŒã¿ãçŽæ¥ç ŽæããŠããããšãæå³ããããšã«æ³šæããŠãã ããã
ããŒãã«ãšã©ãŒïŒãªããžã§ã¯ãID 181575685ãã€ã³ããã¯ã¹ID 0ãããŒãžïŒ1ïŒ168576ïŒã ãã¹ãïŒm_freeData> = PAGEHEADSIZE && m_freeData <=ïŒUINTïŒPAGESIZE-m_slotCnt * sizeofïŒSlotïŒïŒã¯å€±æããŸããã å€ã¯44ãš8028ã§ãã
ãã®ã¿ã€ãã®ãšã©ãŒãä¿®æ£ãããŸãããä¿®æ£ã¯ç·ãããŒãžå šäœãç Žå£ããããšã§ãã CheckDBããšã©ãŒä¿®æ£ããŒã¿ãåé€ãããšãå€éšããŒã«ãã£ãŠèª²ããããå¶éã¯ãã§ãã¯ããããããªã¬ãŒã¯èµ·åããŸããã è¡ãŸãã¯ããŒãžã ãåé€ããŸãã ãã®çµæãããŒã¿ã«äžè²«æ§ããªããªã£ãããè«ççãªæŽåæ§ãæãªããããããå¯èœæ§ããããŸãïŒåäžè¡ã§LOBããŒãžã«ãªã³ã¯ã§ããªããªã£ãããéã¯ã©ã¹ã¿ãŒåã€ã³ããã¯ã¹è¡ã "nowhere"ã瀺ãå ŽåããããŸãïŒã ãã®ãããããã®å¹æã«ããããã®ãããªå埩ã¯æšå¥šãããŸããã
ããªãã¯ãã¯ãªãŒã³ãã®ããã¯ã¢ãããæã£ãŠããå Žåã¯ãããããã®å埩ã¯éåžžããã®ãããªãšã©ãŒãèšæ£ããããã«ãããpredpochitelnymã§ãã ããŒã¿ããŒã¹ãå®å šåŸ©æ§ã¢ãã«ã§ããããã°ã®åãç®ã®ãªããã§ãŒã³ïŒæåŸã®ãå®å šãªãå®å šããã¯ã¢ããããéå§ïŒã§ãã©ã³ã¶ã¯ã·ã§ã³ãã°ã®ããã¯ã¢ãããããå Žåããã°ã®ã¢ã¯ãã£ããªéšåãããã¯ã¢ããããããŒã¿ããŒã¹å šäœïŒãŸãã¯ç ŽæããããŒãžã®ã¿ïŒã埩å ã§ããŸããããã«ãã£ãŠããŒã¿ãå šã倱ãããããšã¯ãããŸããã
ç ŽæããŠããªãããŒã¿ãå«ãããã¯ã¢ããããªãå Žåããªãã·ã§ã³ã¯1ã€ã ãã§ã-REPAIR_ALLOW_DATA_LOSSãã©ã¡ãŒã¿ãŒãæå®ããŠDBCC CHECKDBãèµ·åããŸãã ããã¯ããã®æé ã®æéäžãã·ã³ã°ã«ãŠãŒã¶ãŒã¢ãŒãã«ç¿»èš³ããŒã¿ããŒã¹ãå¿ èŠã«ãªããŸãã
ãŸããããŒã¿ã®æ倱ãåé¿ããæ¹æ³ã¯ãããŸããããã¯ã©ã¹ã¿ãŒåã€ã³ããã¯ã¹ããåé€ãããããŒã¿ã確èªã§ããŸãã ããã«ã€ããŠã¯ãPaul Renadal ã«ãããã®æçš¿ãã芧ãã ããã
ã¡ã¿ããŒã¿ãžã®æå·
ã¡ãã»ãŒãž3853ãã¬ãã«16ãç¶æ 1ãè¡1éåžžã誰ããã·ã¹ãã ããŒãã«ã«çŽæ¥æãå ãããšãã«ãSQL Server 2000ããã¢ããã°ã¬ãŒããããããŒã¿ããŒã¹ã§åæ§ã®ãšã©ãŒãçºçããŸãã
sys.columnsã®è¡ïŒobject_id = 181575685ãcolumn_id = 1ïŒã®å±æ§ïŒobject_id = 181575685ïŒã«ã¯ãsys.objectsã«äžèŽããè¡ïŒobject_id = 181575685ïŒããããŸããã
SQL Serverã®ã©ã®ããŒãžã§ã³ã®ã·ã¹ãã ããŒãã«ã§ããå€éšããŒã¯äœ¿çšãããªããããSQL Server 2000ã§ã¯sysobjectsïŒããŒãã«ãªã©ïŒããè¡ãåé€ããåé€ãããè¡ãåç §ããè¡ãsyscolumnsããã³sysindexesããŒãã«ã«æ®ãããšãã§ããŸããã
SQL Server 2000ã§ã¯ãCheckDBã¯ã·ã¹ãã ã«ã¿ãã°ã®æŽåæ§ããã§ãã¯ããªãã£ãããããã®ãããªåé¡ã¯ãã°ãã°æ°ä»ãããã«ãã³ã°ããŸããã SQL Server 2005ã§ã¯ãCHECKDBã¯ãã·ã¹ãã ã«ã¿ãã°ã®æŽåæ§ããã§ãã¯ãããã®ãããªãšã©ãŒãçºçããããšããããŸãã
ãããã®ãšã©ãŒã®ä¿®æ£ã¯æãç°¡åãªããšã§ã¯ãããŸããã CheckDBã¯ããããä¿®æ£ã§ããŸãããã·ã¹ãã ããŒãã«ããã¬ã³ãŒããåé€ããããšããã§ããªãããã倧éã®ããŒã¿ã倱ãããå¯èœæ§ãããããã§ãã SQL Server 2005ãžã®ã¢ããã°ã¬ãŒãåã«ãã®ããŒã¿ããŒã¹ã®ããã¯ã¢ãããäœæããã¢ããã°ã¬ãŒããããæè¿ã§ãã£ãå ŽåããããSQL Server 2000ã«å±éãããã®ã·ã¹ãã ããŒãã«ãæåã§èª¿æŽããããŒã¿ããŒã¹ãSQL Server 2005ã«å床転éã§ããŸãã
SQL Server 2000ã«ããŒã¿ããŒã¹ã®ããã¯ã¢ããããªãå ŽåããŸãã¯æŽæ°ãé·ãããŠããŒã¿ã®æ倱ã蚱容ã§ããªãå Žåã2ã€ã®æ¹æ³ããããŸãã 1ã€ç®ã¯ãSQL Server 2005ã§ã·ã¹ãã ããŒãã«ãç·šéããããšã§ãããã·ã¹ãã ããŒãã«ã¯ææžåãããŠãããã以åã®ããŒãžã§ã³ãããã¯ããã«è€éã§ãããããããã¯ããªãè€éã§å±éºãªããã»ã¹ã§ããããšã«æ³šæããŠãã ããã ã§ããã®èšäºãè¿œå ã®æ å ±ãèŠã€ããããšãã§ããŸãã
2çªç®ã®æ¹æ³ã¯ããã¹ãŠã®ããŒã¿ããŒã¹ãªããžã§ã¯ãã®ã¹ã¯ãªãããäœæãããã¹ãŠã®ããŒã¿ããšã¯ã¹ããŒãããåŸãæ°ããããŒã¿ããŒã¹ãäœæãããªããžã§ã¯ãã埩å ããŠããŒã¿ãå ¥åããŸãã æ¬å®æœåœ¢æ ããã奜ãŸããã§ãã
åãè¿ãã®ã€ããªããã¡ãŒãž
CHECKDBã¯ãã¹ãŠãä¿®æ£ããããšã¯ã§ããŸããã 以äžã®ãããªãšã©ãŒã¯ä¿®æ£äžèœã§ãããå¯äžã®ãªãã·ã§ã³ã¯ããã®ãããªæå·ããªãããã¯ã¢ããããããŒã¿ããŒã¹ã埩å ããããšã§ãã å®å šããã¯ã¢ãããããããã°ãã§ãŒã³ãçŸåšã®æå»ãŸã§å£ããŠããªãå Žåããã©ã³ã¶ã¯ã·ã§ã³ãã°ã®æçµãã©ã°ã¡ã³ããããã¯ã¢ããã§ããããŒã¿ã倱ãããšãªãããŒã¿ããŒã¹ã埩å ã§ããŸãã
ãã®ãããªããã¯ã¢ããããªãå Žåãã§ããããšã¯ããããã®ãªããžã§ã¯ãã®ã¹ã¯ãªãããäœæãããŸã å©çšå¯èœãªããŒã¿ãã¢ããããŒãããããšã ãã§ãã ç Žæãåå ã§ããã¹ãŠã®ããŒã¿ã«ã¢ã¯ã»ã¹ã§ããããã§ã¯ãªããã»ãšãã©ã®å Žåããšã©ãŒãªãã§ãã¹ãŠã®ãªããžã§ã¯ããã¹ã¯ãªããåã§ãããšã¯éããŸããã
ã·ã¹ãã ããŒãã«ãžã®æå·
ã¡ãã»ãŒãž7985ãã¬ãã«16ãç¶æ 2ãè¡1
ã·ã¹ãã ããŒãã«ã®äºåãã§ãã¯ïŒãªããžã§ã¯ãID4ãã©ããã¿ã€ãSHã§ããŒãžïŒ1ïŒ358ïŒãèªã¿åã£ãŠã©ããã§ããŸããã§ããã
修埩äžå¯èœãªãšã©ãŒã«ããããã§ãã¯æãçµäºããŸããã
ã¡ãã»ãŒãž8921ãã¬ãã«16ãç¶æ 1ãè¡1CheckDBã¯ãããŒã¿ããŒã¹ã®å 容ãææ¡ããããã«ãããã€ãã®éèŠãªã·ã¹ãã ããŒãã«ã«äŸåããŠããŸãã ãããã®ããŒãã«èªäœãç ŽæããŠããå ŽåãCheckDBã¯ãããŒã¿ããŒã¹ã®å 容ãšçŸåšã®ç¶æ ãæ¯èŒããããã®ãã®ãæšæž¬ããããšããã§ãããäœããä¿®æ£ããããšã¯èšããŸã§ããããŸããã
ãã§ãã¯çµäºã äºå®ãåéããªãããé害ãæ€åºãããŸããã ããããã¹ããŒã¹ãŸãã¯ã·ã¹ãã ã»ããŒãã«ã®ãã¡tempdbãççŸããŠããŸãã
ãã«ãŒãã®é åžããžã®æå·
ã¡ãã»ãŒãž8946ãã¬ãã«16ãç¶æ 12ãè¡1
ããŒãã«ãšã©ãŒïŒå²ãåœãŠããŒãžïŒ1ïŒ2264640ïŒã«ç¡å¹ãªPFS_PAGEããŒãžããããŒå€ããããŸãã ã¿ã€ãã¯0ã§ãããã§ãã¯ã¿ã€ããããŒãžäžã®ã¢ãã±ãŒã·ã§ã³ãŠãããIDãšããŒãžIDã§ãã
ã¡ãã»ãŒãž8998ãã¬ãã«16ãç¶æ 2ãè¡1ãã®å ŽåãããŒã¿ããŒã¹å ã®ããŒã¿ã®é 眮ã決å®ãã1ã€ãŸãã¯è€æ°ã®ããŒãžïŒ é åžã«ãŒã -çŽTranslator ïŒãç ŽæããŠããŸãã ãããã®ããŒãžã¯ãããŒã¿ããŒã¹ã§äœ¿çšãããŠããããŒãžãšãšã¯ã¹ãã³ãã決å®ããããã«äœ¿çšããã空ããŠãããããŠããŸãã CheckDBã¯ãã®ãããªãšã©ãŒãä¿®æ£ã§ããŸãããããã¯ãããŒã¿ãé 眮ããããã«äœ¿çšããããšã¯ã¹ãã³ããšããã§ãªããšã¯ã¹ãã³ããïŒãããã®ããŒãžãªãã§ïŒå€æããããšã¯ã»ãšãã©äžå¯èœã ããã§ãã ãã®ãããªãé åžãããããåçŽã«åé€ããããšã¯ã§ããŸããããããã®ãããããåé€ãããšã4 GBã®ããŒã¿ãåé€ãããããã§ãã
GAMãSGAMããŸãã¯PFSããŒãžã®ããŒãžãšã©ãŒã«ãããïŒ1ïŒ2264640ïŒããïŒ1ïŒ2272727ïŒãŸã§ã®ããŒã¿ããŒã¹ID 13ããŒãžã®å²ãåœãŠæŽåæ§ãã§ãã¯ã劚ããããŸãã
æ€çŽ¢ãã«ã
äœãããå¿ èŠããããããããªãå Žåã¯ãå©ããæ±ããŠãã ããã çªç¶ãããŒã¿ããŒã¹ã®ç Žæã«é¢ããã¡ãã»ãŒãžã衚瀺ãããŸããããã®ã¡ãã»ãŒãžã¯äžèšã§èª¬æãããŠããªãã®ã§ãå©ããæ±ããŠãã ããã ããªããæè¯ã®å埩æ¹æ³ãéžæããããšãããããªãå Žå㯠- å©ããæ±ããŸãã
ããªãã¯ã·ãã¢DBAãæã£ãŠããå Žåã¯ããããåç §ããŠãã ããã ãã¡ã³ã¿ãŒããããå Žåã¯ã圌ã«èããŠãã ããã ãã©ãŒã©ã ã§ã¢ããã€ã¹ãæ±ããŸããããã©ãŒã©ã ã§åãåã£ããã¹ãŠã®ã¢ããã€ã¹ã圹ç«ã€ããã§ã¯ãªãããšãå¿ããªãã§ãã ããã å®éããããã絶察ã«ééã£ããããã«ã¯å±éºãªæ±ºå®ãæã å ¬è¡šãããŸãã
æåŸã«ããã€ã¯ããœããã«ã¹ã¿ããŒãµããŒãã«é£çµ¡ããŠãã ããã ç¡æã§ã¯ãããŸããããç ŽæããããŒã¿ããŒã¹ã§äœãã§ããããæ¬åœã«ç¥ã£ãŠããã®ã§ãããŒã¿ããŒã¹ãäŒæ¥ã«ãšã£ãŠéèŠãªå Žåããœãªã¥ãŒã·ã§ã³ã®ç¬ç«ããæ€çŽ¢äžã®ããŠã³ã¿ã€ã ã®ã³ã¹ãã¯ããµããŒãã«é£çµ¡ããã³ã¹ããããã¯ããã«é«ããªãå¯èœæ§ããããŸãã
ãããã«
ãã®èšäºã§ã¯ãç ŽæããããŒã¿ããŒã¹ãæ€åºããããšãã«ã§ããããšãããã«éèŠãªããšãšããŠãããŠã¯ãããªãããšã®äŸãããã€ã瀺ããŸããã 説æããåé¡ã解決ããããã«äœ¿çšã§ããæ¹æ³ãšãé©åãªããã¯ã¢ãããäœæããããšã®éèŠæ§ïŒ ããã³é©åãªåŸ©æ§ã¢ãã«ïŒçŽTranslator ïŒ ãéžæããããšïŒãç解ããŠãã ããã
泚æïŒããã¯ãããã«ãäžåºŠã«è¡ãããŠããªãç§ã®æåã®ç¿»èš³ã§ããããããŠããã€ãã®ã¢ãããŒãã§ã¯ãèªç±ãªæéãããå€ã¯ãããã¹ãå šäœã誰ãã«ããã€ãã®ççŸãèŠãããããããŸããã®ã§ã ç§ãã©ããã§çžãããããŠããŠãããã¹ãã®äžéšãçªç¶ç解ãã«ããããšãå€æããå Žåãç§ã¯åãã§ãã¹ãŠã®ã³ã¡ã³ããèããŸãã
æ¬å ·ãå å¡«ãããŠããŸããã
PSãå ¬éããã¿ã³ãã¯ãªãã¯ããããšãããšãã«ã SQL Server Centralããã®ãã®ãããªã³ããã¯ãå«ãã¡ãŒãªã³ã°ãªã¹ããã¡ãŒã«ã«èœã¡ãŸããã
