I created a proc in a db, granted rights to a role, added a normal (non sysadmin/non secadmin) to the role, and this seemed to work. You'd have to modify to get user values from all dbs, but not that hard. I might make a proc or function to get users from a db, then loop that if needed.CREATE PROCEDURE GetLogins_NonSA
WITH EXECUTE AS OWNER
/*
Description:
Changes:
Date Who Notes
---------- --- ---------------------------------------------------
1/24/2017 PLATO\Steve Initial proc to get server logins
*/
AS
BEGIN
SELECT name
, principal_id
, sid
, type
, type_desc
, is_disabled
, default_database_name
FROM master.sys.server_principals
RETURN
END
GO
GRANT EXECUTE ON GetLogins_NonSA TO MigrationRole
go
ALTER ROLE MigrationRole ADD MEMBER JoeDBA