Announcement

Collapse
No announcement yet.

Datenbank analysieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenbank analysieren

    Hallo zusammen,

    ich habe den Auftrag bekommen unsere Datenbank zu analysieren und im Zuge dessen herauszufinden, welche Tabellen in welchen Views benutzt werden.
    Da in unserer DB so ca. 1500 Views existieren, wollte ich, bevor ich anfange sie mir einzeln anzusehen, fragen ob es eine evtl einfache und schnelle Methode gibt, sowas herauszufinden.
    Weiß da jemand vielleicht was?

    Danke schonmal
    Andi

  • #2
    Hallo Andreas,

    in der einfachsten Art kannst Du es ab MSSQL2005 über das Systemview "syscomments" abfragen, hier ein Beispiel dazu:

    [highlight=SQL]SELECT OBJ.name, OBJ.xtype, PAR.name AS Parent,
    COM.Text
    FROM sys.syscomments AS COM
    INNER JOIN
    sys.sysobjects AS OBJ
    ON COM.id = OBJ.id
    LEFT JOIN
    sys.sysobjects AS PAR
    ON PAR.id = OBJ.parent_obj
    WHERE OBJ.xtype IN ('P ', 'TR', 'FN', 'V ')
    AND COM.Text LIKE '%Order%' --Hier das gesuchte Objekt[/highlight]
    Das sucht alle Objekte raus, einschließlich SP, UDF und Trigger.

    Es gibt auch noch das "Standard-ANSI-SQL" View
    INFORMATION_SCHEMA.VIEW_TABLE_USAGE
    das liefert bei mir aber nichts brauchbares.
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Super, danke.
      Das ist genau das was ich benötigt habe.

      Comment


      • #4
        Der reine Überfluß, es gibt auch noch eine zweite Variante über das SysView sys.sql_modules:

        [highlight=SQL]-- Objektdefinition nach Begriffen durchsuchen
        SELECT OBJSCH.name AS ObjectSchema, OBJ.name AS ObjectName,
        OBJ.type_desc AS ObjectType,
        PARSCH.name AS ParentSchema, PAR.name AS ParentName,
        PAR.type_desc AS ParentType,
        MOD.definition,
        OBJ.create_date, OBJ.modify_date
        FROM sys.sql_modules AS MOD
        INNER JOIN sys.objects AS OBJ
        ON MOD.object_id = OBJ.object_id
        INNER JOIN sys.schemas AS OBJSCH
        ON OBJ.schema_id = OBJSCH.schema_id
        LEFT JOIN sys.objects AS PAR
        ON PAR.object_id = OBJ.parent_object_id
        LEFT JOIN sys.schemas AS PARSCH
        ON PAR.schema_id = PAR.schema_id
        WHERE MOD.definition LIKE '%%'
        ORDER BY OBJ.name, PAR.name[/highlight]
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment

        Working...
        X