none
Konfliktlöser in der Merge Replikation für nicht db_owner RRS feed

  • Frage

  • Hallo,

    folgendes Problem stellt sich mir, wo ich derzeit nicht ganz weiter komme:

    In einer Merge Replikations-Umgebung (Microsoft SQL Server 2008, SP 2, Standard Edition) treten hin und wieder Konflikte auf. Diese wurden bisher vom DBA gelöst, jedoch nur mit immensen Zeitaufwand, da die entsprechende Geschäftslogik von der Fachabteilung eingeholt werden musste.

    Nun soll diese Aufgabe an einen Benutzer übertragen werden, der die entsprechende Geschäftslogik kennt.

    Nun habe ich den Benutzer in die Rolle MSmerge_[PublikationsGUID] auf der Publizierten Datenbank aufgenommen damit dieser die Publikation sehen kann. Jedoch kommt beim Aufruf des Konfliktmanagers die Rückmeldung, das keine Konflikte existieren. Mit einem Benutzer der Mitglied der Rolle db_owner ist, sehe ich jedoch Konflikte. Über den Profiler habe ich gesehen, dass der Benutzer über die System Prozedur [sys].[sp_MShelpconflictpublications] auf jeder Datenbank prüft, ob Konflikte vorhanden sind.

    Versuche ich

    GRANT EXECUTE ON [BenutzerDB].[sys].[sp_MShelpconflictpublications] TO [User]
    GO
    

    erhalte ich folgende Meldung:

    Meldung 4629, Ebene 16, Status 10, Zeile 2
    Für Katalogsichten mit Serverbereich oder gespeicherte Systemprozeduren bzw. erweiterte gespeicherte Prozeduren können nur Berechtigungen erteilt werden, <br/>wenn die aktuelle Datenbank die master-Datenbank ist.
    
    

    Leider bekomme ich es nicht hin, den Benutzer auf der Benutzerdatenbank auf diese Prozedur zu berechtigen.

    Die Rolle db_owner dem Benutzer zuzuordnen kommt aus Sicherheitsgründen nicht in Frage, da der Benutzer lediglich SUID Berechtigungen auf die Tabellen hat und ebenso auch keine Objekte anlegen (etc.) darf.

    Hat hier jemand eine Idee oder Erfahrungen wie man die fachliche Ebene der Replikation auf einen fachlichen, nicht technischen, Mitarbeiter überträgt?

     

    Viele Grüße,

    Philipp Lenz

    Freitag, 20. Mai 2011 12:24

Alle Antworten

  • Hallo Philipp,

    ich weiß nicht, ob es auch den Konfiklöser betrifft, aber um Replikationsinfos lesen zu dürfen, muss man in der Rolle "ReplMonitor" in der "Distribution" Systemdatenbank sein; siehe: How to: Allow Non-Administrators to Use Replication Monitor (Replication Transact-SQL Programming)


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing
    Freitag, 20. Mai 2011 13:48
  • Hallo Olaf,

    danke für die Antwort, aber das hatte ich auch schonmal probiert, leider erlaubt dies auch das Erstellen von Snapshots und dem Neuinitialisieren von Abo's; weiterhin benötigt der Benutzer auch db_owner Berechtigungen auf der publizierten Datenbank.

    Viele Grüße,

    Philipp Lenz

    Samstag, 21. Mai 2011 16:23