• By default, SqlBulkCopy does not honor triggers or foreign key constraints. You should always include the options SqlBulkCopyOptions.FireTriggers and SqlBulkCopyOptions.CheckConstraints. (I consider this a flat out bug that the default behavior of the method is NOT to honor database consistency.)

    Interestingly, it appears the way it does turn off the trigger functionality is by an Alter Table statement....which many of your users probably don't have permissions for. So instead of honoring the database consistency, it gets an exception. Lovely.

    Similarly with foreign keys. If you use SqlBulkCopy without setting SqlBulkCopyOptions.CheckConstraints it simply leaves your foreign keys untrusted when it is done.

    Can you tell I am frustrated with this tool?