জিইউআই ব্যবহার করে ডেটাবেস পুনরুদ্ধার করুন - পুনরুদ্ধার করতে ভুল ফাইল


20

আমি কেবল এসএসএমএস গ্রাফিক ইন্টারফেসের সাথে ঘোরাঘুরি করছি এবং "পুনরুদ্ধার" টাস্কের বিকল্পগুলি অধ্যয়ন করছি।

একটি জিনিস আমি লক্ষ্য করেছি যে যখন আমি "উত্পন্ন স্ক্রিপ্ট" এ ক্লিক করি, তখন ক্যোয়ারির প্রথম লাইনটি হ'ল:

 RESTORE DATABASE [MyDatabase] FROM  DISK = N'Server_Patch\Database_name_LOGSHIPPING.BKP' WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 5 ( and a lot of log backups for point in time )

ঠিক আছে, কোন সমস্যা নেই, তবে আমি এই ডাটাবেসটির প্রতিদিন ব্যাকআপ করছি। এটি Database_name_LOGSHIPPING.BKPএক মাস আগে লগ শিপিংয়ের জন্য তৈরি করা ফাইলটির নাম।

আমি যখন কোনও ব্যাকআপ পুনরুদ্ধার করতে যখন এসএসএমএস গ্রাফিক ইন্টারফেসটি ব্যবহার করার চেষ্টা করি তখন কেন এটি ব্যাকআপ ফাইলটিতে ইঙ্গিত করে? আমার কাছে এই ফাইলটি আর নেই।


এমএসএসকিউএলটিপস-এর এই প্রশ্নের সাথে আমি এই ডাটাবেস থেকে সমস্ত ব্যাকআপ দেখতে পাচ্ছি:

SELECT 
CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
msdb.dbo.backupset.database_name, 
msdb.dbo.backupset.backup_start_date, 
msdb.dbo.backupset.backup_finish_date, 
msdb.dbo.backupset.expiration_date, 
CASE msdb..backupset.type 
WHEN 'D' THEN 'Database' 
WHEN 'L' THEN 'Log' 
END AS backup_type, 
msdb.dbo.backupset.backup_size, 
msdb.dbo.backupmediafamily.logical_device_name, 
msdb.dbo.backupmediafamily.physical_device_name, 
msdb.dbo.backupset.name AS backupset_name, 
msdb.dbo.backupset.description 
FROM msdb.dbo.backupmediafamily 
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
WHERE (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - 7)   and  msdb..backupset.type ='D'
ORDER BY 
msdb.dbo.backupset.database_name, 
msdb.dbo.backupset.backup_finish_date 

এখানে চিত্র বর্ণনা লিখুন

এখানে কী ভুল হতে পারে? আমি কেবল কপি ব্যবহার করছি না।


EDIT2:

আমি পরীক্ষার জন্য দৈনিক ম্যানুয়াল ব্যাকআপগুলি তৈরি করছি এবং এমনকি এই উপায়ে এসকিউএল সার্ভার সেই পুরানো ব্যাকআপটি নির্বাচন করে যা আর বিদ্যমান নেই। RESTORE HEADERONLY...এটি চালানোর সময় বলে (অবশ্যই) ফাইলটি বিদ্যমান নেই।


সম্পাদনা 3:

এটি জিইউআই প্রিন্ট:

1 এখানে চিত্র বর্ণনা লিখুন বাহ বাহ এক মিনিট অপেক্ষা !

এই ডাটাবেসটি অন্য সার্ভার (একই সার্ভার, বিভিন্ন উদাহরণ) থেকে পুনরুদ্ধার ছিল। হুয়ুম ... আমার মনে হয় সমস্যাটি এখানেই আছে।

আপনি কি দ্বিতীয় ছবিতে "সার্ভার" এ দেখতে পাচ্ছেন? এটিতে 2 টি সার্ভার রয়েছে। GDLIC2014 নামের উদাহরণ সহ আমি এটি ব্যবহার করছি।

এই পান্ডুলিপি:

এখানে চিত্র বর্ণনা লিখুন

ব্যাকআপ স্ক্রিপ্ট:

DECLARE @Patch varchar(1000)

SELECT @Patch = (SELECT 'PATCH\FULL\DATABASE_ ' + convert(varchar(500),GetDate(),112) + '.bkp') 

