Remove SQL Server Replication

Posted by John Liu on Monday, September 5, 2022

Following script helps to cleanly remove all replication objects configured on the publisher server. ONLY run this script if you want to completely remove entire replication set.

DECLARE @distributionDB SYSNAME = N'distribution'   -- CHANGE THIS TO THE DISTRIBUTION DATABASE NAME. default is distribution
,@publisher SYSNAME = N''   -- CHANGE THIS TO THE PUBLISHER NAME.
,@publicationDB SYSNAME = N'' -- CHANGE THIS TO THE PUBLICATION DATABASE NAME.
,@subscriber SYSNAME = N'';   -- CHANGE THIS TO THE SUBSCRIBER NAME, comma separated if more than one subscriber.
;

DECLARE @TSQL VARCHAR(MAX) = CONVERT(VARCHAR(MAX),'');

-- Remove all replication objects from the publication database.
SET @TSQL = ' USE ' + @publicationDB + ' -- CHANGE THIS TO THE PUBLICATION DATABASE NAME.
EXEC sp_removedbreplication ' + QUOTENAME(@publicationDB,'''');
EXEC(@TSQL)

USE master

SELECT @TSQL = @TSQL + 'EXEC sp_dropsubscriber @subscriber = ' + QUOTENAME(value,'''') + ', @reserved = N''drop_subscriptions'';' + CHAR(10)
FROM string_split(@subscriber,',');
EXEC(@TSQL);

EXEC sp_dropdistpublisher @publisher;
 
EXEC sp_dropdistributiondb @distributionDB;
 
EXEC sp_dropdistributor;