SQL Replikationsobjekte löschen

Erstellt man eine SQL-Server Replikation mit der Option “with Identity”, dann werden eine Reihe Tabellenobjekte hierfür erstellt. Hebt man zu späterem Zeitpunkt die Replikation wieder auf, dann bleiben diese Objekte zurück. Alle manuell zu entfernen wäre je nach Datenbankgröße eine Tages- oder Jahresaufgabe, oder schlicht Wahnsinn! 😉

Zum Glück fand ich Leidensgenossen im Netz, die auch eine Lösung parat hatten. Das SQL-Skript generiert SQL-Kommandos, welche die Überbleibsel entfernen. Eine tolle Erleichterung! Das Skript muß auf dem Host ausgeführt werden, auf dem die Relikte entfernt werden sollen.

-- create code to remove constraints

select 'Alter table ',T.name, 'drop constraint', C.[name]
from sysobjects C inner join sysobjects T
on c.parent_obj = T.[id] 
where C.[name] like '%__msrep__%'

Die Ausgabe sieht in etwa so aus:

/*
Alter table  TBLLEADSOURCEMASTR drop constraint   DF__TBLLEADSO__msrep__004D51F6
Alter table  TBLSALESMANMASTERAUDIT drop constraint   DF__TBLSALESM__msrep__00EC707
Alter table  tblServiceOrderTypes drop constraint   DF__tblServic__msrep__30D08DC0
Alter table  TBLBONUSJOBSII drop constraint   DF__TBLBONUSJ__msrep__311084E2
*/

Diese Befehlssequenz kann nun ausgeführt werden, um die constraints zu entfernen.

Das ganze muß jetzt auch noch auf Spalten angewandt werden:

-- create code to remove columns

select 'Alter table ',T.name, 'drop column', C.[name]
from syscolumns C inner join sysobjects T
on c.[id] = T.[id]
where C.[name] = 'msrepl_tran_version'

Die Ausgabe sieht etwa so aus:

/*
Alter table  TBLSALESMANMASTER   drop column      msrepl_tran_version
Alter table  TBLCALENDARMASTER   drop column      msrepl_tran_version
Alter table  TBLSALESMANCOMPMASTER drop column    msrepl_tran_version
Alter table  tblCommissionMaster drop column      msrepl_tran_version
…
*/

Auch diese Sequenz ausführen und die Datenbank ist wieder sauber. 🙂

wjwGeorgia, ich kenne Dich nicht, aber Du hast mir sehr viel Arbeit erspart! Danke!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert