sp_replcmds replicacion replica not could sql-server-2008 replication

replicacion - Error en la replicación de SQL Server 2008 con: el proceso no pudo ejecutar ''sp_replcmds''



replicacion sql server (5)

Tengo un problema con la replicación de SQL que tengo problemas para solucionar. Lo que estoy haciendo es restaurar dos DB a partir de una copia de seguridad de producción y luego instalar la replicación entre ellos. La replicación parece estar configurada sin errores, pero cuando veo el estado, veo mensajes de error como este:

Tengo un problema con la replicación de SQL que tengo problemas para solucionar. Lo que estoy haciendo es restaurar dos DB a partir de una copia de seguridad de producción y luego instalar la replicación entre ellos. La replicación parece estar configurada sin ningún error, pero cuando veo el estado en Replication Monitor, veo mensajes de error como este:

Error de mensajes:

El proceso no pudo ejecutar ''sp_replcmds'' en ''MYSERVER1''. Obtenga ayuda: http://help/MSSQL_REPL20011

No se puede ejecutar como el principal de la base de datos porque el principal "dbo" no existe, este tipo de principal no se puede suplantar o no tiene permiso. (Fuente: MSSQLServer, número de error: 15517) Obtenga ayuda: http://help/15517

El proceso no pudo ejecutar ''sp_replcmds'' en ''MYSERVER1''. Obtenga ayuda: http://help/MSSQL_REPL22037

¿Qué significa esto?


Cuando tuve este problema, mi base de datos no tenía un propietario configurado correctamente. Había restaurado una base de datos de otro dominio de Windows, hice clic con el botón derecho en la base de datos -> propiedades y verifiqué en la pestaña "general" que el propietario estaba configurado correctamente. Sin embargo, en la pestaña "archivos", el propietario no se configuró en absoluto. Tan pronto como lo configuré, la replicación se ejecutó sin problemas.


Descubrí que si usa filtros de artículos, debe usar un nombre de filtro único. Una vez que cambié el nombre del filtro para que fuera único en todos los artículos, solucionó este problema.


En nuestro caso, la cuenta de servicio en la que se ejecutaba la instancia de SQL se bloqueó. Una vez desbloqueados y detuvimos / reiniciamos los trabajos del agente SQL de LogReader, las cosas empezaron a fluir nuevamente.


''dbo'' se asigna a un inicio de sesión que no es válido. Si ejecuta select suser_sname(owner_sid) from sys.databases , probablemente obtendrá NULL para esos dos DB. Debe cambiar ''dbo'' a un inicio de sesión válido. Ejecutar, en ambas bases de datos:

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


La forma más fácil de corregir el error es usar ALTER AUTHORIZATION en las bases de datos que tienen la coincidencia de inicio de sesión NULL para dbo.