我们正在现有应用程序中用 NLog 替换自定义日志记录“框架”。问题是应用程序使用 SQL Server 应用程序角色,这意味着每次打开到 SQL Server 的连接时,它都会执行sp_setapprole
存储过程。
我们尝试在数据库目标配置中模拟这种行为:
<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
但是,这会产生错误:
我宁愿避免编写自己的目标,因为数据库目标可以做我需要的一切,除了设置应用程序角色。所以我希望有可能以某种方式连接到由 NLog 在内部创建的连接的 StateChange 事件,或者做一些其他的技巧。
TL;DR - 通过 NLog 数据库目标记录时如何切换到应用程序角色?