Thursday, January 27, 2011

How can I get the definition (body) of a trigger in SQL Server?

Unable to find a SQL diff tool that meets my needs, I am writing my own. Between the INFORMATION_SCHEMA and sys tables, I have a mostly-complete working version. But one thing I can't find in the metadata is the definition of a trigger, you know, the actual SQL code. Am I overlooking something?

Thanks.

  • sp_helptext works to get the sql that makes up a trigger.

    The text column in the syscomments view also contains the sql used for object creation.

    From Pete
  • For 2005 and 2008 you can use the OBJECT_DEFINITION() function

    From SQLMenace
  • To expand on what Pete wrote, sp_helptext is very useful for revealing the SQL behind any trigger, view, stored procedure, function, etc.

    From matt b
  • Thanks, Pete, I didn't know about that!

    Scott, I'm working with very basic hosting packages that don't allow remote connections to the DB. I don't know from the specs on RedGate (which I can't afford anyway) whether they provide a workaround for that, and although there are also API's out there (such as the one from Apex), I didn't see the point in investing in a solution that was still going to require more programming on my part. :)

    My solution is to drop an ASPX page on the site that acts as a kind of "schema service", returning the collected metadata as XML. I set up a little AJAX app that compares any number of catalog instances to a master and shows the diffs. It's not perfect, but a major step forward for me.

    Thanks again!

    From harpo

0 comments:

Post a Comment