SQL Server sys.server_principals returns a entry for server-level principals. I'm investigating how to set up a monthly report and return all server-level users on a given SQL Server to an Excel spreadsheet.I then forward a customised spreadsheet to every SQL Server instance owners, who need to "sign off" the users. It's part of an internal SQL Server security audit - and to maintain the the security policy.

The focus of the report is on housekeeping. There are more detailed reports created , such as Powershell sql server security audit , which focuses on server and database level privileges.

The script below (SQL Server 2005), identifies the users. I will need to add another call to the Active Directory to return their actual name .

--------------------------------CODE START----------------------------------
--
SET NOCOUNT ON
DECLARE @name varchar(20)
DECLARE logon_cursor CURSOR FOR
select name from sys.server_principals WHERE
name LIKE 'N%' AND name NOT LIKE 'NT AUTHORITY%'
OPEN logon_cursor
FETCH NEXT FROM logon_cursor
INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @name
-- Get the next author.
FETCH NEXT FROM logon_cursor
INTO @name
END
CLOSE logon_cursor
DEALLOCATE logon_cursor
GO
-------------------------------CODE END-----------------------------------------