Em nosso ambiente, os usuários receberam permissões de leitura/gravação/ddladmin no banco de dados tempdb (dev/qa/prod). Essas permissões serão perdidas quando o SQL Services for reiniciado, pois o tempdb é sempre recriado. Uma solução que está atualmente em vigor é - reaplicar os scripts de permissões de um trabalho do SQL Agent, sempre que o SQLAgent for iniciado. Isso não é preciso, pois os usuários/permissões serão modificados ao longo do tempo. Outro pensamento é fazer um backup diário (com uma política de retenção de 15 dias) das permissões tempdb e usar o mesmo trabalho para escolher o arquivo mais recente para reaplicar as permissões quando o SQL for reiniciado. Esta é uma solução precisa para o problema.
Obrigado!!
Uma alternativa para modificar o modelo pode ser criar um procedimento armazenado no banco de dados mestre que contém tudo o que você precisa fazer. Então você marca isso como inicialização proc (sp_procoption).
Você pode ter que colocar um WAITFOR lá caso o SQL Server execute isso antes que o modelo seja recuperado e o tempdb tenha sido criado. Para você brincar.
Eu só usei o proc de inicialização ocasionalmente, então certifique-se de fazer testes completos.
E, eu concordo plenamente com JD: modifique-os em vez disso, se possível.
Se você ler a resposta mais aceita no StackOverflow que você vinculou, ele dá um passo atrás e faz a pergunta "por que você está criando permissões para usuários no TempDB"? Eles são desnecessários para os usuários criarem, acessarem e gerenciarem objetos temporários nele. As permissões que você mencionou já são concedidas implicitamente a todos os usuários com acesso Connect ao servidor, para objetos temporários. Portanto, você não deve se preocupar com a recriação do TempDB.
(A única vez que essas permissões importam é se você quiser que seus usuários criem objetos não temporários no banco de dados TempDB, o que não faria sentido e seria um problema maior para gerenciar do que as próprias permissões.)