Replikation entfernen (SQL)

Aus InfoAgent Dokumentation
Wechseln zu: Navigation, Suche

Replikation nach DB-Restore entfernen

Beschreibung

Eine replizierte Datenbank wurde durch Rücksicherung von BACKUP-File oder MDF/LDF wiederhergestellt. Bei der Sicherung wurden aber die Systemdatenbanken nicht mitgesichert. Folglich muss das Datenbank-Schema von den Replikationsinhalten entfernt werden.

Gehen Sie dazu wie folgt vor...

Stop hand.png ACHTUNG: Die hier angegebenen SQL Befehle nur mit ausreichenden Kenntnissen zu SQL Themen ausführen!

Bevor Sie SQL Befehle ausführen, legen Sie eine aktuelle Datensicherung der Datenbank an.

Lesen Sie den Artikel SQL Befehl ausführen, um diesen SQL-Befehl korrekt anwenden zu können.


Datenbank wählen

Die replizierte Datenbank muss zuerst ausgewählt werden.

use InfoAgent

Entfernen aller Trigger der Replikation

  declare @trigname  nvarchar(300) 
  declare @sql nvarchar(300) 
  DECLARE curRS CURSOR FOR  
  select name from sysobjects where xtype = 'tr' 
  and (
    name like 'ins_%' or
    name like 'upd_%' or
    name like 'del_%' 
  )
  order by name
  Open curRS  
  FETCH NEXT FROM curRS INTO @trigname
  WHILE (@@FETCH_Status = 0 ) 
  begin  
    set @sql = 'drop trigger ' + @trigname
    execute sp_executesql @sql
    FETCH NEXT FROM curRS INTO @trigname
  END 
  CLOSE curRS  
  DEALLOCATE curRS

Entfernen aller Systemtabellen der Replikation

  declare @trigname  nvarchar(300) 
  declare @sql nvarchar(300) 
  DECLARE curRS CURSOR FOR  
  select name from sysobjects where 
  name like 'conflict_%' or 
  name like 'MSMerge_%' or 
  name like 'MSrepl_%' or 
  name like 'msdynamicsnapshot%'
  order by name
  Open curRS  
  FETCH NEXT FROM curRS INTO @trigname
  WHILE (@@FETCH_Status = 0 ) 
  begin  
    set @sql = 'drop table ' + @trigname
    execute sp_executesql @sql
    FETCH NEXT FROM curRS INTO @trigname
  END 
  CLOSE curRS  
  DEALLOCATE curRS

Entfernen aller Stored Procedures der Replikation

  declare @trigname  nvarchar(300) 
  declare @sql nvarchar(300) 
  DECLARE curRS CURSOR FOR  
  select name from sysobjects where 
  (name like 'sp_%' or name like 'sel_%') and 
  name <> 'sparten' and 
  name <> 'selkennzeichen' 
  order by name
  Open curRS  
  FETCH NEXT FROM curRS INTO @trigname
  WHILE (@@FETCH_Status = 0 ) 
  begin  
    set @sql = 'drop procedure ' + @trigname
    execute sp_executesql @sql
    FETCH NEXT FROM curRS INTO @trigname
  END 
  CLOSE curRS  
  DEALLOCATE curRS

Entfernen aller Sichten der Replikation

  declare @trigname  nvarchar(300) 
  declare @sql nvarchar(300) 
  DECLARE curRS CURSOR FOR  
  select name from sysobjects where name like 'ctsv_%' or name like 'tsvw_%'
  order by name
  Open curRS  
  FETCH NEXT FROM curRS INTO @trigname
  WHILE (@@FETCH_Status = 0 ) 
  begin  
    set @sql = 'drop view ' + @trigname
    execute sp_executesql @sql
    FETCH NEXT FROM curRS INTO @trigname
  END 
  CLOSE curRS  
  DEALLOCATE curRS

Entfernen des Merkmals Mergepublication der Replikation

Voraussetzung: im SQL Server Direktänderungen erlauben

  EXEC master.dbo.sp_configure N'allow updates', N'1'
  GO
  RECONFIGURE WITH OVERRIDE
  GO

Der eigentliche Update-Befehl

  update sysobjects set replinfo = 0 where xtype = 'U' and replinfo = 128


ggf. noch mit ausführen, um die Datenbank-Markierung für Freigabe mit zu entfernen

Datenbankname muss ggf. angepasst werden!!!

 update master.dbo.SysDatabases set category = 0 where name = 'InfoAgent-Datenbankname'

Voraussetzung zurücksetzen

  EXEC master.dbo.sp_configure N'allow updates', N'0'
  GO
  RECONFIGURE WITH OVERRIDE
  GO