148 votes

Activer le courtier SQL Server prend trop de temps

J'ai un serveur Microsoft SQL 2005 et j'ai essayé d'activer le Broker pour ma base de données avec ces instructions T-SQL :

 SELECT name, is_broker_enabled FROM sys.databases 
 -- vérifier son statut 0 dans mon cas
 ALTER DATABASE myDatabase SET ENABLE_BROKER

La commande Alter Database prend beaucoup de temps à s'exécuter. Cela fait maintenant plus d'une demi-heure et elle est encore en cours d'exécution. Je ne suis pas sûr si elle est en attente de quelque chose d'autre ou si je dois nettoyer quelque chose au préalable, comme supprimer tous les messages, contrats, files d'attente et services sous le service Broker ?

1 votes

À titre de note pour les autres, s'il y a des connexions ouvertes à la base de données, elles pourraient causer ce retard. Exécutez sp_who pour voir s'il y en a.. (ce pourrait être vous)

298voto

Remus Rusanu Points 159382

http://rusanu.com/2006/01/30/how-long-should-i-expect-alter-databse-set-enable_broker-to-run/

alter database [] set enable_broker with rollback immediate;

10 votes

Quel est l'effet de "with rollback immediate"?

17 votes

@A.Dara Vous ne pouvez pas modifier une base de données tant qu'il y a des transactions en attente. Rollback immédiat mettra fin à toutes celles-ci.

20voto

Irfanullah Points 147
UTILISER master;
GO
MODIFIER LA BASE DE DONNÉES Nom_de_la_base
    CONFIGURER ENABLE_BROKER AVEC ROLLBACK IMMÉDIAT;
GO
UTILISER Nom_de_la_base;
GO

6voto

Sean Perkins Points 131

Activer le courtier de service SQL Server nécessite un verrouillage de la base de données. Arrêtez l'Agent SQL Server, puis exécutez ce qui suit :

USE master ;
GO

ALTER DATABASE [MaBaseDeDonnées] SET ENABLE_BROKER ;
GO

Remplacez [MaBaseDeDonnées] par le nom de votre base de données en question, puis redémarrez l'Agent SQL Server.

Si vous voulez voir toutes les bases de données avec le courtier de service activé ou désactivé, interrogez sys.databases, par exemple :

SELECT
    name, database_id, is_broker_enabled
FROM sys.databases

3voto

Mohamad Mahmoud Points 71

En réalité, je préfère utiliser NEW_BROKER, cela fonctionne bien dans tous les cas :

ALTER DATABASE [nom_bd] SET NEW_BROKER WITH ROLLBACK IMMEDIATE;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X