USE [DBNAME]
GO
-- Drop all replication triggers from the database
PRINT 'Drop all replication triggers from the database'
SELECT trigs.name AS TriggerName,
trigs.id AS TriggerID,
tables.name AS TableName
INTO #Triggers
FROM sysobjects trigs
INNER JOIN sysobjects tables
ON trigs.parent_obj=tables.id
where trigs.category=2 and trigs.xtype='TR'
DECLARE @TriggerName varchar(100), @TriggerID INT, @TableName varchar(100)
DECLARE cur CURSOR for SELECT * FROM #Triggers
OPEN cur
FETCH NEXT FROM cur INTO @TriggerName, @TriggerID, @TableName
WHILE @@FETCH_STATUS=0
BEGIN
EXECUTE ('DROP TRIGGER ' + @TriggerName)
FETCH NEXT FROM cur INTO @TriggerName, @TriggerID, @TableName
END
CLOSE cur
DEALLOCATE cur
GO
-- Drop all replication constraints from the database
PRINT 'Drop all replication constraints from the database'
DECLARE @ConstName varchar(100), @ConstID INT, @TableName varchar(100)
SELECT CONST.name AS ConstName,
CONST.id AS ConstID,
tables.name AS TableName
INTO #Constraints
FROM sysobjects CONST
INNER JOIN sysobjects tables
ON CONST.parent_obj=tables.id
where CONST.xtype='C'
DECLARE cur CURSOR for SELECT * FROM #Constraints
OPEN cur
FETCH NEXT FROM cur INTO @ConstName, @ConstID, @TableName
WHILE @@FETCH_STATUS=0
BEGIN
EXECUTE ('ALTER Table ' + @TableName + ' DROP CONSTRAINT ' + @ConstName)
FETCH NEXT FROM cur INTO @ConstName, @ConstID, @TableName
END
CLOSE cur
DEALLOCATE cur
GO
-- Drop all replication User tables
PRINT 'Drop all replication User tables'
DECLARE @TableName varchar(100), @TableID INT
SELECT Tables.name AS ConstName,
Tables.id AS ConstID
INTO #Tables
FROM sysobjects Tables
where Tables.xtype='U' AND Status < 0 AND category=2050
DECLARE cur CURSOR for SELECT * FROM #Tables
OPEN cur
FETCH NEXT FROM cur INTO @TableName, @TableID
WHILE @@FETCH_STATUS=0
BEGIN
EXECUTE ('DROP Table ' + @TableName)
FETCH NEXT FROM cur INTO @TableName, @TableID
END
CLOSE cur
DEALLOCATE cur
GO
-- Drop all replication User procedures
PRINT 'Drop all replication User procedures'
DECLARE @ProcName varchar(100), @ProcID INT
SELECT Procs.name AS ConstName,
Procs.id AS ConstID
INTO #Procedures
FROM sysobjects Procs
where procs.xtype='P' AND Status < 0
DECLARE cur CURSOR for SELECT * FROM #Procedures
OPEN cur
FETCH NEXT FROM cur INTO @ProcName, @ProcID
WHILE @@FETCH_STATUS=0
BEGIN
EXECUTE ('DROP Procedure ' + @ProcName)
FETCH NEXT FROM cur INTO @ProcName, @ProcID
END
CLOSE cur
DEALLOCATE cur
GO
-- Drop all replication User Views
PRINT 'Drop all replication User Views'
DECLARE @ViewName varchar(100), @ViewID INT
SELECT MyViews.name AS ConstName,
MyViews.id AS ConstID
INTO #Views
FROM sysobjects MyViews
where MyViews.xtype='V' AND Status < 0 AND Name NOT LIKE 'sys%'
DECLARE cur CURSOR for SELECT * FROM #Views
OPEN cur
FETCH NEXT FROM cur INTO @ViewName, @ViewID
WHILE @@FETCH_STATUS=0
BEGIN
EXECUTE ('DROP View ' + @ViewName)
FETCH NEXT FROM cur INTO @ViewName, @ViewID
END
CLOSE cur
DEALLOCATE cur
GO
-- Drop all replication rowguids, defaults and indexes
PRINT 'Drop all replication rowguids, defaults and indexes'
SELECT tables.name as TableName,
defaults.name AS DefaultName,
Indexes.IndexName,
cols.name AS ColumnName
INTO #Defaults
FROM sysobjects defaults
INNER JOIN syscolumns cols
ON defaults.ID=cols.cdefault
INNER JOIN sysobjects tables
ON tables.id=cols.id
INNER JOIN
(select sysindexes.name AS IndexName,
Tables.Name AS TableName,
Tables.id as TableID,
cols.Name AS ColumnName
from sysindexes
INNER JOIN sysobjects Tables
ON sysindexes.id=tables.id
INNER JOIN sysindexkeys k
on sysindexes.id=k.id
AND sysindexes.indid=k.indid
INNER JOIN syscolumns cols
ON k.id=cols.id
AND k.colid=cols.colid
where cols.name='rowguid') Indexes
ON Indexes.TableID=tables.id
where cols.name='rowguid'
DECLARE @DefaultName varchar(100), @IndexName varchar(100), @TableName varchar(100), @ColName varchar(50)
DECLARE cur CURSOR for SELECT * FROM #Defaults
OPEN cur
FETCH NEXT FROM cur INTO @TableName, @DefaultName, @IndexName, @ColName
WHILE @@FETCH_STATUS=0
BEGIN
EXECUTE ('ALTER TABLE ' + @TableName + ' DROP CONSTRAINT ' + @DefaultName)
EXECUTE ('DROP INDEX ' + @TableName + '.' + @IndexName)
EXECUTE ('ALTER TABLE ' + @TableName + ' DROP COLUMN rowguid')
FETCH NEXT FROM cur INTO @TableName, @DefaultName, @IndexName, @ColName
END
CLOSE cur
DEALLOCATE cur
GO