Search code examples
vb.netsmo

List all triggers in a database


Is it possible to list all triggers in all tables on a database? I can list all user stored procedures with:

Private Sub StoredPro()
    Dim theServer As Server = New Server(serverName)
    Dim myDB As Database = theServer.Databases("mydatabase")
    Dim dt As DataTable = myDB.EnumObjects(DatabaseObjectTypes.StoredProcedure)
End Sub

But nothing obvious in SMO for triggers. (I'm actually trying to list just custom triggers, any that are not named DEL_tablename, INS_tablename, UPD_tablename) within the selected database.


Solution

  • Each database object has a Triggers property, which you can iterate to find all triggers.
    Once you have a reference to this trigger, check the IsSystemObject property to check if it is a user-defined trigger or not.

    foreach ( DatabaseDdlTrigger oTrigger in oDatabase.Triggers) {
    if (! oTrigger.IsSystemObject) {
        // do something
    }}
    

    Have fun.