هل من الممكن أن يكون لديك خادم ثانوي متاح للقراءة فقط في سيناريو شحن مجاني؟

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

سؤال

أنا أبحث في استخدام الشحن تسجيل الدخول في بيئة SQL Server 2005. كانت الفكرة هي إعداد الشحن المتكرر سجل إلى خادم ثانوي. النية: استخدم الخادم الثانوي لخدمة استعلامات الإبلاغ، وبالتالي تفريغ خادم DB الأساسي.

لقد صادفت هذا على SqlserververCentral الموضوع:

عند إنشاء سجل الشحن لديك 2 خيارات. يمكنك تكوين عملية تسجيل استعادة ليتم تنفيذها باستخدام Notecovery أو مع خيار الاستعداد. إذا كنت تستخدم الخيار Notecovery، فلا يمكنك إصدار عبارات تحديدها. إذا قمت بدلا من Norecovery، فأنت تستخدم خيار الاستعداد، فيمكنك تشغيل استعلامات تحديد في قاعدة البيانات. ضع في اعتبارك خيار الاستعداد عند إجراء استعادة ملف السجل، وسيتم طرد المستخدمين دون تحذير من خلال عملية الاستعادة. الحادة عند تكوين شحن السجل مع خيار الاستعداد، يمكنك أيضا تحديد ما بين 2 الخيارات - قتل جميع العمليات في قاعدة البيانات الثانوية وإجراء استعادة السجل أو عدم إجراء استعادة السجل إذا تم استخدام قاعدة البيانات. بالطبع إذا قمت بتحديد الخيار الثاني، فقد لا تعمل عملية الاستعادة أبدا إذا فتح شخص ما اتصالا بقاعدة البيانات ولا يغلقه، لذلك من الأفضل استخدام الخيار الأول.

لذلك أسئلتي هي:

  • هو أعلاه صحيح؟ هل يمكنك حقا عدم استخدام سجل الشحن بالطريقة التي أنويها؟
  • إذا كان الأمر صحيحا، فهل يمكن لشخص ما يفسر السبب في أنه لا يمكنك تنفيذ عبارات تحديد قاعدة بيانات أثناء استعادة سجل المعاملات؟

تعديل:

السؤال الأول هو مكررة سؤال ServerFault هذا. وبعد ولكن ما زلت أحب السؤال الثاني أجاب: لماذا لا يمكن تنفيذ عبارات تحديد أثناء استعادة سجل المعاملات؟

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

المحلول

هل يمكن لشخص ما يفسر لماذا لا يمكنك تنفيذ عبارات تحديد قاعدة بيانات أثناء استعادة سجل المعاملات؟

إجابة قصيرة هي أن عبارة الاستعادة يأخذ قفل حصري في قاعدة البيانات التي يتم استعادتها.

بالنسبة للكتابة، آمل ألا تكون هناك حاجة لي لشرح سبب عدم توافقي مع استعادة. لماذا لا تسمح بالقراءة أيضا؟ بادئ ذي بدء، لا توجد طريقة لمعرفة ما إذا كانت الجلسة التي تحتوي على قفل على قاعدة بيانات ستقوم بإجراء قراءة أو كتابة. ولكن حتى لو كان من الممكن، فإن استعادة (سجل أو النسخ الاحتياطي) هي عملية تقوم بالتحديث مباشرة صفحات البيانات في قاعدة البيانات. نظرا لأن هذه التحديثات تذهب مباشرة إلى الموقع الفعلي (الصفحة) ولا تتبع التسلسل الهرمي المنطقي (صف البيانات الوصفية - الصف)، فلن يكرمون أقفال نوايا محتملة من قراء آخرين من القراء، وبالتالي لديهم إمكانية تغيير الهياكل كما يتم قراءتها. وبعد سيتم إلقاء فحص جدول محدد بعد الصفحة المقبلة للمؤشرات في الفوضى، مما يؤدي إلى قراءة تالفة.

نصائح أخرى

حسنا نعم ولا.

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

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

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

تحرير: قد ترغب أيضا في تقييم حلول Architecitory البديلة لحاجة عملك. على سبيل المثال، النسخ المتماثل للمعاملات أو النسخ المتطابق لقاعدة البيانات مع لقطة قاعدة البيانات

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

نعم هذا صحيح.

أعتقد أن ما يلي يحدث:
في حين يتم استعادة سجل المعاملات، يتم تأمين قاعدة البيانات، حيث يتم تحديث أجزاء كبيرة منه.
هذا لأسباب الأداء أكثر ثم أي شيء آخر.

أستطيع أن أرى خيارين:

  1. استخدام النسخ المتطابق قاعدة البيانات.
  2. جدولة شحن الشحن لا يمكن إلا أن يحدث عندما لا يكون نظام التقارير قيد الاستخدام.

الارتباك الطفيف في ذلك، فإن العلم norecovery على استعادة يعني أن قاعدة البيانات الخاصة بك لن يتم إخراج قاعدة البيانات الخاصة بك من حالة استرداد وإلى حالة على الإنترنت - وهذا هو السبب في أن البيانات المحددة لن تعمل - قاعدة البيانات غير متصلة. هناك علامة عدم الاسترداد موجودة للسماح لك باستعادة ملفات سجل متعددة على صف واحد (في سيناريو DR Type) دون إحضار قاعدة البيانات مرة أخرى عبر الإنترنت.

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

هل عمل النسخ المتماثل للنظر إلى نظير. ثم يمكنك تشغيل الاستعلامات على مثيل واحد وحفظ الحمل على المثيل الأصلي.

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