Мы заменяем пользовательскую «фреймворк» регистрации в NLog в существующем приложении. Проблема заключается в том, что приложение использует роли приложения SQL Server, а это означает, что каждый раз, когда он открывает соединение с SQL Server, он выполняет команду sp_setapprole
sproc.Объект базы данных NLog и роль приложения SQL Server
Мы пытались имитировать это поведение в целевой базе данных конфигурации:
<commandText>
exec sp_setapprole @roleName, @password; --first, set app. role
INSERT dbo.Log --etc.
</commandText>
<parameter name="@roleName" value="...">
<parameter name="@password" value="...">
-- other logging parameters follow
Однако это приводит к ошибке:
Application roles can only be activated at the ad hoc level.
Я предпочел бы не писать свою собственную цель, так как базы данных target может делать все, что мне нужно, кроме установка роли приложения. Поэтому я надеюсь, что возможно каким-то образом подключиться к событию StateChange, которое создается NLog внутри или сделать некоторые другие трюки.
TL; DR - Как переключиться на роль приложения при регистрации через целевую базу данных NLog?