KB2929193 - CORRECTIF : SQL Server 2012 ou SQL Server 2014 instance s’arrête lorsque vous rejoignez la base de données en tant que réplica secondaire lors de la configuration des groupes de disponibilité AlwaysOn

S’applique à
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Symptômes

Prenons le scénario suivant :

  • Vous utilisez Microsoft SQL Server 2012 ou SQL Server 2014.
  • Vous disposez d’une base de données pour laquelle Service Broker est activé dans le réplica principal.
  • Vous sauvegardez la base de données sur le serveur principal sur lequel Service Broker est activé et vous la restaurez sur le serveur secondaire.
  • Dans le cadre de la définition du groupe de disponibilité entre les serveurs principal et secondaire, vous essayez de joindre la base de données au groupe de disponibilité à l’aide de l’Assistant Nouveau groupe de disponibilité ou de la commande :
    ALTER DATABASE <dbname> SET HADR AVAILABILITY GROUP = <agname>

Dans ce scénario, l’erreur suivante est consignée dans le journal des erreurs de SQL Server :

Remarque

{
Erreur : 3449, Gravité : 21, État : 1.
SQL Server doit s’arrêter afin de récupérer une base de données (ID de base de données 1). La base de données est soit une base de données utilisateur qui n’a pas pu être arrêtée, soit une base de données système. Redémarrez SQL Server. Si la base de données ne parvient pas à récupérer après un autre démarrage, réparer ou restaurer
SQL Trace a été arrêté en raison de l’arrêt du serveur. ID de trace = « 1 ». Ceci n’est qu’un message d’information ; Aucune action de l’utilisateur n’est requise.
}

      

Cause

Ce problème se produit parce que, si une base de données activée pour Service Broker est sauvegardée et restaurée sur le serveur secondaire, le service Broker dans la base de données restaurée n’est pas activé. La base de données conserve toujours un ID de service broker en interne.

Lorsque vous ajoutez la base de données restaurée au groupe de disponibilité sur le serveur secondaire, le service Broker est activé. Le même GUID dans la base de données de disponibilité est détecté et l’erreur suivante est générée (silencieusement) :
9772 « Le service Broker dans la base de données « <dbname> » ne peut pas être activé car il existe déjà un service Broker activé avec le même ID ».

Cela entraîne l’erreur 3449 lorsque la base de données rejoint le groupe de disponibilité et provoque l’arrêt inattendu du serveur SQL.

Résolution

Le problème a été résolu pour la première fois dans la mise à jour cumulative suivante de SQL Server.

Mise à jour cumulative 1 pour SQL Server 2014 /en-us/help/2931693

Mise à jour cumulative 9 pour SQL Server 2012 SP1 /en-us/help/2931078

À propos des mises à jour cumulatives pour SQL Server

Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :

      

État

Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».