在SQL SERVER中获取登录名

时间:2017-11-03 09:45:10

标签: sql sql-server

我在sql server中有一个孤儿用户,我想获取登录名而不是用户名,因为它们不一样,我找不到符合我需要的解决方案。

login name

5 个答案:

答案 0 :(得分:2)

你应该可以使用:

SELECT suser_name()

文档链接:https://docs.microsoft.com/en-us/sql/t-sql/functions/suser-name-transact-sql

答案 1 :(得分:1)

我相信你需要this

SELECT ORIGINAL_LOGIN()

答案 2 :(得分:1)

execute as login = 'LCF\jmp'
select distinct name
from sys.login_token
where principal_id > 0
      and type = 'WINDOWS GROUP'; 

答案 3 :(得分:0)

下面的查询将返回直接映射到数据库用户的登录名以及未映射到登录名的用户(孤立的)。在后一种情况下,LoginName将是NULL

SELECT 
      dp.sid AS DatabaseUserSID
    , dp.name AS DatabaseUserName
    , sp.name AS LoginName
FROM sys.database_principals AS dp
LEFT JOIN sys.server_principals AS sp ON
    sp.sid = dp.sid
WHERE
    dp.sid IS NOT NULL
    AND dp.type_desc IN(N'SQL_USER', N'WINDOWS_USER');

答案 4 :(得分:0)

您的用户是Windows用户,因此可以登录到服务器,因为其成员资格为Windows groups

要查找这些组,请运行查询:

execute as login = 'LCF\jmp'
select distinct name
from sys.login_token
where principal_id > 0
      and type = 'WINDOWS GROUP'; 

请注意,它不是“孤立的”,它不需要将sid映射到服务器就可以连接到服务器,Windows组sid就足够了。