The Bulk mode will fail if there are indexes defined. The solution for this is to drop the indexes and constraints defined on the target table using pre- and create them once using the post- session SQL commands.
Of course, you need to understand the reason for the Primary key, Foreign Key and the Indexes logically and see what business rules will be impacted with this change of drop and re-create and then proceed accordingly.
The Bulk mode option is used to improve overall run time by skipping or by passing the constraint check and the Integration Service does not log any errors (if any) caused by the load which will also add up to the overall run time.
If you select Normal, the Integration Service loads targets normally with the constraint checks. We can choose Bulk when you load to DB2, Sybase, Oracle, or Microsoft SQL Server. If you specify Bulk for other database types, the Integration Service reverts to a normal load.
Loading in bulk mode can improve session performance, but limits the ability to recover because no database logging occurs.