2009-02-23 16 views
7

¿Es posible en un activador de CLR en SQL Server 2005 enviar un mensaje a una cola a través de MSMQ?Activador de SQL Server - Enviar mensaje a la cola

Estoy utilizando el tipo de proyecto de SQL Server, pero System.Messaging no aparece como una referencia que puedo agregar.


Básicamente necesito algún tipo de acción para tener lugar (impresión) cuando se escribe una fila en la mesa. El dispositivo que genera la fila es un escáner manual que solo puede hacer operaciones básicas, una de las cuales es escribir en el servidor SQL sobre odbc. La idea inicial era simplemente sondear la tabla, tomar registros, imprimir registros, eliminar registros. Esto probablemente funcionará bien, pero parece un buen ejemplo y una excusa para aprender sobre las colas de mensajes.

Respuesta

4

sí, es posible.

Yo no lo haría en un disparador sin embargo: la TXN permanecerá abierto más tiempo, es intensivo en recursos, lo que si se cuelga etc.

Se puede actualizar a través de un procedimiento almacenado?

O inserte una fila en una tabla de sondeo supervisada por un trabajo de agente SQL que se escribe en la cola?

+0

Creo que el proceso almacenado es viable, pero todavía no estoy seguro del camino que me lleva a acceder a System.Messaging desde los proyectos de SQL Server. Estoy buscando en Google esto y obteniendo señales mixtas: System.Messaging no es de confianza, por lo que SQL Server no funcionará con él, ¿o es incorrecto? – anonymous

+0

Lo siento, no lo he usado yo mismo. ¿Has mirado Service Broker, parte de SQL Server 2005? – gbn

+0

He leído brevemente al respecto. Soy completamente ingenuo acerca de esto, pero parecía que Service Broker dejaría que el activador agregara un mensaje a una cola de Service Broker, pero luego mi programa tendría que sondear esa cola, y en ese momento podría simplemente sondear la tabla. – anonymous

3

Si no se confía en ese ensamblaje, aún puede acceder a él desde SQL Server; simplemente no está disponible de forma nativa, y tendrá que importarse manualmente y marcarse como "No confiable". Me encontré con este mismo problema con System.DirectoryServices hace algún tiempo.

este tipo tiene la misma pregunta que usted con respecto a System.DirectoryServices, pero haciendo una declaración ensamblaje Cree de la misma manera debe permitirle el acceso a System.Messaging:

http://www.mydatabasesupport.com/forums/ms-sqlserver/218655-system-directoryservices-allowable-clr.html

0

Éstos son algunos nuevas ideas sobre cómo este problema podría ser manejado de edad: http://nginn.org/blog/?p=376

Nginn-messagebus es mi cola de mensajes proyecto basado en servidor SQL y dirigido a aplicaciones .Net que se basan en el servidor SQL.

Cuestiones relacionadas