Earlier today I was required to pull the list of all SQL Login Accounts, Windows Login Accounts and Windows Group Login Accounts (basically all the Logins along with the Account Type of the Login) on one of the SQL Server instance where there are close to a hundred Login Accounts existing.
Doing it from SSMS GUI will take forever. So, I wrote a simple T-SQL script using which I was able to pull out all that information in less than a second!
Get the list of all Login Accounts in a SQL Server
SELECT name AS Login_Name, type_desc AS Account_Type FROM sys.server_principals WHERE TYPE IN ('U', 'S', 'G') and name not like '%##%' ORDER BY name, type_desc
Get the list of all SQL Login Accounts only
SELECT name FROM sys.server_principals WHERE TYPE = 'S' and name not like '%##%'
Get the list of all Windows Login Accounts only
SELECT name FROM sys.server_principals WHERE TYPE = 'U'
Get the list of all Windows Group Login Accounts only
SELECT name FROM sys.server_principals WHERE TYPE = 'G'
Note: Requires ALTER ANY LOGIN server permission to be able to view all the logins.