Eu tenho uma função ExecSP
que uso para gerenciar quem pode executar procedimentos armazenados. EXECUTE
permissão é concedida em todos os SPs para esta função.
Também uso o SQL Server Data Tools (SSDT) para gerenciar o esquema de banco de dados do MS SQL Server. No arquivo onde meu SP está definido, tenho isso:
CREATE PROC SomeProc AS
.
.
.
GO
GRANT EXECUTE ON SomeProc TO ExecSP
No entanto, quando aplico a alteração no banco de dados de destino e faço a comparação do esquema, ele relata diferenças nas permissões do SP, onde no lado do banco de dados tenho isso:
GRANT EXECUTE ON SomeProc TO ExecSP AS dbo
Já tentei entender qual AS dbo
parte representa, mas não consegui.
Minhas perguntas:
- Significa que o SP será executado com
dbo
direitos, independentemente de quem o estiver executando? (Eu acho/espero que não.) - Por que isso é adicionado automaticamente?
- Eu quero que este SP seja executado com os direitos que o chamador tem - como faço para conseguir isso?