【问题标题】:NLog database target and SQL Server application roleNLog 数据库目标和 SQL Server 应用程序角色
【发布时间】:2013-07-21 10:34:39
【问题描述】:

我们正在现有应用程序中用 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 数据库目标记录时如何切换到应用程序角色?

【问题讨论】:

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


    【解决方案1】:

    我们最终基于NLog DatabaseTarget source 和来自this blog post 的代码(精简版)创建了自己的目标。

    See source code here.

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

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多