O SQL Management Studio permite criar scripts para todos os objetos db, mas até agora não consegui encontrar uma maneira de criar scripts corretamente em um esquema ou usuário. As permissões de um usuário em um esquema não são incluídas no script que é criado. Eu fiz algo errado ou a MSFT é um pouco desleixada?
Seu amigo
sys.database_permissions
deve verificar/roteirizar as permissões.Abaixo está o script que estou usando ao fazer uma atualização do PROD no servidor DEV ou UAT. Vou fazer o script antes de todas as permissões e após a restauração, apenas executarei o script.
Você precisará de permissões de script em duas etapas, funções e objetos. Como Kin alude, você pode usar
sys.database_permissions
para os objetos, mas desejará usarsys.database_principals
esys.database_role_members
para a associação de função. O SQL a seguir funcionará apenas para SQL 2012 (versões anteriores devem usarsp_addrolemember
para funções) e deve ser executado no contexto do banco de dados para o qual você está criando permissões de script. Filtre um usuário específico conforme necessário.Dica de chapéu para esta resposta para o segundo script.