webentwicklung-frage-antwort-db.com.de

SQL Server 2008-Replikation schlägt fehl mit: Prozess konnte 'sp_replcmds' nicht ausführen

Ich habe ein Problem mit der SQL-Replikation, bei dem ich Probleme habe. Was ich mache, ist, zwei DBs aus einer Produktionssicherung wiederherzustellen und dann die Replikation zwischen ihnen zu installieren. Die Replikation scheint fehlerfrei konfiguriert zu sein, aber wenn ich den Status anschaue, sehe ich Fehlermeldungen wie diese: 

Ich habe ein Problem mit der SQL-Replikation, bei dem ich Probleme habe. Was ich mache, ist, zwei DBs aus einer Produktionssicherung wiederherzustellen und dann die Replikation zwischen ihnen zu installieren. Die Replikation scheint fehlerfrei konfiguriert zu sein, aber wenn ich mir den Status in Replication Monitor anschaue, sehe ich Fehlermeldungen wie diese:

Fehlermeldungen:

Der Prozess konnte nicht ausgeführt werden 'sp_replcmds' auf 'MYSERVER1'. Erhalten help: http: // help/MSSQL_REPL20011

Kann nicht als Datenbank ausgeführt werden Principal, weil der Principal "Dbo" existiert nicht, diese Art von Principal Sie können nicht imitiert werden oder nicht habe die Erlaubnis. (Quelle: MSSQLServer, Fehlernummer: 15517). Hilfe erhalten: http: // help/15517

Der Prozess konnte 'sp_replcmds' für 'MYSERVER1' nicht ausführen. Hilfe erhalten: http: // help/MSSQL_REPL22037

Was bedeutet das?

24
skb

Als ich dieses Problem hatte, hatte meine Datenbank keinen Besitzer. Ich hatte eine Datenbank aus einer anderen Windows-Domäne wiederhergestellt, mit der rechten Maustaste auf die Datenbank -> Eigenschaften geklickt und in der Registerkarte "Allgemein" überprüft, ob der Eigentümer richtig festgelegt wurde. Auf der Registerkarte "Dateien" wurde jedoch der Eigentümer überhaupt nicht festgelegt. Sobald ich die Einstellung vorgenommen habe, lief die Replikation ohne Probleme.

53

'dbo' wird einem ungültigen Login zugeordnet. Wenn Sie select suser_sname(owner_sid) from sys.databases ausführen, erhalten Sie wahrscheinlich NULL für diese beiden DBs. Sie müssen "Dbo" in ein gültiges Login ändern. Ausführen in beiden Datenbanken:

ALTER AUTHORIZATION ON DATABASE::[<dbname>] TO [sa]
20
Remus Rusanu

 enter image description here

Der einfachste Weg, den Fehler zu beheben, besteht in der Verwendung von ALTER AUTHORIZATION für Datenbanken, für die der NULL-Login für dbo gilt.

1
arnav

Ich habe festgestellt, dass Sie, wenn Sie Artikelfilter verwenden, einen eindeutigen Filternamen verwenden müssen. Nachdem ich den Filternamen so geändert hatte, dass er für alle Artikel eindeutig ist, wurde dieses Problem behoben.

1
DCFx

In unserem Fall wurde das Dienstkonto, unter dem die SQL-Instanz ausgeführt wurde, gesperrt. Sobald die Sperre aufgehoben und die LogReader-SQL-Agentenaufträge gestoppt/neu gestartet wurden, flossen die Dinge wieder.

0
E Elhassan