අද මම කියන්න යන්නේ SQL Server එකේ අපි කාටත් මූන පාන්න වෙන ගැටලුවක් ඒ තමයි Recovery Pending State එක.
Execute the following set of queries:
ALTER DATABASE [DBName] set multi_user
EXEC sp_attach_single_file_db @DBName = ‘[DBName]’, @physname = N'[mdf path]’
මේ issue එක fix කරන්න කලින් SQL Database status මොනාද Recovery pending ඇතිවෙන්න හේතු මොනාද කියලාබලමු
SQL Database States
😀Online - DB එක ප්රශ්නයක් නැතුව accessible පුළුවන් state එකක් තමයි මේ.
😟 Suspect - මේ කියන state එකනම් අවුලක් තියෙනවා මේ state එකේ තියෙනවා කියන්නෙ DB එක fail වෙන්න තියෙන ඉඩ වැඩියි ඒකට හේතුව තමයි transaction logs damage වෙලා තියෙන එක ඒ නිසා DB එකට recovery හරි transaction rollback එකට යන්න බැරුව suspect වෙලා තියෙනවා
🙁 Recovery Pending - මේ state එකේදී SQL Server එක දන්නවා recovery එකක් ඔනී කියලා නමුත් ඒක start කරන්න තියෙන නොහැකියාව නිසා තමයි DB එක මේ state එකට යන්නේ.හැබැයි මේ අවස්ථාව suspect අවස්ථාවම නෙවෙයි මොකද මෙතනදි recovery එක fail වෙලා නෑ මේක start කරගන්න බැරි කමක් තියෙන්නේ
Recovery Pending වෙන්න ගොඩක් හේතු බලපානවා ඒවගෙන් ප්රදාන දේවල් ටිකක් මම කියන්නම්
1) DB එක හරියාකාරව shutdown වෙලා නෑ මොකද uncommitted transaction එකක් active තියෙනවා ඒත් ඒ transaction එකේ log file එක delete වෙච්ච අවස්තාවක්
2) Process වෙන transaction log file එකක් move කරන්න යද්දි ඒ log file එක corrupted උනාම
3) Recovery කිරීමට ප්රමානවත් RAM , CPU ,Storage නොමැතිවීම
4) Fragmentation නිසා ඇතිවෙන low performance වෙන්නත් පුළුවන්
මේක fix කරන්න ක්රම දෙකක් තියෙනවා (DB server එක restart නොකර)
හැබැයි මේ මොනා කරන්නත් කලින් DB වල backup එහෙම දාගෙන තියාගන්න එක ඇගට හොදයි
Emergency Mode - මේකෙදි DB එක read only වෙනවා system administrator ට තමයි කරන දෙයකට access තියෙන්නේ
-> DB එක Emergency mode දාලා forceful Repair එකක් දාලා
Execute the following set of queries
ALTER DATABASE [DBName] SET EMERGENCY;
GO
ALTER DATABASE [DBName] set single_user
GO
DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
GO
ALTER DATABASE [DBName] set multi_user
GO
Execute the following set of queries
ALTER DATABASE [DBName] SET EMERGENCY;
GO
ALTER DATABASE [DBName] set single_user
GO
DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
GO
ALTER DATABASE [DBName] set multi_user
GO
-> DB එක Emergency mode දාලා detached කරලා ආපහු attached කරන එක
Execute the following set of queries:
ALTER DATABASE [DBName] SET EMERGENCY;
ALTER DATABASE [DBName] set multi_user
EXEC sp_detach_db ‘[DBName]’
EXEC sp_attach_single_file_db @DBName = ‘[DBName]’, @physname = N'[mdf path]’
Comments
Post a Comment