2017-11-03 25 views
0

SQL Serverに孤立したユーザーがいます。同じではないため、ユーザー名ではなくログイン名を取得したいので、自分のニーズに対応する解決策が見つかりませんでした。SQL Serverでログイン名を取得

login name

+2

[SQL Server 2005のユーザー名からのログイン名の取得](https://stackoverflow.com/questions/1643443/sql-server-2005-get-login-name-from-user-name)の可能な複製 –

答えて

2

あなたはそれを使用して得ることができる必要があります:

SELECT suser_name() 

ドキュメントリンク:

SELECT ORIGINAL_LOGIN() 
+0

残念ながら私のケースではないログインがsysloginsにエントリを持っている場合にのみ、ログイン名を返します。 – Hassan

+0

ドキュメントでは、テストサーバー上ではsysloginsにログインしていないのに、正しいログインが返されていることがわかります。 – Andrew

1

私はthisは何が必要であると信じています以下のクエリはlogiを返しますn名はデータベース・ユーザーに直接マップされ、ログインにもマップされていないユーザーはまったく孤立しています。 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'); 
0

あなたのユーザーがWindowsユーザーなので、何らかのWindows groupsでその会員にサーバーにログインすることができます。これらのグループを見つけるために

は、クエリを実行します。

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

と心、それが「孤立」ではないです、それはサーバーにWindowsグループを接続できるように、サーバーにsidをマッピングされています持っている必要がないことをsid十分です。

関連する問題