كيفية استعادة قواعد بيانات متعددة في خادم SQL في وقت واحد؟ عادةً ما يمكنك استخدام نص T-SQL فعّال ، أو جرب برنامج قوي بقيود أقل.
من المؤسف أن واجهة المستخدم الرسومية لـ SSMS تدعم فقط استعادة قاعدة بيانات واحدة في كل مرة. إذا كنت قمت بعمل نسخ احتياطية لعدة قواعد بيانات في ملفات BAK منفصلة، هل يمكنك استعادتها جميعًا دفعة واحدة؟
الإجابة هي نعم. عموماً، يمكنك استخدام سيناريو T-SQL صالح لاستعادة عدة قواعد بيانات دفعة واحدة، ولكن فقط إذا كانت ملفات النسخ الاحتياطي مسماة تمامًا وفقًا للقواعد البيانات المقابلة ولا تحتوي على أي معلومات إضافية مثل التاريخ/الوقت.
إذا كنت ترغب في القيام بذلك بشكل أكثر مرونة، فهناك أيضًا بديل سهل باستخدام واجهة المستخدم الرسومية. فقط اختر الطريقة التي تفضلها.
استعادة عدة قواعد بيانات في SQL Server يمكن أن تكون عملية معقدة. لتقليل وقت التوقف، يجب تلبية عدة شروط قبل البدء:
يمكنك استخدام سكربت لاستعادة عدة قواعد بيانات في 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"
بدلاً من ذلك ، يمكنك استخدام سكريبت لإنشاء أوامر استعادة لجميع قواعد البيانات في خادم 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 باستخدام أسماء الملفات المقابلة
السكريبتات أعلاه لا يمكن استخدامها إلا عندما تكون ملفات 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.
هذا كل شيء، يمكنك جدولة نسخ البيانات لـ SQL Server المضافة الآن.
◉ كيفية نسخ احتياطي لعدة قواعد بيانات في SQL Server:
1. انقر على مهمة النسخ الاحتياطي -> إنشاء مهمة جديدة، واختر نوع النسخ الاحتياطي كـ نسخ احتياطي Microsoft SQL.
2. انقر على اسم الجهاز لتحديد مثيل SQL وقواعد البيانات المراد نسخها احتياطيًا. يمكنك تحديد قاعدة بيانات واحدة أو عدة قواعد بيانات حسب حاجتك.
3. حدد مكان التخزين المستهدف لحفظ النسخ الاحتياطية للSQL. يمكنك تحديد مسار محلي أو مسار الشبكة.
4. قم بتكوين الجدولة لتنفيذ نسخ احتياطي لقاعدة البيانات SQL يوميًا أو أسبوعيًا أو شهريًا، واختر طريقة النسخ الاحتياطي كاملة، تزايدية أو تفاضلية.
انقر على بدء النسخ الاحتياطي لإنشاء وتنفيذ المهمة. بمجرد انتهاء العملية، ستجد الملف في علامة التبويب مهمة النسخ الاحتياطي.
✍ميزات أخرى مفيدة:
◉ كيفية استعادة قواعد البيانات المتعددة من النسخ الاحتياطي:
1. انقر فوق مهمة النسخ الاحتياطي في شريط القائمة الجانبي، ابحث عن المهمة التي ترغب في استعادتها، وانقر فوق
2. حدد إصدار النسخة الاحتياطية التي ترغب في استعادة قواعد بيانات SQL منها.
3. بعد ذلك، حدد الموقع الهدف الذي ترغب في استعادته إليه. هناك 2 خيارات:
استبدال قاعدة البيانات بنفس الاسم: إذا قمت بالتحديد في هذا الخيار، فإن قواعد البيانات التي تم إنشاؤها ستستبدل القواعد الهدف بنفس الأسماء. إذا تركته غير محدد، ستتم تجاهل قواعد البيانات الهدف بنفس الأسماء أثناء الاستعادة.
4. بعد تكوين جميع الإعدادات، انقر على بدء الاستعادة لبدء عملية الاستعادة وانتظر بصبر لاستكمالها. يمكنك النقر على زر
✍ملاحظات:
واجهة المستخدم الرسومية لـ SSMS تسمح لك فقط باستعادة قاعدة بيانات واحدة في كل مرة. إذا كنت ترغب في استعادة عدة قواعد بيانات في SQL Server في وقت واحد، فإن النهج الأكثر شيوعًا هو استخدام نص T-SQL. ومع ذلك، ينطوي ذلك على قيود صارمة على أسماء ملفات النسخ الاحتياطي، ويجعل العمليات مثل استعادة قواعد البيانات إلى نسخة أخرى صعبة التنفيذ. لذلك، يمكنك أيضًا تجربة برنامج نسخ احتياطي SQL - AOMEI Cyber Backup.
يجعل العملية أسهل بكثير. على سبيل المثال، يمكنك النسخ الاحتياطي التلقائي لقواعد البيانات SQL ببضع نقرات بسيطة، واستعادة قواعد البيانات المتعددة في وقت واحد من خلال عملية سهلة على نفس النحو.