2010-05-28 32 views
11

Tener un Service Broker activo configurado en un servidor, estamos en proceso de mudarnos a un nuevo servidor pero parece que no puedo configurar Service Broker en la nueva caja.Service Broker no funciona después de la restauración de la base de datos

han hecho lo obvio (para mí) cosas como Habilitación de Broker en la base de datos, dejando caer las rutas, servicios, contrato, colas e incluso el tipo de mensaje y volver a la adición de ellos, el establecimiento de ALTER COLA con ESTADO EN

SELECT * dE sys.service_queues

me da una lista de las colas, incluyendo mi propia dos, que muestran como activation_enabled, etc. receive_enabled

no hace falta decir que las colas no están funcionando. Cuando les tiro mensajes, nada entra y no sale nada.

¿Alguna idea? Estoy seguro de que hay algo muy obvio que me he perdido ...

Respuesta

30

Sólo un tiro en la oscuridad:

ALTER AUTHORIZATION ON DATABASE::[restored db name] TO [sa]; 

La DBO de la base de datos restaurada es el SID de Windows que creó el PP en el original servidor. Este puede ser un SID local (por ejemplo, SERVERNAME \ user) que no tiene ningún significado en el nuevo servidor. Este problema generalmente afecta los procedimientos activados y puede afectar la entrega de mensajes, ambos problemas suceden debido a la incapacidad de SQL para suplantar 'dbo'. Cambiar dbo a un SID de inicio de sesión válido (como sa) lo arreglaría.

Si esto no lo soluciona, entonces necesita localizar hacia dónde van los mensajes. Si permanecen en sys.transmission_queue, entonces debes verificar el transmission_status. Si alcanzan el queueu objetivo pero no ocurre ninguna activación, revisa ERRORLOG. Si desaparecen, significa que lo hace fire-and-forget (SEND seguido inmediatamente por END) y, por lo tanto, está borrando el mensaje de error que indica la causa. Este artículo Troubleshooting Dialogs contiene más consejos sobre dónde buscar.

Y por último, pero no menos importante, intente utilizar ssbdiagnose.exe.

+0

Remus, como de costumbre su "tiro en la oscuridad" golpeó el tiro al blanco. Estaba usando 'disparar y olvidar', que ahora voy a solucionar. Creo que es la tercera vez que me ayudas directamente con Service Broker en los últimos años, creo que deberías obtener algún tipo de Oscar en Internet. =) – roryok

+0

¡Acabas de salvar mi día! – Manu

5

Además de la respuesta de Remus, es posible que también desee comprobar la propiedad BrokerEnabled delDB restaurado. Siempre que restaure un DB, la propiedad BrokerEnabled del DB restaurado se establece en False. Por esta razón, nada entrará en tu cola. Para hacer frente a esto:

  • clic derecho en el restoredDB en SSMS> Ir a "Propiedades"> "Opciones"> de desplazamiento hacia abajo para el grupo "Service Broker" y verificar el valor de la "Broker Habilitado" propiedad. Si está configurado en False, cámbielo a True y este debería resolver su problema.
Cuestiones relacionadas