كيف يمكنني الحصول على قائمة الجداول المتضررة من خلال مجموعة من الإجراءات المخزنة?

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

  •  02-07-2019
  •  | 
  •  

سؤال

لدي قاعدة بيانات ضخمة مع بعض 100 الجداول وبعض 250 الإجراءات المخزنة.أريد أن أعرف قائمة الجداول المتضررين من مجموعة فرعية من الإجراءات المخزنة.على سبيل المثال, لدي قائمة من 50 الإجراءات المخزنة من 250 و أريد أن أعرف قائمة الجداول التي سوف تتأثر بهذه 50 الإجراءات المخزنة.هل هناك أي طريقة سهلة للقيام بذلك ، وغيرها من قراءة جميع الإجراءات المخزنة وإيجاد قائمة الجداول يدويا ؟

PS:أنا باستخدام SQL Server 2000 و SQL Server 2005 العملاء من أجل هذا.

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

المحلول

هذا من شأنه أن يكون لديك SQL Server الاستعلام:

SELECT
    [NAME]
FROM
    sysobjects
WHERE
    xType = 'U' AND --specifies a user table object
    id in
    (
        SELECT 
            sd.depid 
        FROM 
            sysobjects so,
            sysdepends sd
        WHERE
            so.name = 'NameOfStoredProcedure' AND 
            sd.id = so.id
    )

نأمل أن يكون هذا يساعد شخص ما.

نصائح أخرى

sp_depends 'StoredProcName' سيعود الكائن اسم و نوع الكائن الذي proc المخزنة يعتمد على.

تحرير: أود @كجم إجابة أفضل.أكثر مرونة IMHO.

كنت تفعل ذلك بهذه الطريقة في SQL 2005 (ضافه "و" الخط إذا كنت تريد فقط لفترة معينة proc):

SELECT 
    [Proc] = SCHEMA_NAME(p.schema_id) + '.' + p.name,
    [Table] = SCHEMA_NAME(t.schema_id) + '.' + t.name,
    [Column] = c.name,
    d.is_selected,
    d.is_updated
FROM sys.procedures p
    INNER JOIN  sys.sql_dependencies d
        ON  d.object_id = p.object_id
        AND d.class IN (0,1)
    INNER JOIN  sys.tables t
        ON  t.object_id = d.referenced_major_id
    INNER JOIN  sys.columns c
        ON  c.object_id = t.object_id
        AND c.column_id = d.referenced_minor_id
WHERE   p.type IN ('P')
--  AND p.object_id = OBJECT_ID('MyProc')
ORDER BY 
    1, 2, 3

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

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

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