استراتيجية لتحديد الجداول غير المستخدمة في SQL Server 2000؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

أنا أعمل مع قاعدة بيانات SQL Server 2000 التي من المحتمل أن تحتوي على بضع عشرات من الجداول التي لم يعد من الممكن الوصول إليها.أرغب في مسح البيانات التي لم نعد بحاجة إلى صيانتها، ولكني لست متأكدًا من كيفية تحديد الجداول التي يجب إزالتها.

تتم مشاركة قاعدة البيانات بواسطة العديد من التطبيقات المختلفة، لذا لا يمكنني أن أكون واثقًا بنسبة 100% من أن مراجعة هذه التطبيقات ستمنحني قائمة كاملة بالكائنات المستخدمة.

ما أود فعله، إذا كان ذلك ممكنًا، هو الحصول على قائمة بالجداول التي لم يتم الوصول إليها على الإطلاق لفترة من الوقت.لا يقرأ ولا يكتب.كيف يجب أن أتعامل مع هذا؟

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

المحلول

لن يوفر لك MSSQL2000 هذا النوع من المعلومات.ولكن إحدى الطرق التي يمكنك من خلالها تحديد الجداول المستخدمة (ثم استنتاج أي منها غير مستخدمة) هي استخدام ملف تعريف SQL لحفظ جميع الاستعلامات التي تذهب إلى قاعدة بيانات معينة.قم بتكوين ملف التعريف لتسجيل النتائج في جدول جديد، ثم تحقق من الاستعلامات المحفوظة هناك للعثور على كافة الجداول (وطرق العرض، sps، إلخ) التي تستخدمها تطبيقاتك.

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

select * from ...

ثم سيتلقون عمودًا جديدًا وقد يسبب لك بعض المشاكل.

نصائح أخرى

اقتراح آخر لتتبع الجداول التي تمت كتابتها هو استخدامها Red Gate SQL Log Rescue (حر).تتعمق هذه الأداة في سجل قاعدة البيانات وستعرض لك جميع الإدخالات والتحديثات والحذف.القائمة قابلة للبحث بالكامل أيضًا.

إنها لا تلبي معاييرك للبحث في القراءات في قاعدة البيانات، ولكن أعتقد أن تقنية SQL Profiler ستمنحك فكرة عادلة فيما يتعلق بذلك.

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

ما أفعله عادةً هو إعادة تسمية الجدول عن طريق وضع شرطة سفلية قبله، وعندما يبدأ الأشخاص بالصراخ، أقوم فقط بإعادة تسميته مرة أخرى

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

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

ما عليك سوى حذفها ومعرفة ما إذا كان أي مستخدم يشتكي منها ;)

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

ربما فات الأوان للمساعدة في العزاء، ولكن بالنسبة لأي شخص يقوم بالبحث؛سأبحث عن كافة الكائنات التي تستخدم هذا الكائن في الكود الخاص بي، ثم في SQL Server عن طريق تشغيل هذا:

حدد '[' + اسم_الكائن (المعرف) + ']' مميزًا
من سيكومنتس
حيث يوجد نص مثل "%MY_TABLE_NAME%"

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