মার্টিন ইতিমধ্যে সেরা অ্যাভিনিউয়ের দিকে ইঙ্গিত করেছেন, প্রশাসনিক নিরীক্ষণের সন্ধান যা সাধারণত চালু থাকে (যদি না এটি স্পষ্টভাবে অক্ষম করা থাকে)। আপনি যদি অ্যাডমিন ট্রেসটিতে তথ্যটি খুঁজে না পান (অক্ষম করা হয়েছিল বা এটি পুনর্ব্যবহৃত হয়েছিল) আপনি লগ ব্যাকআপগুলি থেকে তথ্যটি পুনরুদ্ধার করতে পারেন । যেহেতু একটি প্রোডাকশন ডিবি, তাই ধরে নিচ্ছি আপনার নিয়মিত ব্যাকআপ চক্র রয়েছে, পর্যায়ক্রমিক পূর্ণ ব্যাকআপ এবং লগ ব্যাকআপ সহ। ঘটনার সময় আপনার প্রায় একটি পৃথক সার্ভারে ডাটাবেস পুনরুদ্ধার করতে হবে যাতে বর্তমানের পুনরুদ্ধার লগে ডিডিএল থাকে। তারপরে fn_dblog()
লগটি ব্যবহার এবং পরিদর্শন করার একটি সহজ বিষয় ।
একটি উপায় হ'ল লেনদেনের মাধ্যমে কার্যক্রম শুরু করা:
select [Begin Time], [Transaction Name], [Transaction SID], *
from fn_dblog(null, null)
where Operation = 'LOP_BEGIN_XACT';
যদি ALTER VIEW
একটি স্বতন্ত্র লেনদেনে জারি করা হয় (অর্থাৎ। দ্বারা বেষ্টিত না BEGIN TRANSACTION
/ COMMIT
) তারপর, এটা নামে একটি লেনদেন শুরু হবে CreatProc transaction
। এটি সন্ধান করুন এবং [Transaction SID]
আপনি চান লগইন এসআইডি।
আর একটি সম্ভাবনা হ'ল যে লেনদেনটি আপনি চান সেই ভিউতে একটি এসসিএইচএম অর্জন করেছে:
select [Lock Information], *
from fn_dblog(null, null)
where [Lock Information] like '%' + cast(object_id('...') as varchar(10))+'%'
and [Lock Information] like '%LOCK_SCH_M%'
go
নোট করুন যে ভিউটি DROP দ্বারা অনুসরণ করা হয়েছে তারপরে ক্রিয়েট দ্বারা অবজেক্ট আইডি সম্ভবত পরিবর্তিত হয়েছিল, তবে কমপক্ষে আপনি লেনদেনটি শেষটি করেছেন যা তৈরি হয়েছিল (পুনরুদ্ধার করা ডিবিতে ভিউটির বর্তমান অবজেক্ট আইডি)। লেনদেন আইডির সাহায্যে আপনি ফিরে যান এবং সূচনা লেনদেনের তথ্যটি পুনরুদ্ধার করুন:
select [Begin Time], [Transaction Name], [Transaction SID], *
from fn_dblog(null, null)
where [Transaction ID] = '...'
and Operation = 'LOP_BEGIN_XACT';
[লেনদেনের এসআইডি] আবার আপনার লোক। SUSER_SNAME
লগইন এসআইডি থেকে লগইন নামটি পুনরুদ্ধার করতে ব্যবহার করুন । যদি এসআইডি 0x01 হয় তবে এর অর্থ লগইন হয়েছিল sa
, যার অর্থ sa
পাসওয়ার্ড জেনে থাকা যে কোনও ব্যক্তি এটি করতে পারত।