У меня есть долго работающий SP (он может работать до нескольких минут), который в основном выполняет ряд операций по очистке различных таблиц в транзакции.Я пытаюсь определить лучший способ как-нибудь передать читаемую человеком информацию о состоянии обратно вызывающей стороне о том, какой шаг процесса выполняет SP в данный момент.
Поскольку весь SP выполняется внутри одной транзакции, яне может записать эту информацию обратно в таблицу состояния, а затем прочитать ее из другого потока, если я не использую NOLOCK для ее чтения, что я считаю последним средством, поскольку:
- NOLOCK может вызвать другие проблемы несогласованности данных;и
- это возлагает ответственность на тех, кто хочет прочитать таблицу состояния, для которой им необходимо использовать NOLOCK, поскольку таблица или строки могут быть заблокированы на некоторое время.
Есть ли способ выполнить одну транзакцию (или EXEC второй SP) внутри транзакции и указать указать, что эта конкретная команда не должна быть частью транзакции?Или есть какой-то другой способ для ADO.NET получить представление об этом долгосрочном SP, чтобы увидеть, что он в данный момент делает?