0

SQL clr (sql 2005、.net 3.5) で記述されたトリガーがあり、ユーザー名、ホスト名、および app_name を取得する必要があります。TSQLでは、単に使用します

select suser_name()
select host_name()
select APP_NAME()

私の.Netコードで試しました

System.Security.Principal.WindowsIdentity.GetCurrent().Name
System.Environment.MachineName
System.AppDomain.CurrentDomain.ApplicationIdentity.FullName

しかし、セーフ モードで実行すると、これらのプロパティのいずれにもアクセスできません。これを達成する方法についてのアイデアはありますか?

ありがとう

4

1 に答える 1

1

コンテキスト接続を使用して必要な TSQL を実行し、必要な値を取得できます。

CLR トリガー定義で:

SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Context Connection=true";

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;

cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT suser_name() as suser_name, host_name() as host_name, APP_NAME() as app_name";

conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
于 2010-07-16T14:59:59.537 に答える