Question

Incapable de trouver un outil de comparaison SQL qui répond à mes besoins, j'écris le mien.Entre les tables INFORMATION_SCHEMA et sys, j'ai une version de travail pratiquement complète.Mais une chose que je ne trouve pas dans les métadonnées est le définition d'un déclencheur, vous savez, le code SQL lui-même.Est-ce que j'oublie quelque chose ?

Merci.


Merci, Pete, je n'étais pas au courant !

Scott, je travaille avec des packages d'hébergement très basiques qui ne permettent pas les connexions à distance à la base de données.Je ne sais pas, d'après les spécifications de RedGate (que je ne peux pas me permettre de toute façon), si elles fournissent une solution de contournement pour cela, et bien qu'il existe également des API (comme celle d'Apex), je n'ai pas vu le point d’investir dans une solution qui allait encore nécessiter plus de programmation de ma part.:)

Ma solution consiste à déposer une page ASPX sur le site qui agit comme une sorte de "service de schéma", renvoyant les métadonnées collectées au format XML.J'ai mis en place une petite application AJAX qui compare un nombre quelconque d'instances de catalogue à un maître et affiche les différences.Ce n'est pas parfait, mais c'est un grand pas en avant pour moi.

Merci encore!

Était-ce utile?

La solution

sp_helptext fonctionne pour obtenir le SQL qui constitue un déclencheur.

La colonne de texte dans la vue syscomments contient également le SQL utilisé pour la création d'objets.

Autres conseils

Pour 2005 et 2008, vous pouvez utiliser le OBJECT_DEFINITION() fonction

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>'

Pour développer la réponse de SQLMenace, voici une requête simple pour renvoyer tous les déclencheurs et leurs définitions à partir d'une base de données :

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' 

cette requête renvoie un déclencheur avec son nom et son corps.

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'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top