sql_logins vs server_principals

While researching on the users in our production database, I had to write a script to manipulate the SQL Server jobs and their owners.

While writing that script I came to know that sql_logins lists only SQL logins (such as sa or any other SQL login) whereas server_principals is more comprehensive hence returns a row for every login (whether be SQL or Windows)

According to the MSDN documentation, server_principals may return following types of logins:

  • SQL login
  • Windows login
  • Windows group
  • Server role
  • Login mapped to a certificate
  • Login mapped to an asymmetric key