I get "Multiple-step OLE DB operation generated errors" when inserting into a master-detail Salesforce field from SQL Server. What can I do?

A customer used this SQL INSERT statement:

Salesforce Custom Object GP_Contract__c
Column Account__c Master-Detail linking back to Account table.
SQL INSERT OPENQUERY (Salesforce, 'SELECT Account__c FROM GP_Contract__c') VALUES ('001j0000001xtcMAAQ')

The full text of the error message was:

OLE DB provider "MSDASQL" for linked server "SF" returned message "Multiple-step OLE DB operation generated errors.
Check each OLE DB status value, if available. No work was done.".
Msg 7344, Level 16, State 1, Line 1
The OLE DB provider "MSDASQL" for linked server "SF" could not INSERT INTO table "[MSDASQL]" because of column
"Account__c". The user did not have permission to write to the column.

To work around this issue, log in to your Salesforce account and turn on Allow reparenting.

In SQL Server, turn on Allow Inprocess and Non Transacted Updates in Server Objects > Linked Servers > Providers > MSDASQL. If you do need to change these settings, you also need to restart your SQL Server instance.