我在sql server中有一个孤儿用户,我想获取登录名而不是用户名,因为它们不一样,我找不到符合我需要的解决方案。
答案 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
就足够了。