Changing SQL Server’s Default Snapshot Folder for Replication

To totally unlock this section you need to Log-in



We set up replication initially by using the GUI and accepting all defaults and now due to growth we need to change our default replication snapshot folder location to another drive since the current location is a local disk and cannot be expanded to accommodate our growth. This concerns us as we cannot afford downtime to perform a re-initialization of all our existing subscribers as they are needed to run the business.


You can change the snapshot location without having to perform a re-initialization. The only caveat to this is you do need to generate a new snapshot. This snapshot will not be applied to your subscribers, but has to go through the generation process. We recommend doing this at night or weekends to minimize the impact of the snapshot agent locking tables and contention on the publisher database.

Current Snapshot Location for a Publication

You can see the snapshot folder is currently pointed at a share called "\\FL-WS-CON-CC03\Share". This is our example snapshot location that will change later in the tip. To get to this screen right click on your publication and select Properties and click on Snapshot. You could change the location of the snapshot here, but this would need to be done for all publications.

Changing SQL Server's Default Snapshot Folder for Replication

Current Snapshot Filesystem Folder

This shows the snapshot files that are located in "\\FL-WS-CON-CC03\Share" meaning it was used to perform the initialization of this subscription.

Changing SQL Server's Default Snapshot Folder for Replication

Changing Default Snapshot Location
The script below changes the default snapshot location to "\\FL-WS-CON-CC03\Share2" from "\\FL-WS-CON-CC03\Share" for all publications.. In your environment this could be a different mount point that has expandable storage. This is accomplished by calling sp_changedistpublisher and updating the working directory. This procedure takes a "publisher", "property" and "value" parameters and needs to be run on the distributor. You can learn more about this here sp_changedistpublisher.

USE distribution    
exec sp_changedistpublisher 
    @publisher = 'FL-WS-CON-CC03', 
    @property = 'working_directory', 
    @value = '\\FL-WS-CON-CC03\Share2'

This can also be changed from SSMS by right clicking on Replication, selecting Properties, select Publishers and click on "..." to bring up this window.

Changing SQL Server's Default Snapshot Folder for Replication

Synchronization After Changing Snapshot Location

As you can see the sync completed without error after changing the snapshot location. We inserted some rows after changing the snapshot location and performed a sync manually to ensure there were no errors in replication.

Changing SQL Server's Default Snapshot Folder for Replication

New Snapshot Location

When looking at the publication properties a second time, you can see it is now showing "\\FL-WS-CON-CC03\Share2" instead of the original snapshot location of "\\FL-WS-CON-CC03\Share".

Changing SQL Server's Default Snapshot Folder for Replication

Here is a screen shot of TSQL to verify the new location

This query shows where this default location is stored and can be used to verify your snapshot locations in your environment. This lives on the distributor and has entries for each remote publisher.

Changing SQL Server's Default Snapshot Folder for Replication

As you can see changing the snapshot location was a painless process and the next time the snapshot agent runs it will write to the new location. Normal synchronization occurs without interruption.