سؤال

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

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

ما أتساءل هو إذا كانت هناك طريقة لإيجاد GUID في قاعدة بيانات. بدلاً من ذلك ، إذا كان لديّ GUID أعتقد أنه مفتاح أساسي في بعض الجدول ، فهل هناك طريقة في T-SQL لطلب المباريات مع أي عمود مفتاح فريد من نوعه؟

أعلم أن GUID لدي ليس عميلًا ، ولكن قد يكون معرف مفتاح أساسي آخر من جدول آخر. حتى الآن قام الفريق بالبحث في الجداول الأخرى يدويًا عن المباريات مع Guids المارقة لمعرفة ما إذا كان بإمكانهم معرفة "نوع" المفتاح. لقد ذهبوا حتى إلى حد إنشاء البرامج النصية مع الكثير من "SELECT * from [table] حيث [tableId] = rogueGuid" التي تبحث في جداول الكيانات المعروفة لمطابقة. ومع ذلك ، هذا النهج ليس فعال للغاية.

أنا أبحث عن هذا البرنامج النصي ليس فقط لهذا المشروع ولكن أيضًا لأنني أعتقد أن "هل يوجد هذا GUID كقيمة مفتاح أساسية في أي مكان في قاعدة البيانات هذه؟" سيكون نوع الاستعلام أحد الأصول المفيدة في صندوق أدوات التطوير. أي مساعدة موضع تقدير.

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

المحلول

تم طرح سؤال مشابه لهذا الأمر هنا. نأمل أن يساعد هذا.

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