I am using transactional replication between two SQL 2005 databases. On Sunday evenings, we run a maintenance plan that rebuilds the indexes on the publisher DB. When the plan runs, the replication receives errors and cannot continue. The error appears to be at the publisher level. The publisher runs continually and the subcriber runs every 10 minutes. The error states "cannot run sp_replcmds" Other than Sunday, everything runs fine.
You've got a couple of choices, any one of which ought to solve your problem.
First option is to "do nothing" from a code perspective and just manually restart the log reader job on Monday mornings. This has the advantage of zero code modification, and simplicity... Other than having to remember to restart the job, there's nothing to it.
The most efficient option is to modify the maintenance job so that it restarts the log reader job. Simply add a step after the job is complete to restart the log reader job. This has minimal moving pieces, and it applies a complete and correct fix exactly one time as soon as it is safe.
A simpler but "noisy" solution is to alter the log reader job so that it retries more times (or possibly waits longer between attempts). This fixes the problem, and it is simple, but not very efficient.