При попытке установить роль приложения на SqlConnection с sp_setapprole я иногда получаю следующее сообщение об ошибке в журнале событий Windows ...Обнаружение непригодные объединенные SqlConnections
Соединение уронили, так как основной, который открыл впоследствии он принял новый контекст безопасности, а затем попытался сбросить соединение под своим олицетворенным контекстом безопасности. Этот сценарий не поддерживается. См. «Обзор олицетворения» в электронной документации.)
... и соответствующее исключение выбрано в моем приложении.
Они объединяют соединения, и было время, когда пул соединений несовместим с ролями приложения - на самом деле старый совет от Microsoft был disable connection pooling (!!), но с введением sp_unsetapprole сейчас (в теории) можно очистить соединение, прежде чем возвращать его в пул.
Я считаю, что эти ошибки возникают, когда (по неизвестным причинам) sp_unsetapprole не запускается в соединении до его закрытия и возвращается в пул соединений. Затем sp_approle обречен на провал, когда это соединение возвращается из пула.
Я могу поймать и обработать это исключение, но я бы предпочел обнаружить надвигающийся сбой и избежать исключения (и сообщений в журнале событий) вообще.
Возможно ли выявить проблему, не вызывая исключения?
Мысли или совет добро пожаловать.
Насколько я знаю, невозможно выполнить НИКАКОЙ sql-код в непригодном для использования соединении без исключения исключения. Поэтому я не могу допросить соединение, чтобы проверить контекст безопасности. –
Достаточно честный. Тогда поцарапайте эту идею. Однако не можете ли вы выполнить проверку другого соединения или это повлияет на все приложение? – BinaryMisfit
Это пул подключения, поэтому, хотя я могу получить другое соединение, я не мог допросить состояние первого соединения с ним. Все, что у меня есть, это соединение, которое может или не может быть использовано, я не знаю, пока не попытаюсь его использовать. –