Chcę napisać usługę (prawdopodobnie w języku C#), która monitoruje tabelę bazy danych. Kiedy rekord zostanie wstawiony do tabeli, chcę, aby usługa chwyciła nowo wstawione dane i wykonała za to złożoną logikę biznesową (zbyt skomplikowaną dla TSQL).Czy wyzwalacze SQL CLR mogą to zrobić? Czy jest jakiś lepszy sposób?
Jedną z opcji jest okresowe sprawdzanie tabeli w celu sprawdzenia, czy dodano nowe rekordy. Problem polegający na tym, że chcę, aby usługa wiedziała o wstawkach, gdy tylko się pojawią, i nie chcę zabijać wydajności bazy danych.
Trochę badań, wydaje się, że może pisanie wyzwalacza CLR może wykonać zadanie. Mogę napisać wyzwalacz w języku C#, który uruchamia się po pojawieniu się wstawki, a następnie wysyła nowo wstawione dane do usługi Windows lub WCF.
Co sądzisz, czy to dobre (lub możliwe) użycie wyzwalaczy SQL CLR?
Jakieś inne pomysły, jak to osiągnąć?
Dokładnie to, co miałem zasugerować. Będzie on bezpieczny pod względem transakcji i będzie przechowywać przetworzone i nieprzetworzone rekordy w tabeli, która nie wpłynie na główne tabele aplikacji. +1 dla tego rozwiązania! – evilhomer
Użyj programu SQL Server Service Broker –
Dobry pomysł, z tym wyjątkiem, że tracisz cały ślad rzeczy, które uległy zmianie (tj. Zawartość tabeli DELETED, dostępna tylko podczas wykonywania wyzwalacza). Zależy od tego, czego potrzebujesz, przypuszczam. –