fensterbauer
Goto Top

SQL Replikation aus DB entfernen

Hallo Leute,

habe hier eine SQL 2008 DB welche zwischen 2 Servern repliziert wird.
Für Testzwecke habe ich eine Kopie diese DB auf einem anderen SQL Server gebunden. Wie bekomme ich die Replikations Informationen aus der Kopie DB heraus ?


Viele Grüße

Content-Key: 183958

Url: https://administrator.de/contentid/183958

Printed on: April 19, 2024 at 17:04 o'clock

Member: fensterbauer
fensterbauer Apr 25, 2012 at 12:07:29 (UTC)
Goto Top
Habe ne einfache Lösung gefunden :

Einfach mit der SQL eigenen Sicherung ein Backup der betroffenen DB machen.
Anschließend DB löschen und einen Restore der zuvor gesicherten DB durchführen. Dabei werden die z.B. rowguid nicht wieder hergestellt (welche die Replikation verwendet).

Alternativ geht es auch mit 3 Scripten welche nacheinander ausgeführt werden (ohne Gewähr !!) :
Das erste löscht die Indizes, das 2. Die Defaultwerte und das 3. Die komplette Spalte rowguid .. soweit die Theorie face-wink


select 'drop index ' + sysobjects.name + '.' + sysindexes.name from
sysindexes
inner join sysobjects
on sysindexes.id = sysobjects.id
where objectproperty(object_id(sysobjects.name),'IsMSShipped') = 0
and sysindexes.indid > 0 and sysindexes.indid < 255 and (sysindexes.status &
64)=0
and index_col(sysobjects.name, sysindexes.indid, 1) = 'rowguid'
order by sysindexes.indid

select 'alter table ' + b.name + ' drop constraint ' + a.name from
sysobjects a
inner join syscolumns on syscolumns.id = a.parent_obj
inner join sysobjects b on syscolumns.id = b.id
where syscolumns.name = 'rowguid'
and objectproperty(object_id(b.name),'IsMSShipped') = 0
and a.xtype = 'D'

select 'alter table ' + sysobjects.name + ' drop column ''rowguid'' ' from
syscolumns
inner join sysobjects on syscolumns.id = sysobjects.id
where syscolumns.name = 'rowguid'
and objectproperty(object_id(sysobjects.name),'IsMSShipped') = 0