2009-02-23 16 views
7

Czy jest możliwe, aby w wyzwalaczu CLR w programie SQL Server 2005 wysłać wiadomość do kolejki za pośrednictwem MSMQ?Wyzwalacz SQL Server - Wyślij wiadomość do kolejki

Używam typu projektu SQL Server, ale System.Messaging nie pojawia się jako odniesienie, które mogę dodać.


Zasadniczo potrzebuję jakiegoś działania, które miałoby miejsce (drukowanie), gdy wiersz jest zapisany na stole. Urządzenie generujące wiersz to ręczny skaner, który może wykonywać tylko podstawowe operacje - jednym z nich jest pisanie do serwera SQL przez odbc. Początkowym pomysłem było po prostu odpytywanie tabeli, pobieranie rekordów, drukowanie rekordów, kasowanie rekordów. Prawdopodobnie zadziała to dobrze, ale wydawało się, że to dobry przykład i pretekst, aby dowiedzieć się o kolejkach wiadomości.

Odpowiedz

4

Tak, jest to możliwe.

Nie chciałbym to zrobić w wyzwalacz chociaż: the TXN pozostaną otwarte dłużej, to dużych nakładów, co jeśli to wisi itp

można aktualizować za pośrednictwem przechowywanych proc?

Lub popchnąć wiersz do tabeli odpytywania monitorowanej przez zadanie agenta SQL, które zapisuje do kolejki?

+0

Myślę, że zapisany proces jest możliwy do wykonania, ale nadal nie jestem pewien, czy blokuje mi dostęp do System.Messaging z projektów SQL Server. Googling to i otrzymuję mieszane sygnały - System.Messaging jest niezaufany, więc SQL Server nie będzie z nim pracował, czy to źle? – anonymous

+0

Przepraszam, sam tego nie użyłem. Czy spojrzał Pan na brokera Usług, będącego częścią SQL Server 2005? – gbn

+0

Krótko o tym czytałem. Jestem całkowicie naiwny w tej sprawie, ale wydawało się, że Service Broker pozwoliłby wyzwalaczowi dodać komunikat do kolejki Service Broker, ale wtedy mój program musiałby odpytać tę Kolejkę, w którym to momencie mogę równie dobrze odpytać tabelę. – anonymous

3

Jeśli ten zestaw jest niezaufany, nadal można uzyskać do niego dostęp z programu SQL Server - po prostu nie jest dostępny natywnie i będzie musiał zostać zaimportowany ręcznie i oznaczony jako "Niezaufany". Wpadłem na ten sam problem z System.DirectoryServices jakiś czas temu.

Ten facet ma takie samo pytanie jak ty w odniesieniu do System.DirectoryServices, ale robi CREATE montażowej w taki sam sposób powinien pozwolić na dostęp System.Messaging:

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

0

Oto niektóre nowe pomysły, jak ten stary problem mógł być obsługiwane: http://nginn.org/blog/?p=376

Nginn-messagebus jest moje przesłanie kolejek projekt oparty na serwerze SQL i zorientowanej na Net aplikacji, które opierają się na serwerze SQL.

Powiązane problemy