/*
O codigo abaixo lista todos os usuarios do banco que não constam como usuarios da instancia do banco.
Os famosos usuarios fantasmas.
Isto ocorre quando deletamos o usuario na pasta Security mas não deletamos no banco ou quando o banco e restaurado
para outro ambiente.
*/
use << SEU BANCO >>
SELECT name
FROM sys.database_principals
WHERE
type IN ('S', 'U', 'G')
AND name NOT LIKE '##%'
and
name not IN (
SELECT name
FROM sys.server_principals
WHERE type IN ('S', 'U', 'G')
AND name NOT LIKE '##%'
)
/*
Vamos então acrescentar o 'DROP USER '
E pronto limpamos os usuarios. :-)
*/
use << SEU BANCO >>
SELECT 'DROP USER ',name
FROM sys.database_principals
WHERE
type IN ('S', 'U', 'G')
AND name NOT LIKE '##%'
and
name not IN (
SELECT name
FROM sys.server_principals
WHERE type IN ('S', 'U', 'G')
AND name NOT LIKE '##%'
)