Skip to content

Instantly share code, notes, and snippets.

@danielgreen
Created June 12, 2013 16:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danielgreen/5766793 to your computer and use it in GitHub Desktop.
Save danielgreen/5766793 to your computer and use it in GitHub Desktop.
SQL script to identify orphaned database users (where the SQL Server login or Windows login is missing)
DECLARE @cmd1 VARCHAR(MAX)
DECLARE @cmd2 VARCHAR(MAX)
IF EXISTS (SELECT object_id FROM tempdb.sys.objects WHERE name like '#OrphanUsers%')
DROP TABLE #OrphanUsers
CREATE TABLE #OrphanUsers
(
UserName VARCHAR(50) NULL,
userSID VARBINARY(85) NULL,
dbName VARCHAR(50) NULL
) ON [PRIMARY]
SET @cmd2 = ' sp_change_users_login ''''Report'''''
SET @cmd1 = 'USE [?]
INSERT INTO #OrphanUsers(UserName,userSID)
exec ('''+@cmd2+''')
UPDATE #OrphanUsers SET dbName = ''?''
WHERE DBName is NUll'
EXEC sp_MSforeachdb @command1=@cmd1
SET @cmd1 ='USE [?] ;
insert into #OrphanUsers
select name ,sid,''?'' from sys.database_principals where sid not in
(select sid from sys.server_principals ) and type<>''r''
and type_desc=''WINDOWS_USER'''
EXEC sp_MSforeachdb @command1=@cmd1
select * from #OrphanUsers
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment