BUG: Filter Rules do not apply to triggers.
We're using MS Data Sync Services which makes heavy use of versioned tables and triggers to populate these tables. The objects are named x.x.x.xTableName (example 1.0.0.13Table and 1.0.0.13Tabledeletetrigger. The triggers to populate these objects are placed on the base table (TableName, not x.x.x.xTableName).
To create deployment scripts, I utilize filter rules to remove table names, stored procedures, UDDTs, etc. used by Data Sync Services. However, the DSS triggers placed upon the base table are still scripted out; they are not filtered out as I would expect.
P.S. For those thinking of using Data Sync Services: DON'T!!! It works but is VERY quirky. We have a production system using it for a year. Do yourself a favor and roll your own solution!
-
Ian Boyd commented
We have customers who are not being mandated to add triggers to our databases. That means that **every** time we use SQL Compare to compare the development database with their database, **every** table is **always** different.
I tried adding a filter:
- Exclude if
- Property: Object name
- Operator: Contains
- Value: Netwrix_audit_trg_AuditLogBut i realized the filtering doesn't filter *things* to ignore (e.g. certain column names). But filters entire classes of objects from consideration for differences.
I really, **really** need a way to ignore these triggers.
Otherwise every table will be different **every** time. And if i have to go through every table every time: i'm going to lose my mind.
-
Because of a poor decision we made many moons ago, DML triggers are not regarded as their own object in SQL Compare, and are therefore not affected by the Filter rules. This is something we hope to remedy later this year. The only suggestion I have for you in the meantime is for you to use the Ignore DML Triggers option in SQL Compare, although this will ignore all your DML triggers, which may not be desired behavior.