Pergunta

Eu sempre me perguntei por que a lista de funções de banco de dados (db_datareader, db_datawriter, db_ddladmin, etc) nunca incluiu um db_storedprocedureexecutor. Os outros fazem sentido, mas parece que poder conceder a capacidade de executar todos os procs armazenados para um usuário em particular (sem conceder -lhes db_owner, que é a única outra maneira de realizar a mesma coisa) seria uma coisa útil.

Por exemplo, digamos, quero dar a todos os meus desenvolvedores os direitos de executar procedimentos armazenados, embora não os permitirem executar nenhum DDL - sem conceder explicitamente a execução em todos os procedimentos armazenados (e depois lembrando de adicionar os novos quando SPs adicionais forem implantados) , não há maneira de fazer isso (eu sei que o SPS pode conter o DDL, para que eles ainda possam ter acesso indiretamente ao DDL dessa maneira).

Se eu tiver uma conta de serviço de aplicativo e vários procedimentos armazenados que acompanham meu aplicativo, tenho que conceder direitos explicitamente a todos os SP (já que não quero conceder minha conta de serviço de aplicativo DBO), enquanto posso usar um papel para permitir que eles atualizem/excluam o que quiserem.

Embora inicialmente pareça óbvio, agora não sei por que essa função está faltando no servidor de banco de dados - alguém pode oferecer uma explicação de por que essa é uma idéia terrível (como presumo que seja, ou já existiria)?

EDITAR:

Parece que não sou o único com essa expectativa - e Está contornado com um punhado de T-SQL (Parece que você pode conceder uma execução correta correta, o que eu não sabia que você poderia fazer), o que me deixa me perguntando por que não é padrão!

Foi útil?

Solução

Se você usa esquemas, então você só precisa GRANT EXECUTE ON SCHEMA::storedprocschema

por exemplo CREATE PROC storedprocschema.DoStuff ...

Quanto ao porquê, sem ideia ...

Outras dicas

Porque se você puder executar todos os procedimentos armazenados, poderá executar sp_addrolemember, e você pode fazer tudo o que um database_owner posso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top