এসকিউএল সার্ভার 2017 (সিইউ 3) এ, যখনই আমি আমার টিডিডি ডাটাবেসের একটিতে ব্যাকআপ সংক্ষেপণ সক্ষম করি, ব্যাকআপ প্রক্রিয়া সর্বদা ডেটাবেজে একটি নির্দিষ্ট পৃষ্ঠাটিকে দূষিত করে। আমি যদি সংক্ষেপ না করে ব্যাকআপ চালনা করি তবে এটি দুর্নীতিগ্রস্থ হয় না। এই সমস্যাটি যাচাই ও পুনরুত্পাদন করতে আমি যে পদক্ষেপ নিয়েছি তা এখানে:
- "TDE_DB1" ডাটাবেসে DBCC চেকডিবি চালান; সব ভাল, কোন ত্রুটি;
- সফলভাবে সংক্ষেপণ ছাড়াই ডাটাবেস ব্যাক আপ; পুনরুদ্ধার করুন যাচাই করে বলেন সমস্ত কিছু ভাল;
- সাফল্যের সাথে "TDE_DB2" হিসাবে ডাটাবেস পুনরুদ্ধার করুন; সব ঠিক আছে, ডিবিসিসি চেকডিবি কোনও ত্রুটি দেখায় না;
- সংকোচনের সাথে "TDE_DB1" ডাটাবেস সফলভাবে ব্যাক আপ করুন; "ব্যাকআপ সেটে ক্ষয়ক্ষতি শনাক্ত করা হয়েছে" বলে সত্যায়িত ত্রুটিগুলি পুনরুদ্ধার করুন;
- "TDE_DB2" হিসাবে ডাটাবেস পুনরুদ্ধার করার চেষ্টা; ত্রুটি, "রিস্টোর পৃষ্ঠায় একটি ত্রুটি সনাক্ত করেছে (1: 92454) ডাটাবেসে"
- পদক্ষেপগুলি পুনরাবৃত্তি করুন 1-3; সব ভাল;
- DROP "TDE_DB1" এবং "TDE_DB2"; ব্যাকআপ থেকে "TDE_DB1" পুনরুদ্ধার করুন; সব ভাল;
- পদক্ষেপগুলি 1-5 পুনরাবৃত্তি করুন; একই ফলাফল পান;
সংক্ষিপ্তসার হিসাবে: ডাটাবেস এবং নিয়মিত ব্যাকআপগুলি সূক্ষ্ম বলে মনে হয়, ডাটাবেসে CHECKDB চালানো এবং ব্যাকআপগুলিতে যাচাই করে কোনও ত্রুটির কথা বলা হয় না। সংকোচনের সাথে ডাটাবেসটিকে ব্যাক আপ করা দুর্নীতির কারণ বলে মনে হচ্ছে।
নীচে ত্রুটি সহ কোড নমুনা রয়েছে। (দ্রষ্টব্য: একটি টিডিই ডাটাবেসের সাথে সংকোচনের জন্য MAXTRANSFERSIZE প্রয়োজন )
-- Good, completes with no corruption;
BACKUP DATABASE [TDE_DB1] TO DISK = N'E:\MSSQL\Backup\TDE_DB1a.bak' WITH CHECKSUM;
RESTORE VERIFYONLY FROM DISK = N'E:\MSSQL\Backup\TDE_DB1a.bak' WITH CHECKSUM;
RESTORE DATABASE [TDE_DB2]
FROM DISK = 'E:\MSSQL\Backup\TDE_DB1a.bak'
WITH MOVE 'DataFileName' to 'E:\MSSQL\Data\TDE_DB2.mdf'
,MOVE 'LogFileName' to 'F:\MSSQL\Log\TDE_DB2_log.ldf';
-- Bad, I haz corruption;
BACKUP DATABASE [TDE_DB1] TO DISK = N'E:\MSSQL\Backup\TDE_DB1b.bak' WITH CHECKSUM, COMPRESSION, MAXTRANSFERSIZE = 131072;
RESTORE VERIFYONLY FROM DISK = N'E:\MSSQL\Backup\TDE_DB1b.bak' WITH CHECKSUM;
-- ERROR
--Msg 3189, Level 16, State 1, Line 1
--Damage to the backup set was detected.
--Msg 3013, Level 16, State 1, Line 1
--VERIFY DATABASE is terminating abnormally.
RESTORE DATABASE [TDE_DB2]
FROM DISK = 'E:\MSSQL\Backup\TDE_DB1b.bak'
WITH MOVE 'DataFileName' to 'E:\MSSQL\Data\TDE_DB2.mdf'
,MOVE 'LogFileName' to 'F:\MSSQL\Log\TDE_DB2_log.ldf';
-- ERROR
--Msg 3183, Level 16, State 1, Line 7
--RESTORE detected an error on page (1:92454) in database "TDE_DB2" as read from the backup set.
--Msg 3013, Level 16, State 1, Line 7
--RESTORE DATABASE is terminating abnormally.
এরপরে আমি যে পৃষ্ঠাটি ত্রুটিযুক্ত বলে রিপোর্ট করা হয়েছে (এটি সর্বদা একই পৃষ্ঠা)) হিসাবে চেক করার চেষ্টা করেছি, তবে ডিবিসিসি পৃষ্ঠায় প্রতিবেদন করা হয়েছে যে অবজেক্টআইডটি 0। পল রান্ডালের এই নিবন্ধ অনুসারে এর অর্থ কোনও মেটাডেটা পাওয়া যায় নি, এবং এর একটি কারণ হতে পারে যে পৃষ্ঠাটি নিজেই দুর্নীতিগ্রস্থ এবং মেটাডেটা দেখার চেষ্টা করার জন্য ভুল মানগুলি ব্যবহার করা হয়েছিল। তার পরামর্শ হ'ল CHECKDB চালানো, যা আমি করতে পারি না কারণ দূষিত ব্যাকআপ পুনরুদ্ধার হবে না।
মেটাডেটাটি পুনরায় সেট করতে আমি এই এসও পোস্টের (ব্যাকআপ কমান্ডে আইএনআইটি এবং ফর্ম্যাট যোগ করা) পরামর্শের চেষ্টা করেছি , তবে এতে কোনও পরিবর্তন হবে বলে মনে হয় না, আমি এখনও সংকুচিত ব্যাকআপে দুর্নীতি পেয়েছি।
এটি কেবলমাত্র আমার টিডিই ডাটাবেসের একটিতে ঘটে। আমার এই একই সার্ভারে আরও 4 টি টিডিই ডাটাবেস রয়েছে এবং তাদের এই সমস্যা নেই। এটি আমাকে বলে যে এই নির্দিষ্ট ডাটাবেসের সাথে অন্তর্নিহিত সমস্যা থাকতে পারে। আমি বুঝতে পারি যে সহজ সমাধানটি কেবল সংকোচনের ব্যবহার না করা, তবে আমি মনে করি এটি সম্ভবত রাস্তায় নেমে আসা কোনও বড় সমস্যার জন্য প্রাথমিক সতর্কতা হতে পারে।
এর আগে কেউ এর আগে কখনও দেখেছেন, বা কোনও ধারণা আছে কেন সংক্ষেপণ পৃষ্ঠাটি দূষিত করবে? এই মুহুর্তে, আমি পরের কী করা উচিত তা ক্ষতির মধ্যে আছি। আমি পূর্বের ব্যাকআপ থেকে পৃষ্ঠাটি পুনরুদ্ধার করার বিষয়টি বিবেচনা করেছি, তবে নিয়মিত ডাটাবেসের পৃষ্ঠাটি সূক্ষ্ম বলে মনে হচ্ছে বলে মনে হয় না matter
আপডেট 1: নীচে ডিবিসিসি পৃষ্ঠা থেকে ফলাফল 0 সহ:
ডিবিসিসির ফাঁসি কার্যকর হয়েছে। যদি ডিবিসিসি ত্রুটি বার্তা প্রিন্ট করে তবে আপনার সিস্টেম প্রশাসকের সাথে যোগাযোগ করুন।
পৃষ্ঠা: (1: 92454)
বাফার:
BUF @ 0x000002187AE55640
বিপেজ = 0x000002184865E000 bhash = 0x000000000000000000
পৃষ্ঠাসমূহ = (1: 92454) বিডিবিড = 8 বিভাজন = 0 বিসিপুটিক্স = 563 বিস্যাম্পলকাউন্ট = 1
বিউস 1 = 51429 বিস্ট্যাট = 0x809 ব্লগ = 0x15a
বেনেক্সট 0x00000000000000000000000000পেজের উপরের অংশ:
পৃষ্ঠা @ 0x000002184865E000
মি_পেজআইডি = (1: 92454) মি_হেডার ভার্সন = 111
মি_ টাইপ = 189 মি_টাইপ ফ্ল্যাগবিটস = 0x2 ডি এম_লেভেল = 197
মি_ফ্ল্যাগবিটস = 0x525e এম_ওবজিড (এলোক ইউনাইটআইডি.আইডজবি) = 78815194
এডিশডআইডিআইডিএডিটআইডিএডডআইডিআইডিএডএডআইডিএডআইডিআইডিএডএডআইডি 16 ইন্ডিজিট ইনডেক্সআইডি = -1 মেটাডেটা: অবজেক্টআইডি = 0 মি_প্রিভ পেজ = (32842: 1881351155) এম_নেসটপেজ = (13086: -560562340)
পিনমিলেন = 36067 এম_স্লটসিএনটি = 8149 এম_ফ্রিসিএনটি = 51871 মি_ফ্রিডাটা = এমআরসি_আর 401151৮৮৮৮৮৮৮৮৮৮১৮৮৮৮৮৮৮৮৮৮৮৮৮৮৮১৮৮৮৮৮৮৮৮৮৮৮১৮৮৮৮৮৮৮৮৮৮৮১৮৮৮৮৮৮৮৮৮৮৮ 14755
m_xdesId = (12811: 1559482793) m_ghostRecCnt = 12339
m_tornBits = -1381699202 ডিবি Frag আইডি = 1বরাদ্দ স্থিতি
গ্যাম (১: ২) = অ্যালকোটেড এসজিএম (১: ৩) = অলকৃত
পিএফএস নয় (১: 88968) = 0x0 0_PCT_FULL DIFF (1: 6) = পরিবর্তিত
এমএল নয় (1: 7) = এমএমএলজিড নয়
যদি আমি অন্যান্য বিকল্পের সাথে ডিবিসিসি পৃষ্ঠা চালানোর চেষ্টা করি তবে আমি নীচের ত্রুটিগুলি পেয়েছি:
ডিবিসিসি পৃষ্ঠা 1 বিকল্প সহ: এমএসজি 0, স্তর 11, রাজ্য 0, লাইন 0 বর্তমান কমান্ডটিতে একটি গুরুতর ত্রুটি ঘটেছে। ফলাফল, যদি থাকে, বাতিল করা উচিত।
বিকল্প 3 সহ ডিবিসিসি পৃষ্ঠা: এমএসজি 2514, স্তর 16, রাজ্য 5, লাইন 3 একটি ডিবিসিসি পৃষ্ঠা ত্রুটি ঘটেছে: অবৈধ পৃষ্ঠার ধরণ - ডাম্প স্টাইল 3 সম্ভব নয়।
আপডেট 2: এখানে সিএস.ডিএম_ডিবি_ড্যাটাবেস_পৃষ্ঠা_লোকেশন ডিএমও থেকে প্রাপ্ত ফলাফলের কয়েকটি:
object_id = 75 index_id = 1 rowset_id = 281474981625856 allocation_unit_id = 281474981625856
allocation_unit_type = 1 allocation_unit_type_desc = IN_ROW_DATA extent_file_id = 1 extent_page_id = 92448
allocated_page_iam_file_id = 1 allocated_page_iam_page_id = 104
allocated_page_file_id = 1 allocated_page_page_id = 92454
is_allocated = 0 is_iam_page = 0 is_mixed_page_allocation = 0