سؤال

كنت أختبر ميزة SQL Server 2008 Change Capture على جدول عندما أصبح عالقًا.

  • لا يوجد سوى جدول واحد ممكّن لـ CDC.
  • بعد إجراء تغييرات مختلفة DDL على الجدول لاختبار كيفية استجابة مركز السيطرة على الأمراض ، أسقطت الجدول.
  • سابقًا في الاختبار الخاص بي ، يؤدي إسقاط الجدول أيضًا إلى إسقاط مركز السيطرة على الأمراض على جدول التصوير المقطعي ، وأي بيانات ميتا تتعلق بجدول مسقط.
  • يبدو أنه لم يتم اكتشاف بيان الإسقاط الأخير من قبل CDC ، حيث لا يزال جدول التصوير المقطعي المحوسب موجودًا ، ويوجد سجل له في جدول CDC.Change_Tables
  • لا يمكنني تعطيل CDC للجدول ، أو تمكين CDC لجدول تم إنشاؤه حديثًا بنفس الاسم ، نظرًا لوجود سجل CDC.CHANGE_Table ويرتبط بمعرف كائن غير موجود في بيانات META SQL Server.
  • حاولت تعطيل CDC لقاعدة البيانات ، لكن الأمر استمر لمدة ساعة واحدة دون رد قبل أن أتوقف.
  • أثناء محاولة تعطيل مركز السيطرة على الأمراض لقاعدة البيانات ، أصبحت قائمة الوظائف الخاصة بعامل SQL Server غير مستجيب (مهلة طلب القفل) في استوديو الإدارة. بعد إلغاء أمر تعطيل CDC ، كان الوكيل لا يزال غير مستجيب.
  • حاولت إعادة تشغيل خدمة الوكيل. توقفت بنجاح ولكن معلقة خلال (ما بدا أنه المراحل النهائية من بدء التشغيل. الخدمة عالقة الآن في حالة "البدء".

أقوم بإعادة تشغيل الخادم لمحاولة تشغيل الوكيل مرة أخرى.

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

هل واجه أي شخص أي مشاكل مماثلة مع CDC تشير إلى عدم الاستقرار مع النظام؟

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

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

المحلول

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

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

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

نصائح أخرى

لقد وجدت أن محاولة الجري EXEC sys.sp_cdc_disable_db فشل في قاعدة بيانات لا تملكها SA.

(ما زلت أرى جداول CDC بواسطة select db_name() as dbname , p.rows,* from sys.objects o join sys.partitions p on o.object_id=p.object_id where o.schema_id=schema_id('cdc') and p.index_id < 2)

Sys.sp_cdc_disable_db ينجح على الفور بعد ببساطة exec sp_changedbowner 'sa'

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