Permettant courtier après la Restauration de Base de données Sql Server
J'ai de la Base de données avec l'option de Service Broker. Alors je veux restaurer ma base de données dans le programme à partir d'une sauvegarde de base de données, mais après la restauration(j'ai de restauration sur la base de données existante nom), ma méthode, qui permet de Courtier, met cette erreur:
Msg 9772, Level 16, State 1, Line 1
The Service Broker in database "ServeDB2" cannot be enabled because there is already an enabled Service Broker with the same ID.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.
C'est ma méthode:
public void TurnOnBroker()
{
if (!this.database.BrokerEnabled)
{
this.server.KillAllProcesses(this.database.Name);
this.database.BrokerEnabled = true;
this.database.Alter();
RefreshConnection();
}
}
Que dois-je fixer ici?Des suggestions?
Vous devez vous connecter pour publier un commentaire.
de garder une note de ces options
si vous êtes arriver à quelque chose comme ceci est déjà un permis de Courtier de Services avec le même ID, optez pour le NEW_BROKER
Cela va créer le nouveau service broker
Chaque base de données possède un IDENTIFIANT unique utilisé par le Service Broker. Cet ID doit être unique au sein de toutes les bases de données dans une instance de Sql Server (bien, elle doit être unique à l'échelle mondiale, mais Sql Server n'ont pas les moyens de la faire respecter). Lorsque vous restaurez une base de données, vous disposez d'une option de désactivation du Service Broker dans la base de données restaurée, ce qui permet, avec le GUID de la base de données sauvegardée (de sorte qu'il peut prendre en charge le traitement de message à partir de la base de données sauvegardée) ou de lui attribuer un nouveau GUID. Vous essayez de faire la deuxième option que vous avez encore l'ancienne base de données autour de vous et vous exécutez en GUID conflit.
Voir ici pour plus d'info.
J'ai trouvé une solution très simple pour que - juste simlpy attribuer un nouveau service broker, comme ceci:
WITH ROLLBACK IMMEDIATE
.Exécuter cette requête pour savoir lequel d'autres bases de données utilisent le même service de l'agent en tant que base de données que vous utilisez (par exemple, pour une base de données appelée DATABASE_NAME)...
... de retour ...
Puis exécutez les requêtes suivantes pour obtenir un nouveau courtier pour votre base de données...
Exécution de la première requête de nouveau et votre base de données devrait être le seul dans la liste...
... maintenant, est de retour ...