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

时间:2013-07-22 15:44:15

标签: sql-server database logging nlog application-role

我们正在取代自定义日志记录"框架"在现有应用程序中使用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

然而,这会产生错误:

  

Application roles can only be activated at the ad hoc level.

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

TL; DR - 如何通过NLog数据库目标进行日志记录时切换到应用程序角色?

1 个答案:

答案 0 :(得分:1)

我们最终根据({3}}的修剪版本和NLog DatabaseTarget source的代码创建了我们自己的目标。

this blog post

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