INF: Replication: Cleanup Task Takes a Long Time to Complete

ID: Q191412


The information in this article applies to:
  • Microsoft SQL Server version 6.5


SUMMARY

The cleanup task may take a very long time to complete (hours or even days) when there are a large number of rows in the distribution database. The logreader and distribution tasks cannot do any work while the cleanup task is running because the cleanup task acquires table locks on several tables in the distribution database. You can detect this situation using the sp_who and sp_lock stored procedures, as well as the Replication counters in the Windows NT Performance Monitor.

If the cleanup task is interrupted for some reason, it will go into rollback. The rollback process can also take a very long time to complete (hours or even days). This article discusses other options to clean up the distribution database under some conditions.


MORE INFORMATION

If the cleanup task has already started, it is usually best to wait for the process to complete, if possible. If you stop SQL Server or kill the cleanup process, it will roll back the work that has already been done. The rollback may take as long or longer to complete than the period of time the cleanup process has already been running.

However, additional options are also available in certain circumstances.

If You Want to Unsubscribe All Subscriptions from All Publications

If you want to unsubscribe all subscriptions from all publications, instead of running the cleanup task, it may be faster to manually truncate certain tables in the distribution database and delete related .tmp files. Also, at all the subscribers, you need to update MSlast_job_info to have a job_id of 0 for all publishers using this distribution server.

You should only consider truncating tables in the distribution database if all of the following conditions are true:
  • You want to unsubscribe ALL subscriptions for all publications. This point is critical, because truncating the tables in the distribution database will remove all job information for all publications. If this criteria is not true, you should run the cleanup task.


  • It would take a long time to run the cleanup task. Usually, it is easier and safer to run the cleanup task. The time that would be required to run the cleanup task depends on the number of rows in the MSjobs, MSjob_commands, MSsubscriber_jobs, and MSsubsriber_status tables. There is no simple formula to calculate how long it will take to run the cleanup task. The best way to estimate the length of time required is to look at the task history to see how long it took to run the cleanup task under similar circumstances in the past.


  • There is no cleanup task already running or in rollback.


  • There are no replication tasks running. It may be best to just stop SQL Executive on the distribution server to ensure that no replication tasks are running.


In this case, the tables in the distribution database that you would need to truncate are:

   MSjobs
   MSjob_commands
   MSsubscriber_jobs
   MSsubscriber_status 

You will also need to delete the .tmp files in the replication working directory (MSSQL\Repldata). The .tmp files are old bulk copy program (bcp) files used by synchronization. Note that new .tmp files will be created when you resubscribe to the publication.

As for updating MSlast_job_info table at the subscribing database, the job_id should be set to 0 for all publishers that use this server as the distribution server. Because the truncate operation removes all the entries in MSjobs table in the distribution database, the job_id gets reset to 0.

Drop and Re-Create the Distribution Database

In some situations, the best solution may be to drop and re-create the distribution database. This may be the case when all of the following circumstances are true:
  • The cleanup task has stopped responding, or has been stopped and is in a long rollback.


  • You cannot wait for the task or rollback to complete.


  • Unsubscribing and resubscribing all subscribers for all publications is not a problem. Note that this is required because if the distribution database is dropped, you have to resubscribe.


For additional information about how to re-create the distribution database, please see the following article in the Microsoft Knowledge Base:
Q190797 : INF: Replication: How to Rebuild the Distribution Database

Additional query words: prodsql rep repl hang hangs hung abort aborted log
reader

Keywords : SSrvRep
Version : WINNT:6.5
Platform : winnt
Issue type : kbinfo


Last Reviewed: April 16, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.