I have 2 db's, source and target. I am transferring data from source to target. Source db tables have a few extra columns than target db, but the data transfer must still work seamlessly.

I have tried using the SQLDataAdapter as before, along with the MissingSchemaAction.ignore in a data merge. Below are the results of what happens:

System.Data.SqlClient.SqlConnection myConnection = new System.Data.SqlClient.SqlConnection(iConn);
System.Data.SqlClient.SqlDataAdapter SQLadpt = new System.Data.SqlClient.SqlDataAdapter(SQLstr,myConnection);

SQLadpt.SelectCommand.CommandTimeout = 900000;
System.Data.SqlClient.SqlCommandBuilder myCB = new System.Data.SqlClient.SqlCommandBuilder(SQLadpt);

SQLadpt.AcceptChangesDuringFill = false;
SQLadpt.Fill(oldDS, iDataTable.TableName.ToString().Trim()); // fills oldDS dataset with existing data

// ... set primary keys for oldDS and iDataTable here...
//iDataTable is a datatable containing newly updated data from source db

oldDS.Merge(iDataTable, false, MissingSchemaAction.Ignore); // merge in data changes, ignore extra columns
// merge appears to work, oldDS contains newly updated data, rowstate is modified because of the AcceptChangesDuringFill being false

int count = 0;
count = SQLadpt.Update(oldDS, iDataTable.TableName); // count returns 1 and no exceptions are thrown, but the record is not updated in target db