Frage

Da ich kein SQL-Diff-Tool finden kann, das meinen Anforderungen entspricht, schreibe ich mein eigenes.Zwischen den Tabellen INFORMATION_SCHEMA und sys habe ich eine weitgehend vollständige Arbeitsversion.Aber eine Sache, die ich in den Metadaten nicht finden kann, ist die Definition eines Triggers, Sie wissen schon, der eigentliche SQL-Code.Übersehe ich etwas?

Danke.


Danke, Pete, das wusste ich nicht!

Scott, ich arbeite mit sehr einfachen Hosting-Paketen, die keine Remote-Verbindungen zur Datenbank zulassen.Ich weiß aus den Spezifikationen von RedGate (die ich mir sowieso nicht leisten kann) nicht, ob sie einen Workaround dafür bieten, und obwohl es auch APIs gibt (wie die von Apex), habe ich das nicht gesehen Es war für mich sinnvoll, in eine Lösung zu investieren, die für mich immer noch mehr Programmierung erfordern würde.:) :)

Meine Lösung besteht darin, eine ASPX-Seite auf der Site abzulegen, die als eine Art „Schema-Dienst“ fungiert und die gesammelten Metadaten als XML zurückgibt.Ich habe eine kleine AJAX-App eingerichtet, die beliebig viele Kataloginstanzen mit einem Master vergleicht und die Unterschiede anzeigt.Es ist nicht perfekt, aber für mich ein großer Fortschritt.

Danke noch einmal!

War es hilfreich?

Lösung

sp_helptext dient dazu, die SQL abzurufen, aus der ein Trigger besteht.

Die Textspalte in der Systemkommentaransicht enthält auch das SQL, das für die Objekterstellung verwendet wird.

Andere Tipps

Für 2005 und 2008 können Sie das verwenden OBJECT_DEFINITION() Funktion

SELECT     
    DB_NAME() AS DataBaseName,                  
    dbo.SysObjects.Name AS TriggerName,
    dbo.sysComments.Text AS SqlContent
FROM 
    dbo.SysObjects INNER JOIN 
        dbo.sysComments ON 
        dbo.SysObjects.ID = dbo.sysComments.ID
WHERE   
    (dbo.SysObjects.xType = 'TR') 
    AND 
    dbo.SysObjects.Name = '<YourTriggerName>'

Um die Antwort von SQLMenace zu erweitern, finden Sie hier eine einfache Abfrage, um alle Trigger und ihre Definitionen aus einer Datenbank zurückzugeben:

SELECT 
    sysobjects.name AS trigger_name, 
    OBJECT_NAME(parent_obj) AS table_name,
    OBJECT_DEFINITION(id) AS trigger_definition
FROM sysobjects 
WHERE sysobjects.type = 'TR' 

Diese Abfrage gibt einen Auslöser mit seinem Namen und Text zurück.

Select 
    [tgr].[name] as [trigger name], 
    [tbl].[name] as [table name] , 
    OBJECT_DEFINITION(tgr.id) body

    from sysobjects tgr 

    join sysobjects tbl
    on tgr.parent_obj = tbl.id

WHERE tgr.xtype = 'TR'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top