2

既存のアプリケーションのカスタム ロギング「フレームワーク」を NLog に置き換えます。問題は、アプリケーションが SQL Server アプリケーション ロールを使用することです。つまり、SQL Server への接続を開くたびにsp_setapprolesproc が実行されます。

データベース ターゲット構成でこの動作をシミュレートしてみました。

<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 データベース ターゲット経由でログを記録するときにアプリケーション ロールに切り替えるにはどうすればよいですか?

4

1 に答える 1