Gostaríamos de apresentar um orquestrador externo para alimentar algumas tabelas de dois procedimentos armazenados no SQL Server. No entanto, precisaremos criar um usuário 'orchstr' para o orquestrador. Queremos dar acesso ao usuário 'orchstr' para executar apenas os dois procedimentos armazenados especificados (portanto, há uma restrição nos outros procedimentos). E acesso nas mesas apenas para serem alimentados.
É possível? Como poderíamos fazer isso?
Ainda sou iniciante, seria muito gentil da sua parte me ajudar.
Temos o SQL Server 2012 Enterprise Edition.
Por padrão, um usuário não tem nenhuma permissão. Então, tudo o que você precisa fazer é conceder as permissões desejadas:
Eu não entendo o que você quer dizer com "mesas para serem alimentadas".
Se um proc opera em uma tabela (SELECT, INSERT...) então basta ter permissões EXEC no proc, você não precisa do privilégio (SELECT, INSERT...) na tabela para executar o proc. Isso assume o mesmo over do proc que a tabela, chamado "encadeamento de propriedade".
Sim, é muito possível. Primeiro, você precisa adicionar esse logon como usuário no banco de dados sem nenhuma função de banco de dados explícita atribuída, exceto a função pública (sem função de servidor também). Uma vez que o login é adicionado como usuário no banco de dados, você precisa executar a permissão de concessão conforme abaixo:
No exemplo acima, estou considerando que você está tendo o esquema padrão (dbo). Se houver um esquema não dbo, você precisará prefixar adequadamente. Você pode ler mais aqui .
Espero que isto ajude.
Se você tiver vários objetos dentro de seus procedimentos armazenados. Então você pode tentar executar como opção de proprietário em seu procedimento armazenado. Não há necessidade de conceder permissões individuais para objetos usados em procedimentos armazenados.