Échec de la réplication de SQL Server 2008 avec: le processus n'a pas pu exécuter 'SP replcmds'

j'ai un problème avec la réplication SQL que j'ai du mal à réparer. Ce que je fais, c'est restaurer deux DBs à partir d'une sauvegarde de production, puis installer la réplication entre eux. La réplication semble être configuré sans aucune erreur, mais quand je regarde l'état je vois des messages d'erreur comme ceci:

j'ai un problème avec la réplication SQL que j'ai du mal à réparer. Ce que je fais, c'est restaurer deux DBs à partir d'une sauvegarde de production, puis installer la réplication entre eux. La réplication semble être configuré sans aucune erreur, mais quand je regarde l'état dans le Moniteur de Réplication je vois des messages d'erreur comme ceci:

messages d'erreur:

le processus ne pouvait pas exécuter "sp_replcmds" sur "MYSERVER1". Obtenir aide: http://help/MSSQL_REPL20011

ne peut pas s'exécuter comme la base de données principal parce que le principal "dbo" faire n'existe pas, ce type de principal ne peuvent pas être imités, ou vous n'avez pas avoir l'autorisation. (Source: MSSQLServer, Numéro d'erreur: 15517) obtenir de l'aide: http://help/15517

le processus ne pouvait pas exécuter 'sp_replcmds' sur 'MYSERVER1'. Obtenir de l'aide: http://help/MSSQL_REPL22037

Qu'est-ce que cela signifie?

24
demandé sur skb 2010-04-27 20:34:54

5 réponses

quand j'ai eu ce problème, ma base de données n'avait pas de propriétaire correctement défini. J'avais restauré une base de données à partir d'un autre domaine windows, à droite cliqué la base de données -> propriétés et vérifié dans l'onglet "Général" que le propriétaire a été réglé correctement. Cependant, dans l'onglet" Fichiers", le propriétaire n'était pas défini du tout. Dès que je l'ai paramétré, la réplication fonctionnait sans problème.

53
répondu Mattias Nordqvist 2013-04-17 21:46:19

" dbo " cartes à une connexion n'est pas valide. Si vous lancez select suser_sname(owner_sid) from sys.databases , vous obtiendrez probablement NULL pour ces deux DBs. Vous devez changer ' dbo ' en un login valide. Exécutez, sur les deux bases de données:

ALTER AUTHORIZATION ON DATABASE::[<dbname>] TO [sa]
20
répondu Remus Rusanu 2010-05-07 18:25:05

j'ai trouvé que si vous utilisez des filtres article, vous devez utiliser un nom de filtre unique. Une fois que j'ai changé le nom du filtre pour être unique dans tous les articles, il a corrigé cette question.

1
répondu DCFx 2014-03-26 12:36:54

enter image description here

la manière la plus simple de corriger l'erreur est d'utiliser ALTER AUTHORIZATION sur les bases de données qui ont la correspondance de connexion nulle pour dbo.

1
répondu dinesh vishe 2017-01-02 01:08:11

dans notre cas, le compte de service sur lequel L'instance SQL fonctionnait a été verrouillé. Une fois déverrouillés et que nous avons arrêté/redémarré les travaux d'agent SQL de LogReader, les choses ont recommencé à circuler.

0
répondu E Elhassan 2016-10-17 17:13:26