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!