Leer en inglés

Compartir a través de


La suscripción no existe cuando una réplica principal del distribuidor conmuta por error a una réplica que no usa el mismo perfil de agente.

Este artículo le ayuda a solucionar el error La suscripción no existe que se produce cuando una réplica principal del distribuidor conmuta por error a una réplica que no usa el mismo perfil de agente.

Versión original del producto: SQL Server 2017 Developer, SQL Server 2017 Enterprise, SQL Server 2017 Enterprise Core
Número de KB original: 4488815

Síntomas

Considere el caso siguiente:

  • En SQL Server 2017, tiene un agente de distribución que no usa un perfil de agente predeterminado.
  • La base de datos de distribución se agrega al grupo de disponibilidad (AG).
  • La réplica principal de la base de datos de distribución conmuta por error a una réplica que no usa exactamente el mismo perfil de agente.

En este escenario, se produce un error en el agente de distribución y recibe el siguiente mensaje de error:

La suscripción no existe.

Causa

Los perfiles de agente se administran y conservan en la msdb base de datos. Los cambios en un perfil de agente se conservan y msdb no se pueden enviar a otros distribuidores en el GRUPO de disponibilidad de la base de datos de distribución.

Los agentes de replicación están asociados con el perfil a través de profile_id. Después de una conmutación por error, es posible que el agente no pueda encontrar el perfil correcto. Como alternativa, podría encontrar el perfil incorrecto. Dado que un perfil no predeterminado en un distribuidor podría diferir de otro distribuidor, o puede que nunca haya existido, o puede que tenga otro profile_id.

El trabajo del agente de distribución emite el sp_MShelp_distribution_agentid procedimiento almacenado para obtener el identificador del agente cuando se inicia. Si el perfil no existe o si los identificadores de perfil son diferentes, el trabajo del agente de distribución no obtiene el identificador del agente y devuelve la suscripción no existe el mensaje de error.

Solución alternativa

Para resolver este problema, use uno de los métodos siguientes:

  • Especifique los parámetros del comando del agente de distribución directamente, en lugar de usar el perfil del agente. Además, aplique los cambios en el trabajo del agente de distribución en todas las réplicas del distribuidor.

  • Asegúrese de que el perfil del agente se crea en todos los distribuidores que participan en la base de datos de distribución en el GRUPO de disponibilidad y asegúrese de que los identificadores de perfil sean los mismos.

El agente de distribución ejecuta el sp_MShelp_distribution_agentid procedimiento almacenado para obtener el perfil del agente. Si el perfil del agente no existe o si el identificador de perfil es diferente, no se encuentra el perfil de agente correcto y se devuelve el mensaje de error La suscripción no existe .

Para evitar este problema, especifique el perfil de agente correcto (id. de perfil) en el sp_MShelp_distribution_agentid procedimiento almacenado.

A continuación se muestra un segmento de código del sp_MShelp_distribution_agentid procedimiento almacenado:

SQL
SELECT distribAgent.id,
    distribAgent.name,
    distribAgent.publisher_database_id,
    distribAgent.publisher_db,
    distribAgent.subscriber_db,
    profileName.profile_id,
    profileName.profile_name
FROM MSdistribution_agents AS distribAgent
INNER JOIN msdb..MSagent_profiles AS profileName
    ON distribAgent.profile_id = profileName.profile_id