Un Script para arreglar los usuarios huérfanos.

Un escenario típico:

Compañero: Che, necesito que me restaures la base del servidor de QA.
Yo: Sip, no hay problema.
Yo (al rato): Listo!
Compañero: Hey! No puedo ingresar!!
YO: *!*&^%$$£”!”£$%”£$

Típicamente, me olvido de restaurar los permisos de los usuarios después de recuperar una base.
Entonces, para ayudarme a hacerlo, me escribi este scrpcito:

DECLARE @loop int = 1
DECLARE @username sysname
DECLARE @orphanedusers TABLE (id int identity (1,1),
UserName sysname, UserSID varchar(36))

INSERT INTO @orphanedusers ([UserName], [UserSID])
EXEC sp_change_users_login 'report' 

WHILE @loop <= (SELECT MAX(id) FROM @orphanedusers)
BEGIN       

    SET @username = (SELECT UserName FROM @orphanedusers WHERE id = @loop)
    IF @username IN (SELECT name FROM master .sys.[syslogins])
    BEGIN
        exec sp_change_users_login 'auto_fix',@username       
    END       

    SET @loop = @loop + 1

END

Basado en la nota de myhumblesqltips.blogspot.com.ar