SQL CLR как получить доступ к имени пользователя, имени хоста и имени приложения, работающему в безопасном режиме - PullRequest
0 голосов
/ 16 июля 2010

У меня есть триггер, написанный на sql clr (sql 2005, .net 3.5), и мне нужно получить имя пользователя, имя хоста и имя_приложения.В 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 Ответ

1 голос
/ 16 июля 2010

Вы можете использовать контекстное соединение и выполнить необходимый 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();
...