كيفية استعادة قواعد بيانات متعددة في خادم SQL (3 طرق)
كيفية استعادة قواعد بيانات متعددة في خادم SQL في وقت واحد؟ عادةً ما يمكنك استخدام نص T-SQL فعّال ، أو جرب برنامج قوي بقيود أقل.
هل يمكن استعادة عدة قواعد بيانات SQL في وقت واحد
من المؤسف أن واجهة المستخدم الرسومية لـ SSMS تدعم فقط استعادة قاعدة بيانات واحدة في كل مرة. إذا كنت قمت بعمل نسخ احتياطية لعدة قواعد بيانات في ملفات BAK منفصلة، هل يمكنك استعادتها جميعًا دفعة واحدة؟
الإجابة هي نعم. عموماً، يمكنك استخدام سيناريو T-SQL صالح لاستعادة عدة قواعد بيانات دفعة واحدة، ولكن فقط إذا كانت ملفات النسخ الاحتياطي مسماة تمامًا وفقًا للقواعد البيانات المقابلة ولا تحتوي على أي معلومات إضافية مثل التاريخ/الوقت.
إذا كنت ترغب في القيام بذلك بشكل أكثر مرونة، فهناك أيضًا بديل سهل باستخدام واجهة المستخدم الرسومية. فقط اختر الطريقة التي تفضلها.
شروط استعادة عدة قواعد بيانات في SQL Server
استعادة عدة قواعد بيانات في SQL Server يمكن أن تكون عملية معقدة. لتقليل وقت التوقف، يجب تلبية عدة شروط قبل البدء:
- امتلاك الامتيازات الإدارية والوصول إلى ملفات النسخ الاحتياطي.
- يجب أن يكون هناك نسخة احتياطية واحدة لكل قاعدة بيانات في كل ملف نسخ احتياطي.
- يجب أن تحتوي قاعدة البيانات في الملف النسخ الاحتياطي على ملفين فقط: ملف السجل وملف البيانات.
- نظرًا لأننا نستخدم اسم قاعدة البيانات لتسمية ملفاتها الفعلية على القرص، يجب أن يتم السماح باستخدام الأحرف المسموح بها في أسماء الملفات الفعلية في قاعدة البيانات الجديدة التي سنقوم بإعادة استعادتها.
الطريقة 1. استعادة عدة قواعد بيانات من ملفات BAK باستخدام xp_cmdshell
يمكنك استخدام سكربت لاستعادة عدة قواعد بيانات في SQL Server من مجلد. ولكن قبل ذلك، يرجى الاتصال بالنسخة وتمكين xp_cmdshell.
1. انقر على استعلم جديد وأدخل الأمر التالي:
-- للسماح بتغيير الخيارات المتقدمة.
EXEC sp_configure "show advanced options", 1;
GO
-- لتحديث القيمة المكونة حاليًا للخيارات المتقدمة.
RECONFIGURE;
GO
-- لتمكين هذه الميزة.
EXEC sp_configure "xp_cmdshell", 1;
GO
-- لتحديث القيمة المكونة حاليًا لهذه الميزة.
RECONFIGURE;
GO
قم بتنفيذ الاستعلام وسيتم تمكين الميزة.
2. بعد ذلك يمكنك استعادة قواعد بيانات متعددة من خادم SQL باستخدام السيناريو (يرجى استبدال "D:\backup\" بـالمجلد الخاص بك الذي يحتوي على جميع ملفات النسخ الاحتياطي):
DECLARE @FilesCmdshell TABLE (
outputCmd NVARCHAR (255)
)
DECLARE @FilesCmdshellCursor CURSOR
DECLARE @FilesCmdshellOutputCmd AS NVARCHAR(255)
INSERT INTO @FilesCmdshell (outputCmd) EXEC master.sys.xp_cmdshell "dir /B D:\backup\*.bak"
SET @FilesCmdshellCursor = CURSOR FOR SELECT outputCmd FROM @FilesCmdshell
OPEN @FilesCmdshellCursor
FETCH NEXT FROM @FilesCmdshellCursor INTO @FilesCmdshellOutputCmd
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @cmd NVARCHAR(MAX) = "RESTORE DATABASE [" SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX(".", @FilesCmdshellOutputCmd)) "] FROM DISK = N"'D:\backup\" SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX(".", @FilesCmdshellOutputCmd)) ".bak"' WITH FILE = 1, NOUNLOAD, STATS = 10"
EXEC(@cmd)
FETCH NEXT FROM @FilesCmdshellCursor INTO @FilesCmdshellOutputCmd
END
✎ملاحظة: إذا قمت بتلقي خطأ "سجل قاعدة البيانات الذيل لم يتم نسخه. استخدم BACKUP LOG WITH NORECOVERY للنسخ الاحتياطي للسجل إذا كان يحتوي على عمل غير ترغب في فقدانه. استخدم البيان REPLACE أو STOPAT مع عبارة RESTORE لتعديل محتويات السجل فقط", الحل هو كما يقترح.
على سبيل المثال ، يمكنك تعديل أمر الاستعادة إلى "... WITH FILE = 1 ، REPLACE ، NOUNLOAD ، STATS = 10"
الطريقة 2. إنشاء سكريبت لاستعادة جميع قواعد البيانات في خادم SQL
بدلاً من ذلك ، يمكنك استخدام سكريبت لإنشاء أوامر استعادة لجميع قواعد البيانات في خادم SQL ، وتجميعها كسكريبت جديد للتنفيذ.
1. انقر فوق استعلام جديد وأدخل الأوامر التالية في نافذة الاستعلام SQL:
DECLARE @folderpath VARCHAR (1000)
SELECT @folderpath = "D:\Backup\" -- مسار النسخ الاحتياطي
SELECT "RESTORE DATABASE[" NAME "] FROM DISK = "'" @folderpath name ".bak"' WITH NORECOVERY,
REPLACE, STATS = 5"
FROM master.sys.databases
WHERE name NOT IN ("master","model","msdb","tempdb","distribution")
سيتولد سلسلة من الأوامر لاستعادة قواعد بيانات متعددة في خادم SQL من ملفات BAK بنفس الأسماء
2. انقر بزر الماوس الأيمن على أي أمر في النتائج ، اختر تحديد الكل ثم نسخ (أو استخدم Ctrl A و Ctrl C).
3. الصق هذه الأوامر في نافذة الاستعلام SQL كسكريبت جديد للاستعلام تنفيذ. ستقوم بإعادة توفير جميع قواعد البيانات في خادم SQL من الملفات BAK باستخدام أسماء الملفات المقابلة
الطريقة 3. نسخ احتياطي واستعادة قواعد بيانات SQL متعددة باستخدام واجهة رسومية (أسهل)
السكريبتات أعلاه لا يمكن استخدامها إلا عندما تكون ملفات BAK مسماة وفقًا لقواعد بيانات SQL بشكل دقيق ، وهو قيد التقييد في الممارسة. لذا ، أود أن أقدم وسيلة أكثر ملاءمة لعمل نسخ احتياطي واستعادة قواعد البيانات المتعددة ، أو حتى المثيل بأكمله.
AOMEI Cyber Backup هو حل إدارة مركزية موثوق لنسخ احتياطي واستعادة قواعد بيانات SQL على جميع أجهزة الكمبيوتر المكتبية وأجهزة الكمبيوتر المحمولة والخوادم داخل شبكة المنطقة المحلية.
يعمل على نظام Windows 11/10/ 8.1/8/7, نظام ويندوز سيرفر 2022/2019/2016/2012 (R2)/2008 (R2), ويدعم نسخ احتياطي لـ SQL Server من الإصدار 2005 إلى 2022. بالإضافة إلى قواعد البيانات SQL, يدعم أيضًا نسخ احتياطي للآلة الظاهرية لـ Hyper-V و VMware.
- قم بتشغيل ملف .exe الذي تم تنزيله لتثبيت AOMEI Cyber Backup وقم بتشغيل واجهته الرئيسية. انقر فوق جهاز المصدر -> Microsoft SQL -> إضافة Microsoft SQL.
- اختر تنزيل برنامج وكيل أو نسخ الرابط لتنزيل برنامج الوكيل وتثبيته على الجهاز الذي يحتوي على SQL Server المثبت. ثم، انتقل إلى الوكيل مثبت بالفعل لتحديد الجهاز.
- من ثم، انقر على
-> المصادقة للتحقق من صحة نسخة قاعدة البيانات. يمكنك اختيار مصادقة Windows أو مصادقة SQL.
هذا كل شيء، يمكنك جدولة نسخ البيانات لـ SQL Server المضافة الآن.
◉ كيفية نسخ احتياطي لعدة قواعد بيانات في SQL Server:
1. انقر على مهمة النسخ الاحتياطي -> إنشاء مهمة جديدة، واختر نوع النسخ الاحتياطي كـ نسخ احتياطي Microsoft SQL.
2. انقر على اسم الجهاز لتحديد مثيل SQL وقواعد البيانات المراد نسخها احتياطيًا. يمكنك تحديد قاعدة بيانات واحدة أو عدة قواعد بيانات حسب حاجتك.
3. حدد مكان التخزين المستهدف لحفظ النسخ الاحتياطية للSQL. يمكنك تحديد مسار محلي أو مسار الشبكة.
4. قم بتكوين الجدولة لتنفيذ نسخ احتياطي لقاعدة البيانات SQL يوميًا أو أسبوعيًا أو شهريًا، واختر طريقة النسخ الاحتياطي كاملة، تزايدية أو تفاضلية.
انقر على بدء النسخ الاحتياطي لإنشاء وتنفيذ المهمة. بمجرد انتهاء العملية، ستجد الملف في علامة التبويب مهمة النسخ الاحتياطي.
✍ميزات أخرى مفيدة:
- تنظيف النسخ الاحتياطي يساعدك على حذف نسخ النسخ الاحتياطي الأقدم تلقائيًا وبالتالي توفير مساحة تخزين.
- إشعار البريد الإلكتروني يتيح لك تلقي إشعارات بالبريد الإلكتروني عند حدوث خطأ أو اكتمال المهمة بنجاح.
- أرشفة يساعدك على أرشفة الملفات الاحتياطية في تخزين AWS S3.
◉ كيفية استعادة قواعد البيانات المتعددة من النسخ الاحتياطي:
1. انقر فوق مهمة النسخ الاحتياطي في شريط القائمة الجانبي، ابحث عن المهمة التي ترغب في استعادتها، وانقر فوق -> استعادة.
2. حدد إصدار النسخة الاحتياطية التي ترغب في استعادة قواعد بيانات SQL منها.
3. بعد ذلك، حدد الموقع الهدف الذي ترغب في استعادته إليه. هناك 2 خيارات:
- استعادة إلى الموقع الأصلي (افتراضيًا): استعادة في نفس المكان ويمكنك استعادة قواعد بيانات SQL إلى إصدار أقدم.
- استعادة إلى موقع جديد: حدد موقعًا آخر لأداء استعادة خارج مساحة التخزين. يمكنك تحديد اسم قاعدة البيانات الجديدة وتعديل موقع التخزين.
استبدال قاعدة البيانات بنفس الاسم: إذا قمت بالتحديد في هذا الخيار، فإن قواعد البيانات التي تم إنشاؤها ستستبدل القواعد الهدف بنفس الأسماء. إذا تركته غير محدد، ستتم تجاهل قواعد البيانات الهدف بنفس الأسماء أثناء الاستعادة.
4. بعد تكوين جميع الإعدادات، انقر على بدء الاستعادة لبدء عملية الاستعادة وانتظر بصبر لاستكمالها. يمكنك النقر على زر لعرض تفاصيل الاستعادة أو إلغائها.
✍ملاحظات:
- "استعادة إلى الموقع الأصلي" يجب التأكد من وجود الموقع الأصلي. وإلا، يمكنك فقط تحديد "استعادة إلى موقع جديد".
- "استعادة إلى الموقع الأصلي" سيقوم بالكتابة فوق أو حذف بيانات قاعدة البيانات الأصلية، إذا كانت قاعدة البيانات الأصلية تحتوي على بيانات مهمة، فمن المستحسن اختيار "استعادة إلى موقع جديد".
الاستنتاج
واجهة المستخدم الرسومية لـ SSMS تسمح لك فقط باستعادة قاعدة بيانات واحدة في كل مرة. إذا كنت ترغب في استعادة عدة قواعد بيانات في SQL Server في وقت واحد، فإن النهج الأكثر شيوعًا هو استخدام نص T-SQL. ومع ذلك، ينطوي ذلك على قيود صارمة على أسماء ملفات النسخ الاحتياطي، ويجعل العمليات مثل استعادة قواعد البيانات إلى نسخة أخرى صعبة التنفيذ. لذلك، يمكنك أيضًا تجربة برنامج نسخ احتياطي SQL - AOMEI Cyber Backup.
يجعل العملية أسهل بكثير. على سبيل المثال، يمكنك النسخ الاحتياطي التلقائي لقواعد البيانات SQL ببضع نقرات بسيطة، واستعادة قواعد البيانات المتعددة في وقت واحد من خلال عملية سهلة على نفس النحو.