Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL grant execute em vários objetos


Você não pode usar curingas - você deve conceder a todos objetos (ou todos os objetos em um esquema) - ou então você tem que listar todos os objetos um por um.

O que você pode fazer é algo assim - faça com que o SQL Server gere essas instruções para você:
SELECT
   p.Name,
   GrantCmd = 'GRANT EXECUTE ON OBJECT::' + p.name + ' TO [domain\user]'
FROM sys.procedures p
WHERE p.Name LIKE 'XU%'

Esta consulta listará todos os procedimentos que começam com XU e crie uma coluna que contenha o GRANT EXECUTE ON .... declaração para esse procedimento.

Execute isso no SQL Server Management Studio e, em seguida, copie o GrantCmd resultante coluna, cole-o em uma nova janela e execute-o lá.

E se você realmente quiser automatizar isso, você também pode transformar essa consulta em um cursor e usar SQL dinâmico para executar automaticamente os GrantCmd resultantes declarações....