Sql-server – Insert missing rows to subscriber of Transactional Replication

replicationsql servertransactional-replication

I have established SQL Server Replication between SQL Server 2005 and 2008 R2. SQL Server 2005 is the publisher while SQL Server 2008 R2 is the subscriber. The replicated database is about 40GB.

My replication was working most of time OK for few years. A few days ago I saw that I have missing rows inside few tables. When I check manually I see which rows I have missing. When I check replication monitor I see no errors and all looks nice. My trace tokens said that there is no latency.

But I know that there is no rows.

Now I want to manually transfer these rows from publisher to subscriber.

I do not want to reinitialize my replication because when I do that all my statistic go away and my users become to suffer with performance when start using fresh database.

Other thing that my publisher is very poor with performance and reinitialization took a long time to finish and I do not have enough time to stop my app during that process.

Is there an easy way to force the publisher to resend missing data to subscriber beside reinitializing the whole replication again? Is there a way to keep my statistic and indexes on subscriber database after reinitializing that, so I do not lose my performance?

Best Answer

You will need to run a validation to determine how out of sync your publisher and subscriber are. Then, use the tablediff utility or Red Gate SQL Data Compare to generate the script(s) necessary to get the subscriber back in sync. Then apply the script(s) at subscriber to bring the data back into convergence.