Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / database / SQL-Server

Drop all Triggers belonging to any schema in MS SQL Server

0.00/5 (No votes)
9 Oct 2013CPOL 22.3K  
How to remove Microsoft SQL Server triggers associated with a custom schema.

Background 

After migrating MS Access tables to MS SQL Server, the process generated unwanted or unnecessary triggers. Once you attempt to resign or save data to the affected tables any associated triggers is fired off. This behavior results in seamless errors and inconvenience. In order to remove all the triggers from the database, after some where created with schema DBO and other custom schema, it became necessary to generate or write scripts to remove hundreds of these triggers. 

Using the code

Run the following code within the database where the triggers must be removed. 

SQL
DECLARE @SQLCmd nvarchar(1000DECLARE @Trig varchar(500)
DECLARE @sch varchar(500)

DECLARE TGCursor CURSOR FOR

SELECT ISNULL(tbl.name, vue.name) AS [schemaName]
     , trg.name AS triggerName
FROM sys.triggers trg
LEFT OUTER JOIN (SELECT tparent.object_id, ts.name 
                 FROM sys.tables tparent 
                 INNER JOIN sys.schemas ts ON TS.schema_id = tparent.SCHEMA_ID) 
                 AS tbl ON tbl.OBJECT_ID = trg.parent_id
LEFT OUTER JOIN (SELECT vparent.object_id, vs.name 
                 FROM sys.views vparent 
                 INNER JOIN sys.schemas vs ON vs.schema_id = vparent.SCHEMA_ID) 
                 AS vue ON vue.OBJECT_ID = trg.parent_id
 
OPEN TGCursor
FETCH NEXT FROM TGCursor INTO @sch,@Trig
WHILE @@FETCH_STATUS = 0
BEGIN

SET @SQLCmd = N'DROP TRIGGER [' + @sch + '].[' + @Trig + ']'
EXEC sp_executesql @SQLCmd
PRINT @SQLCmd

FETCH next FROM TGCursor INTO @sch,@Trig
END

CLOSE TGCursor
DEALLOCATE TGCursor

Points of Interest

The interesting thing here is that the datatype sysname could not be used to stored the trigger or the schema return type. Also, owner is not the schema name.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)