টিএল; ডিআর: আমি একটি সূচিযুক্ত দৃশ্যে একটি অব্যর্থ দুর্নীতি পেয়েছি। বিশদটি এখানে:
চলমান
DBCC CHECKDB([DbName]) WITH EXTENDED_LOGICAL_CHECKS, DATA_PURITY, NO_INFOMSGS, ALL_ERRORMSGS
আমার ডাটাবেসের একটিতে নিম্নলিখিত ত্রুটি তৈরি করে:
এমএসজি 8907, স্তর 16, রাজ্য 1, লাইন 1 স্থানিক সূচক, এক্সএমএল সূচক বা সূচিযুক্ত ভিউ 'ভিউনাম' (অবজেক্ট আইডি 784109934) এ সারি রয়েছে যা দর্শন সংজ্ঞা দ্বারা উত্পাদিত হয়নি। এটি অগত্যা এই ডেটাবেজে ডেটা সহ কোনও সততার ইস্যু উপস্থাপন করে না। (...)
'ভিউনাম' সারণীতে CHECKDB 0 টি বরাদ্দ ত্রুটি এবং 1 ধারাবাহিক ত্রুটি খুঁজে পেয়েছে।
মেরামত_পরিচালনা সর্বনিম্ন মেরামতের স্তর (...)।
আমি বুঝতে পারি যে এই বার্তাটি সূচিত ভিউ 'ভিউনাম' এর বস্তুগত ডেটা অন্তর্নিহিত ক্যোয়ারী যা তৈরি করে তার সাথে এক নয় indicates তবে, ম্যানুয়ালি ডেটা যাচাই করা কোনও তাত্পর্যপূর্ণ করে না:
SELECT * FROM ViewName WITH (NOEXPAND)
EXCEPT
SELECT ...
from T1 WITH (FORCESCAN)
join T2 on ...
SELECT ...
from T1 WITH (FORCESCAN)
join T2 on ...
EXCEPT
SELECT * FROM ViewName WITH (NOEXPAND)
NOEXPAND
উপর (শুধুমাত্র) সূচকটি জোর করে ব্যবহার করতে ব্যবহৃত হয়েছিল ViewName
। FORCESCAN
ইনডেক্সড ভিউয়ের ম্যাচটি ঘটতে বাধা দিতে ব্যবহৃত হয়েছিল। কার্যকর করার পরিকল্পনা উভয় পদক্ষেপের কাজ করার বিষয়টি নিশ্চিত করে।
এখানে কোনও সারি ফেরানো হচ্ছে না, যার অর্থ দুটি টেবিলটি অভিন্ন। (কেবলমাত্র পূর্ণসংখ্যক এবং গাইড কলাম রয়েছে, জোটগুলি কার্যকর হয় না)।
দৃশ্যে সূচি পুনরায় তৈরি করে বা চালিয়ে ত্রুটি ঠিক করা যায় নাDBCC CHECKDB REPAIR_ALLOW_DATA_LOSS
। ফিক্সগুলি পুনরাবৃত্তি করাও কোনও লাভ হয়নি। কেন DBCC CHECKDB
এই ত্রুটিটি রিপোর্ট করে ? কীভাবে এ থেকে মুক্তি পাবেন?
(পুনর্নির্মাণ এটি স্থির করে নিলেও আমার প্রশ্নটি এখনও দাঁড়িয়ে থাকবে - আমার ডেটা চেকিংয়ের অনুসন্ধানগুলি সফলভাবে চালিত হলেও একটি ত্রুটি কেন রিপোর্ট করা হচ্ছে?)
আপডেট: কিছু রিলিজে বাগটি ঠিক করা হয়েছে। আমি আর SQL সার্ভার এটা প্রজনন করতে পারে 2014 জন্য SP2 চবি 5. 2014 জন্য SP2 কিলোবাইট কিলোবাইট আর্টিকেল ব্যতিরেখে একটি ফিক্স রয়েছে: Creating non-clustered index causes DBCC CheckDB With Extended_Logical_Checks to raise corruption error
। এটি সম্পর্কে দুটি সংযুক্ত বাগ বন্ধ করা হয়েছে:
- https://connect.microsoft.com/SQLServer/feedback/details/847233/creating-non-clustered-index-causes-dbcc-checkdb-with-extended-logical-checks-to-raise-corruption-error
- https://connect.microsoft.com/SQLServer/feedback/details/795478/unfixable-dbcc-checkdb-error-that-is-also-a-false-positive-and-otherwise-strange
If the indexed view does not contain an aggregate over values of type float or real and you receive errors 8907 or 8708, drop the index on the view and re-create it. Do not use ALTER INDEX REBUILD to try to remove the differences between the stored and the computed view, because ALTER INDEX REBUILD does not recalculate the view before rebuilding the index. Then run DBCC CHECKTABLE on the View to verify no differences remain.
[1]
স্বরলিপি মন্তব্য চিহ্ন-ডাউন মধ্যে কাজ করে না।