Warum Replikationslöschungen Systemadministratorzugriff erfordern?

7

Ich führe die Merge-Replikation mit SQL 2012 aus.

Die für die Replikation in SQL 2012 hinzugefügten Löschauslöser scheinen eine schlimme Folge zu sein.

Innerhalb der Löschauslöser sind dies:

select @xe_message = CAST('replica_id: ' + convert(nvarchar(100), @replnick) + ', article_id: ' + convert(nvarchar(100), @tablenick) + ', rowguid: ' + case when @article_rows_deleted = 1 then convert(nvarchar(100), @rowguid) else N'0' end + ', generation: ' + case when @is_mergeagent = 1 then N'0' else convert(nvarchar(100), @newgen) end + ', Reason: -1' AS varbinary(1000));
        exec master..sp_repl_generateevent 1, N'Event : ppm_insert', @xe_message

Und ein Fehler tritt auf, wenn jemand einen Löschvorgang ausführt, wenn er nicht in der Systemadministratorrolle ist.

Msg 8189, Level 14, State 10, Procedure sp_repl_generateevent, Line 1
You do not have permission to run 'SP_TRACE_GENERATEEVENT'.

Wollen Sie mir also sagen, dass jeder Benutzer meiner Datenbank über Systemadministratorzugriff verfügen muss, wenn er Löschvorgänge ausführen möchte?

Das scheint falsch zu sein. Gibt es eine Möglichkeit, diese Ablaufverfolgung zu deaktivieren, oder eine alternative Möglichkeit, diese Anforderung zu entfernen?

Peter
quelle

Antworten:

7

Wollen Sie mir also sagen, dass jeder Benutzer meiner Datenbank über Systemadministratorzugriff verfügen muss, wenn er Löschvorgänge ausführen möchte?

Nein, gemäß der Dokumentation von BOL zu sp_trace_generateevent :

Der Benutzer muss über eine ALTER TRACEBerechtigung verfügen .

Thomas Stringer
quelle
2

Dies ist jetzt ein bekannter Fehler (nur in SQL 2012 vorhanden), den Microsoft derzeit behebt. Umgehung besteht darin, dem Benutzer die ALTER TRACEBerechtigung zu erteilen, bis das Problem behoben ist.

Sie können den Status auf Verbinden verfolgen .

Goran Obradovic
quelle