استعادة النسخة الاحتياطية لقاعدة البيانات عبر الشبكة

StackOverflow https://stackoverflow.com/questions/16491

سؤال

كيف يمكنك استعادة نسخة احتياطية لقاعدة البيانات باستخدام SQL Server 2005 عبر الشبكة؟أتذكر أنني قمت بذلك من قبل ولكن كان هناك شيء غريب في الطريقة التي كان عليك القيام بها.

هل كانت مفيدة؟

المحلول

غالبًا ما يتم تشغيل قاعدة البيانات كخدمة ضمن حساب لا يمكنه الوصول إلى الشبكة.إذا كانت هذه هي الحالة، فلن تتمكن من الاستعادة مباشرة عبر الشبكة.إما أن يتم نسخ النسخة الاحتياطية إلى الجهاز المحلي أو تحتاج خدمة قاعدة البيانات إلى التشغيل كمستخدم يتمتع بإمكانية الوصول المناسبة إلى الشبكة.

نصائح أخرى

لديك خيارات قليلة لاستخدام ملف الشبكة كمصدر للنسخ الاحتياطي

  1. تعيين محرك/مسار الشبكة، وملف الاستضافة، تحت نفس المستخدم مثل MS-SQL Server.
  2. استخدم الإجراء المخزن الموسع xp_cmdshell لتعيين محرك أقراص الشبكة من داخل MS SQL (وبهذه الطريقة، سيكون لـ Command Shell نفس الامتيازات التي يتمتع بها حساب المستخدم الذي يقوم بتشغيل SSMS)
-- allow changes to advanced options 
EXEC sp_configure 'show advanced options', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
EXEC xp_cmdshell 'NET USE Z: \\Srv\Path password1 /USER:Domain\UserName'

بعد ذلك محرك Z:سوف تكون مرئية في استوديو إدارة الخادم، أو فقط

RESTORE DATABASE DataBaseNameHere FROM DISK = 'Z:\BackNameHere.BAK'
GO

لا يمكنك القيام بذلك من خلال واجهة المستخدم الرسومية SSMS، ولكن يمكنك القيام بذلك باستخدام برنامج نصي.استعادة قاعدة البيانات من DISK='\unc\path\filename' إذا كنت بحاجة إلى أتمتة هذه العملية، فإن أفضل طريقة هي إعداد مهمة SQL Server وتشغيلها كمستخدم لديه حق الوصول إلى موقع الملف.

تأكد من أن المستخدم الذي يقوم بتشغيل الخاص بك SQL services في "Services.msc" هو دليل نشط "Domain User" سيؤدي هذا إلى حل المشكلة.

يمكنك استخدام SP xp_cmdshell لتعيين محرك الشبكة لخادم SQL، وبعد ذلك سيظهر في نافذة تصفح الملفات.

EXEC xp_cmdshell 'NET USE Z: SERVERLOCATION PASSWORD /USER:DOMAIN\USERNAME'

مزيد من المعلومات هنا: استعادة قاعدة البيانات من محرك أقراص الشبكة

عملت بالنسبة لي!

لقد اضطررت إلى القيام بذلك عدة مرات، وليس هناك سوى خيارين أعرفهما.انسخ الملف محليًا إلى SQL Server، أو قم بإنشاء محرك أقراص شبكة معين على خادم SQL للمشاركة التي تحتوي على ملف النسخ الاحتياطي.

تحتاج أيضًا إلى التأكد من تشغيل خدمة SQL Server كمستخدم لديه حق الوصول إلى الشبكة - وأذونات المشاركة حيث يوجد ملف النسخ الاحتياطي.لن يكون لدى "النظام المحلي" أذونات للوصول إلى الشبكة.

كملاحظة جانبية، إذا كنت تقوم بتشغيل SQL على جهاز ظاهري، فغالبًا ما يكون من السهل إعداد محرك أقراص جديد بشكل مؤقت على الجهاز الظاهري مع مساحة كافية لنسخ ملفات النسخ الاحتياطي الخاصة بك، وإجراء الاستعادة من تلك النسخة المحلية الجديدة، ثم قم بحذف محرك الأقراص المؤقت.

يمكن أن يكون هذا مفيدًا إذا كان إيقاف/بدء تشغيل خدمة SQL لتغيير حسابها يمثل مشكلة.

قم بإنشاء محرك أقراص مشترك على الجهاز الذي يحتوي على النسخ الاحتياطية، لنفترض أن الخادم 1 لديه النسخ الاحتياطية في مجلد "النسخ الاحتياطية".منح التحكم الكامل للحساب الذي يقوم بتشغيل SQL Server.على الخادم الذي تريد استعادته لتشغيل SSMS، انتقل إلى استعادة قاعدة البيانات وحدد "من الجهاز".في مربع الحوار "تحديد موقع ملف النسخ الاحتياطي - "الخادم"" وإزالة أي شيء في الحقل "المسار المحدد" وفي الحقل "اسم الملف" قم بتوفير المسار الكامل لذلك "\server\backups\db.bak".على الأقل نجح الأمر بالنسبة لي عند الترحيل من 05 إلى 08.ليست الطريقة المفضلة لأن أي خلل في الشبكة يمكن أن يسبب مشكلة في الاستعادة.

EXEC sp_configure 'show advanced options', 1
GO

- تحديث القيم التي تم تكوينها حاليًا للخيارات المتقدمة.

RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO

- تحديث القيم التي تم تكوينها حاليًا للخيارات المتقدمة.

RECONFIGURE
GO

--يجب تشغيل هذا على موجه الأوامر (cmd)

NET USE Z: \\172.100.1.100\Shared Password /USER:administrator /Persistent:no

ثم على خادم SQL

EXEC xp_cmdshell 'NET USE Z: \\172.100.1.100\Shared Password /USER:administrator /Persistent:no'

--بعد ذلك قم بالقيادة Z:سوف تكون مرئية في استوديو إدارة الخادم، أو فقط

RESTORE DATABASE DB FROM DISK = 'Z:\DB.BAK'
WITH REPLACE
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top