Sql server NLog数据库目标和SQL Server应用程序角色

Sql server NLog数据库目标和SQL Server应用程序角色,sql-server,database,logging,nlog,application-role,Sql Server,Database,Logging,Nlog,Application Role,我们正在现有应用程序中用NLog替换自定义日志记录“框架”。问题在于应用程序使用SQL Server应用程序角色,这意味着每次打开与SQL Server的连接时,它都会执行sp_setapprolesproc 我们已尝试在数据库目标配置中模拟此行为: <commandText> exec sp_setapprole @roleName, @password; --first, set app. role INSERT dbo.Log --etc. </commandTe

我们正在现有应用程序中用NLog替换自定义日志记录“框架”。问题在于应用程序使用SQL Server应用程序角色,这意味着每次打开与SQL Server的连接时,它都会执行
sp_setapprole
sproc

我们已尝试在数据库目标配置中模拟此行为:

<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

exec sp_setapprole@roleName,@password--首先,设置应用程序。角色
插入dbo.Log——等等。
--其他测井参数如下
但是,这会产生错误:

我宁愿避免编写自己的目标,因为数据库目标可以完成我需要的一切,除了设置应用程序角色。因此,我希望能够以某种方式连接到NLog内部创建的连接的StateChange事件,或者执行其他一些技巧


TL;DR-通过NLog数据库目标登录时,如何切换到应用程序角色?

我们最终根据和的代码(精简版本)创建了自己的目标

目标的配置方式(大致)与NLog数据库目标相同,但具有发热功能