If you truncated the table on the publisher the record in the transaction log would be an insert, and therefor an insert would be executed against the subscriber.
Now what you can do is modify the stored procedures that replication uses at the subscriber so that when the insert procedure fires it first looks to see if the record exists and if it does it does an update, and if it doesn't it does an insert.
Just to complement or add to the other answer
there are times you get a really hairy message
first thing I do is to turn on the verbose:
Turn on verbose history (Replication monitor->Agent Profile->Verbose History) and use the -output parameter and select a destination for the output file (Subscriber Replication Job -> Edit Run Agent Job -> In the command window add -output C:\MyFilePath\FileName.log).
and:
Have a look at the latest part of the command below, you see the output parameter.
-Publisher [TCP-ODS01] -PublisherDB [concord_ods] -Publication [MERLIN_PUBLICATION] -Subscriber [MERLIN771] -SubscriberDB [ConCORD_ODS] -Distributor [TCP-MERGE01] -DistributorSecurityMode 1 -HostName [MERLIN771] -output C:\Replication\MERLIN771_1132.log
Now we can have a look at the log file.
Now you can have a look on the log generated and proceed from there.
Example (see the next picture below):
The command on the job is:
--This is the MERLIN307 subscriber, I am troubleshooting, outputting to the log at c:\replication and using the - VerbatimTextObjectScripting 0 option.
-Publisher [TCP-ODS01] -PublisherDB [concord_ods] -Distributor [TCP-MERGE01] -Publication [MERLIN_PUBLICATION] -ReplicationType 2 -DistributorSecurityMode 1 -DynamicFilterHostName [MERLIN307] -DynamicSnapshotLocation [\\TCP-MERGE01\REPLDATA\\unc\TCP-ODS01_CONCORD_ODS_MERLIN_PUBLICATION\MERLIN307_9\] -PartitionId 9 -VerbatimTextObjectScripting 0 -output C:\Replication\MERLIN307-983.log
I can't really give you a straight answer to your case in particular, but I can definitely help you finding out what the problem is, using these steps above.
If it sounds confusing, drop a comment below I will try to be more specific.
Best Answer
Is it possible to take their suggestions and incorporate them into your main database; or are the additions very client specific? You could ask them for scripts to run post restore.
If you go down the replication road then see Chad's answer.
Some warnings with transactional replication though are that if your subscriber fails, you might fill your publisher disk and take down production - happens all the time when people aren't monitoring closely.
You will also need to put significant effort into automating it, because experience shows many application schema upgrades will fail for one reason or another until you remove replication beforehand and set it back up again afterwards.
The reasons we haven't recommended the other kinds of replication: