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 :
- Dernière mise à jour cumulative pour SQL Server 2014
- Dernière mise à jour cumulative pour SQL Server 2012 SP1
État
Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».