BACKUP DATABASE DATABASE TO DISK=@Patch with compression

এমএসএসকিউএলটিপস-এর একই প্রশ্নের সাথে আমি কোনও ফলাফলের তারিখ ছাড়াই এই ফলাফলগুলি খুঁজে পেতে পারি:

এখানে চিত্র বর্ণনা লিখুন

লাল বর্গক্ষেত্রটি পুরানো উদাহরণ থেকে ভুল ব্যাকআপ, নীল বর্গক্ষেত্রটি নেওয়া শেষ ব্যাকআপ (জিইউআই এটি ব্যবহার করা উচিত)

সম্পাদনা 4:

ঠিক আছে, ব্যাকআপ ইতিহাসের তালিকা তৈরি করতে এই প্রশ্নের সাথে আমি দেখতে পাচ্ছি যে প্রতিটি লগ এবং পূর্ণ সঠিকভাবে তালিকাভুক্ত করা হয়েছে:

SELECT TOP 100
s.database_name,
m.physical_device_name,
CAST(CAST(s.backup_size / 1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' AS bkSize,
CAST(DATEDIFF(second, s.backup_start_date,
s.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' TimeTaken,
s.backup_start_date,
CAST(s.first_lsn AS VARCHAR(50)) AS first_lsn,
CAST(s.last_lsn AS VARCHAR(50)) AS last_lsn,
CASE s.[type]
WHEN 'D' THEN 'Full'
WHEN 'I' THEN 'Differential'
WHEN 'L' THEN 'Transaction Log'
END AS BackupType,
s.server_name,
s.recovery_model
FROM msdb.dbo.backupset s
INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
WHERE s.database_name = DB_NAME() -- Remove this line for all the database
ORDER BY backup_start_date DESC, backup_finish_date
GO

EDIT5:

ডাটাবেসের শিরোলেখ পুনরায় চালু করার মতো কিছু আছে কি?

(আমি ধারণার বাইরে)


3
আপনি কি সর্বশেষ এসএসএমএস জিইউ - 2014 ব্যবহার করে দেখতে পারেন ? এখানে অনেকগুলি সংশোধন রয়েছে
কিন শাহ

1
কীভাবে আপনি এসএসএমএস তথ্য পাচ্ছেন তা ক্যাপচার করার জন্য আপনি কোনও ট্রেস সেট আপ করেছেন এবং তারপরে জিইউআই বিকল্পগুলি দিয়ে চলেছেন? দ্রুত হতে পারে ...
স্টিভ মঙ্গিয়ামালী

1
@ রাফায়েলপিসিনেলি - আমি অনুভব করি যে সাধারণ কিছু উপেক্ষা করা হচ্ছে, তবে এটি কী তা নিশ্চিত নয়। আপনি কি এমএসডিবি ডাটাবেসটিকে GDLIC2014 উদাহরণ থেকে পুনরুদ্ধার করেছেন? কিছু ভুল সংযোগ স্ট্রিং বা পথ ব্যবহার করা যেতে পারে? অবশ্যই এসকিউএল সার্ভার ব্যাকআপগুলি এবং পুনরুদ্ধারগুলির জন্য ডেটা তৈরি করছে না। (একটি সরাইয়া হিসাবে, এটা আকর্ষণীয় যে আপনার _2.mdf, _3.mdf এবং _4.mdf পুনরূদ্ধার করছি, কিন্তু না একটি অ-suffixed .mdf বা _1.mdf হয়।)
RLF

পুনরুদ্ধার করতে জিইউআই ব্যবহার করে প্রস্থান করুন। আপনার আসলে কী আছে তা নির্ধারণ করতে ব্যাকআপ ডিস্ক বা টেপটি দেখুন এবং সেগুলি থেকে শুরু করুন।
অ্যান্টি-দুর্বল পাসওয়ার্ড

হ্যালো @ অ্যান্টি-দুর্বল পাসওয়ার্ডগুলি। না না. আমি জিইউআই ব্যবহার করি না। আমি লগ সিকোয়েন্সটি জিজ্ঞাসা করি এবং আমি এটি দিয়ে কাজ করি। আমি জিইউআই সম্পর্কে কেবল কৌতূহল ছিলাম, তবে তখন আমি এই সমস্যাটি দেখেছি। আমি যতটা পারি জিইউআই থেকে দূরে থাকার চেষ্টা করি।
রেসার এসকিউএল

উত্তর:


1

ব্যাকআপ ইতিহাসের টেবিলগুলির মধ্যে এমন কিছু সম্ভাবনা যা সিঙ্কের বাইরে চলে যায় এবং ইউআই শেষ "সামঞ্জস্যপূর্ণ" সম্পূর্ণ ব্যাকআপে চলেছে। আপনি যদি এটি কেন করছেন সে সম্পর্কে সত্যই আগ্রহী হন, আপনার অ্যাকাউন্টের মধ্যে সীমাবদ্ধ একজন প্রোফাইলার ট্রেস শুরু করুন, জিইউআই-র পুনরুদ্ধার পদক্ষেপগুলি অনুসরণ করুন, এবং ট্রেসগুলিতে ইউআই কী করছে তা দেখায় যে কমান্ডগুলি পর্যালোচনা করে । এটি আপনার সন্ধানের সুনির্দিষ্ট উত্তর পাবে।

আপনি যদি এর পরিবর্তে কেবল সরে যেতে চান তবে আপনি আপনার ব্যাকআপের ইতিহাসটি সাফ করতে পারবেন EXEC [msdb].[dbo].[sp_delete_backuphistory] @oldest_date=getdate()(শেষ বারের মতো আপনি এটি চালিয়েছিলেন, আপনি এটি একবারে একবারে পরিষ্কার করতে চাইতে পারেন) এবং তারপরে একটি নতুন পূর্ণতা গ্রহণ করতে পারেন, ইত্যাদি I সন্দেহ হবে যে এটি এগিয়ে যাওয়ার সঠিক ব্যাকআপগুলি ব্যবহার করতে জিইউআইটিকে পুনরায় সেট করবে।

অবশেষে, আরেকটি বিকল্প হ'ল ওয়েইন শেফিল্ড দ্বারা রচিত এই স্ক্রিপ্টটি চালানো । এটি ব্যাকআপ চেইন সহ যে কোনও সমস্যা সম্পর্কিত আরও কিছু তথ্য সরবরাহ করতে পারে। আমি এই উত্তরটি মূলত পোস্ট করার আগে পর্যন্ত আমি এটি পেরেছি না, তবে আশা করি এটি ভবিষ্যতে অন্য কাউকে সাহায্য করবে।


আরে @ জোহান আপনার উত্তরের জন্য আপনাকে ধন্যবাদ .. আমি একটি করেছি declare @data datetime set @data=getdate() EXEC msdb.dbo.sp_delete_backuphistory @oldest_date=@dataএবং ইতিহাস মুছে ফেলেছি। এটি কাজ করে কিনা তা দেখার জন্য আমি কিছু পরীক্ষা করব। ধন্যবাদ.
রেসার এসকিউএল

হাই @ রাফায়েলপিসিনেলি এই কাজ কি তোমার জন্য ছিল?
কেফ্যাশ

আরে @ কেফাশ আমি মনে করি এটি কার্যকর হয়নি। আমি এখনই মনে করতে পারি না। তবে যতবারই আমি উত্তর পেয়েছি, ততক্ষনে আমি উত্তোলন করেছি এবং উত্তর হিসাবে নির্বাচন করব। আমি মনে করি এটি আমার সমস্যার সমাধান করেনি।
রেসার এসকিউএল

@ জোহান আমার এই সুওটির খারাপভাবে সমাধানের দরকার আছে। আপনার সমস্যা অবশেষে সমাধান হয়েছে?
কেফ্যাশ

@ রাফায়েলপিসিনেলি আমাকে হ্যাজে একটি ডেটাবেস যুক্ত করার জন্য যখন একটি বিন্দুতে পুনরুদ্ধার করতে হবে তখন এটি ঠিক করা দরকার, এটি বিরক্তিকর হতে পারে। আমি জানি এটি জিইউআই ছাড়াই করা যায় তবে লেনদেন লগগুলি প্রতি 10 মিনিটে নেওয়া হয়। আপনার অন্যান্য পন্থা কি ছিল?
কেফ্যাশ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.