First - double check the column types. Run this on both tables
sp_help 'table_name'
. You will see some columns specifying length, precision and scale. These should all match.
Next: maybe something else is happening that you can't see. Try this:
SELECT * FROM sys.triggers WHERE OBJECT_ID = OBJECT_ID('table_name')
. If there is a trigger then that maybe trying to something else with your data.
Reply if both of those check out
EDIT: OP reports columns and triggers check out fine.
This may be a specific framework issue that use some 3rd party ODBC drivers. These drivers can mess up the datatypes in translation.
Take a look at this discussion on the driver issues. There is a hotfix and it may be the fix you need:
https://support.microsoft.com/en-us/kb/969845[
^]