كيف يمكن لـ SQL Server إرسال رسالة خطأ عبر البريد الإلكتروني عندما يفشل ناشر النسخ المتماثل في الاتصال بنظام المشترك

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

سؤال

لدينا العديد من المواقع البعيدة حيث قمنا بإعداد النسخ المتماثل لـ SQL Server 2005.في بعض الأحيان يفشل الناشر في النسخ المتماثل لأسباب مختلفة مثل

1) مشاكل الشبكة،

2) إغلاق غير لائق للمشترك،

3) تغيير كلمات مرور المجال،

4) تغيير كلمات مرور SQL،

5) الفشل في تشغيل نظام المشترك.

هل هناك أي طريقة يمكننا من خلالها جعل خادم SQL يرسل بريدًا إلكترونيًا إلى المسؤول عند حدوث ذلك حتى يتمكن من التحقق؟

شكرا ، تشاك.

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

المحلول

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

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

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

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

نصائح أخرى

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

USE [msdb] 
GO 
EXEC msdb.dbo.sp_add_alert  
    @name=N'Distribution agent stopped',   
    @message_id=0,  
    @severity=0,  
    @enabled=1,   
    @delay_between_responses=2160, 
    @include_event_description_in=1,   
    @category_name=N'[Uncategorized]',  
    @performance_condition=N'MSSQL$MYDATABASE:Replication Agents|Running|Distribution|=|0', 
    @job_id=N'00000000-0000-0000-0000-000000000000' 
GO 
EXEC msdb.dbo.sp_update_notification 
    @alert_name=N'Distribution agent stopped',   
    @operator_name=N'Amit',  
    @notification_method = 1 

ليس من السهل اكتشاف أخطاء التحقق/المزامنة.يمكنك إعداد وظيفة ليلية للتشغيل sp_publication_validation وقم بإعداد تنبيه آخر على "فشل التحقق من الصحة".

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

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

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