Ich habe einen Microsoft SQL Server 2005 und habe versucht, Broker für meine Datenbank mit diesen T-SQL zu aktivieren:
SELECT name, is_broker_enabled FROM sys.databases
-- checking its status 0 in my case
ALTER DATABASE myDatabase SET ENABLE_BROKER
Die Verarbeitung von Alter Database
dauert lange. Es ist jetzt über eine halbe Stunde und es läuft noch. Sie sind sich nicht sicher, ob es auf etwas anderes wartet oder ob ich zuerst etwas bereinigen muss, z. B. alle Nachrichten, Verträge, Warteschlangen und Dienste unter Service Broker löschen?
http://rusanu.com/2006/01/30/how-long-should-i-expect-alter-databse-set-enable_broker-to-run/
alter database [<dbname>] set enable_broker with rollback immediate;
Mit dem folgenden Code können Sie die Service Broker-Warteschlange sofort aktivieren
ALTER DATABASE Database_Name SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
USE master;
GO
ALTER DATABASE Database_Name
SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
GO
USE Database_Name;
GO
Eigentlich ziehe ich es vor NEW_BROKER
zu verwenden, es funktioniert in allen Fällen gut:
ALTER DATABASE [dbname] SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
Zum Aktivieren von SQL Server Service Broker ist eine Datenbanksperre erforderlich. Stoppen Sie den SQL Server-Agent und führen Sie dann Folgendes aus:
USE master ;
GO
ALTER DATABASE [MyDatabase] SET ENABLE_BROKER ;
GO
Ändern Sie [MyDatabase] mit dem Namen Ihrer fraglichen Datenbank und starten Sie den SQL Server-Agent.
Wenn Sie alle Datenbanken anzeigen möchten, für die Service Broker aktiviert oder deaktiviert ist, fragen Sie sys.databases ab. Beispiel:
SELECT
name, database_id, is_broker_enabled
FROM sys.databases
In meinem Fall verwendete ich die SQL-Datenbank in meinem Webprojekt wie im Debugging-Modus. Wenn ich also alle Verbindungen geschlossen habe, ist das einwandfrei.