استعادة النسخ الاحتياطي التفاضلي مع استعادة الكائن SMO

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

سؤال

وأنا أحاول استعادة قاعدة بيانات من خلال استعادة أول نسخة احتياطية كاملة ثم استعادة نسخة احتياطية التفاضلية باستخدام فئة Microsoft.SqlServer.Management.Smo.Restore. يتم استعادة نسخة احتياطية كاملة مع التعليمات البرمجية التالية:

Restore myFullRestore = new Restore();
myFullRestore.Database = "DatabaseName";
myFullRestore.Action = RestoreActionType.Database;
myFullRestore.AddDevice(@"C:\BackupFile.bak", DeviceType.File);
myFullRestore.FileNumber = 1;
myFullRestore.SqlRestore(myServer); // myServer is an already-existing instance of Microsoft.SqlServer.Management.Smo.Server

وبعد استعادة النسخة الاحتياطية الكاملة (الذي يكمل بنجاح)، قانون بلدي لاستعادة فرق احتياطية كما يلي:

Restore myDiffRestore = new Restore();
myDiffRestore.Database = "DatabaseName";
myDiffRestore.Action = RestoreActionType.Database;
myDiffRestore.AddDevice(@"C:\BackupFile.bak", DeviceType.File);
myDiffRestore.FileNumber = 4; // file contains multiple backup sets, this is the index of the set I want to use
myDiffRestore.SqlRestore(myServer);

ومع ذلك، فإن هذا الرمز رمي Microsoft.SqlServer.Management.Smo.FailedOperationException، مع رسالة "استعادة فاشلة لخادم" SERVERNAME ". هل أنا بحاجة الى صراحة أنني استعادة نسخة احتياطية التفاضلية، وإذا كان الأمر كذلك، كيف أذهب عن القيام بذلك؟ أو هي المشكلة أقل وضوحا من هذا؟ فإن أي اقتراحات بشأن ما أقوم به خطأ (أو إهمال القيام به) سيكون موضع تقدير كبير.

على تحديث : في لست متأكدا إذا كان هذا في الأصل خطأ مطبعي أم الإصدارات السابقة كان هذا الشكل من API، ولكن لأحدث إصدارات هذا الخط

fullRestore.AddDevice(...);

يجب أن يكون

fullRestore.Devices.AddDevice(...)
هل كانت مفيدة؟

المحلول

وبعد أكثر قليلا حفر وأنا أحسب هذا من أصل واحد. وحتى يتسنى للفرق احتياطية استعادة في العمل، واستعادة كاملة الاحتياجات التي يتعين القيام بها مع مجموعة NORECOVERY إلى true:

// before executing the SqlRestore command for myFullRestore...
myFullRestore.NoRecovery = true;

وهذا يحدد أن سجل معاملة أخرى لا بد من تطبيقها، وهو في هذه الحالة هو فرق احتياطية. هذه الصفحة تحتوي على بعض مزيد من المعلومات التي وجدتها مفيدة: http://doc.ddart.net/mssql/sql70/ra-rz_9. هتم

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top