2010-07-15 7 views
0

J'ai un déclencheur écrit en sql clr (sql 2005, .net 3.5) et j'ai besoin d'obtenir un nom d'utilisateur, nom d'hôte et app_name. Dans TSQL Je voudrais simplement utiliserSQL CLR comment accéder nom d'utilisateur, nom d'hôte et app_name en mode sans échec

Dans mon code .Net j'ai essayé

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

mais en cours d'exécution en mode sans échec, je n'ai pas accès à l'une de ces propriétés. Des idées sur la façon d'accomplir cela?

Merci

Répondre

1

Vous pouvez utiliser un context connection et exécuter le TSQL nécessaire pour récupérer les valeurs dont vous avez besoin.

Dans votre définition de déclencheur 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(); 
+0

@ED oui je pensé, mais je alors besoin d'utiliser ces valeurs dans un appel de procédure stockée. J'essaie de minimiser mes appels grâce à la connexion contextuelle. C'est une possibilité certaine cependant et ce que je devrais finir par faire. – Gratzy