We had similar problems, when we wanted to push data to a Oracle Database using a Linked Server. If we didn't include alle the columns in the insert statement (even if they had a default value) it didn't work. We now use a transfer table with all the columns. Each time we insert a row, the row is written to the destination table by a trigger.
-OF