SQL Server:获取当前用户而不带域名

24

我知道可以使用 SELECT SUSER_SNAME() 获取当前用户的用户名。但在 AD 环境中,我将获得包括域的用户名称(例如“MyDomain\User”)。

是否有任何函数只接收不包括域的用户名?

2个回答

31
select stuff(suser_sname(), 1, charindex('\', suser_sname()), '')

2
当然我可以解析返回的字符串,但我更喜欢使用内置的东西而不是字符串解析;-) - Dennis G
2
我更喜欢这种方法,因为它不依赖于登录会话。它适用于任何你能拼写的名称。 - Iain Samuel McLean Elder
在哪些情况下你不会拥有一个会话? @IainElder - Jodrell
1
这个答案也适用于本地账户(如果没有斜杠)。 - crokusek

27
SELECT nt_username FROM sys.sysprocesses WHERE spid = @@SPID
或者
SELECT nt_user_name FROM sys.dm_exec_sessions WHERE session_id = @@SPID

3
SQL Server 2008 R2中,sys.dm_exec_sessions的列名为nt_user_name - Guvante
这需要额外的权限,用户可能无法访问。 - igorjrr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接