SQL CLR如何访问以安全模式运行的用户名,主机名和app_name

时间:2010-07-15 20:03:32

标签: c# .net sql-server-2005 sqlclr

我有一个用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

但是在安全模式下运行我无法访问任何这些属性。关于如何实现这一点的任何想法?

由于

1 个答案:

答案 0 :(得分:1)

您可以使用context connection并执行必要的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();