Получение событий SQL Server из функции CLR

Я написал класс CLR с несколькими методами, которые связаны как функции в базе данных SQL Server 2005. Когда несколько из этих функций используются в рамках одной транзакции или соединения, мне нужно, чтобы еще одна автоматически выполнялась для очистки некоторых вещей во время транзакции или закрытия соединения (на данный момент любое время подходит, позже я решу, какое лучший). Я полагаю, что прием событий из других новых функций CLR может выполняться, но я не знаю, как этого добиться.

Может ли кто-нибудь указать мне информацию о модулях, документах или чем-то еще, что может помочь мне понять, как получать события закрытия транзакции или соединения в классе CLR или как выполнять определенную функцию при возникновении этих событий?

РЕДАКТИРОВАТЬ: я создал класс С# со статическим членом для хранения значений и двумя статическими методами для установки и получения значений от члена. Скомпилировано как DLL и добавлено как сборка в SQL Server 2005. Методы были добавлены как функции CLR на тот же сервер. Комбинируя различные соединения и транзакции для альтернативного получения и установки значений, я увидел, что статический элемент не сбрасывается. Я надеюсь на автоматический способ включения сохраненных значений в одну транзакцию или соединение (или для очистки статического члена), чтобы значения, хранящиеся в каждом, не мешали другому.


person Pablo Lerner    schedule 08.05.2010    source источник


Ответы (1)


SQLCLR, как и CLR, работающий внутри SQL Server, запускает код только тогда, когда код CLR вызывается из функции, процедуры, агрегата или метода типа CLR. Код CLR не может сохранять состояние между вызовами, поэтому не может быть никаких причин для запуска кода очистки. Нет обратных вызовов для фиксации транзакции, выгрузки модуля закрытия соединения или чего-либо подобного. Они не нужны и не поддерживаются.

person Remus Rusanu    schedule 09.05.2010