Usuários órfãos – Gerando o script de CREATE LOGIN com os SIDs
Há muito tempo atrás, em uma galáxia distante, escrevi o artigo Usuários órfãos no SQL Server? Evite este problema!, que foi bastante visualizado na época, por apresentar uma solução simples de como evitar que os usuários ficassem órfãos, utilizando o mesmo SID dos logins em várias instâncias do SQL Server, para manter o ‘relacionamento’ entre LOGIN no servidor com o USER do banco de dados.
Como tinha esquecido de apresentar uma forma automática de gerar o script de CREATE LOGIN, (mesmo não recuperando a senha destes logins), segue a minha versão de como gerar este script:
SELECT 'CREATE LOGIN [' + [name] + '] ' + 'WITH PASSWORD = ''senha qualquer'', ' + 'SID = ' + dbo.fn_varbintohexstr([sid]) FROM sys.server_principals WHERE [type] = 'S' -- Alguns filtros úteis AND [name] NOT IN ('sa') AND [name] NOT LIKE '#%' AND [name] NOT LIKE '%\%' ORDER BY [name]
Se tiver alguma ideia de como melhorar este script ou versões alternativas (ex.: PowerShell, SMO), fique à vontade para comentar!
Referências:
Convert binary value to string value