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

A permissão CONTROL deve ser dada em um procedimento armazenado no SQL Server 2005?


Se o procedimento armazenado foi criado usando EXECUTE AS CALLER (que acredito ser o padrão), o chamador deve ter todas as permissões necessárias para fazer o que o procedimento armazenado faz além de EXECUTE no procedimento.

Da documentação do SQL Server para EXECUTE AS:

Observe que, devido à maneira como o SQL Server processa as verificações de permissão usando cadeias de propriedade, isso nem sempre é estritamente verdadeiro, e suponho que conceder CONTROL no procedimento (que confere status de propriedade ao beneficiário) está fazendo com que essas verificações de permissão sejam contornado.

Se você criar o procedimento com EXECUTE AS OWNER, não precisará conceder nenhuma permissão além de EXECUTE no procedimento.