2011-07-06 12 views
20

Sé que puedo usar SELECT SUSER_SNAME() para obtener el nombre de usuario actual. Pero en un entorno de AD obtendría el usuario, incluido el dominio (por ejemplo, "MiDominio \ Usuario").Servidor SQL: obtener usuario actual sin dominio

¿Hay alguna función para simplemente recibir el nombre de usuario excluyendo el dominio?

Respuesta

25
SELECT nt_username FROM sys.sysprocesses WHERE spid = @@SPID 

o

SELECT nt_user_name FROM sys.dm_exec_sessions WHERE session_id = @@SPID 
+3

SQL Server 2008 R2 tiene 'nt_user_name' como el nombre de columna para' sys.dm_exec_sessions'. – Guvante

+0

Esto requiere privilegios adicionales a los que el usuario podría no tener acceso – igorjrr

22
select stuff(suser_sname(), 1, charindex('\', suser_sname()), '') 
+2

por supuesto que se ha podido analizar la cadena devuelta, pero me gusta usar construida en la materia en lugar de procesamiento de cadenas ;-) –

+1

que prefieren este método, ya que no lo hace Depende del inicio de sesión que tenga una sesión. Funciona para cualquier nombre que puedas deletrear. –

+0

@IainElder ¿en qué situaciones no tendrías una sesión? – Jodrell

Cuestiones relacionadas