Um colega estava tendo problemas para habilitar o Service Broker para um determinado banco de dados. O SQL Server continuou lançando um erro informando que o Service Broker já estava em execução. Ao verificar o banco de dados, a opção de Service Broker foi desativada.
Acontece que o banco de dados foi criado usando um backup de outro banco de dados e os nomes lógicos não foram alterados. O banco de dados original realmente tinha o Service Broker habilitado.
Então resumindo temos:
DB1
com nomes lógicosfoo
efoo_log
com Service Broker ativadoDB2
com nomes lógicosfoo
efoo_log
com o Service Broker desabilitado
Não foi possível iniciar o Service Broker DB2
porque o SQL Server disse que já estava em execução. Os bancos de dados apontavam para diferentes arquivos .mdf
& ..ldf
Por que o Service Broker usa os nomes lógicos e não os nomes do banco de dados? Sempre pensei que o escopo do nome lógico era restrito a um único banco de dados?
EDITAR
Esta é a instrução SQL que foi usada para habilitar o Service Broker
ALTER DATABASE DB2 SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE
E o erro é:
Msg 9772, Level 16, State 1, Line 1
The Service Broker in database "DB2" 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.
Existem apenas 4 etapas para habilitar o service broker para um banco de dados e nenhum deles usa o nome do arquivo lógico como parâmetro
Tente isso