Dando permissões para objetos chamados em procedimentos armazenados

1

Temos cerca de 55 bancos de dados de fornecedores em execução no modo de compatibilidade do SQL Server 2000 em um servidor SQL Server 2008. O encadeamento de propriedade cruzada de banco de dados está ativado.

Também temos nosso próprio banco de dados de relatórios interno neste servidor, com nada além de procedimentos armazenados nele. Esses procs armazenados consultam as tabelas do banco de dados do fornecedor para fins de relatório.

Todos os objetos do fornecedor e relatórios de procedimentos armazenados são de propriedade do dbo.

(Eu sei que isso não é uma configuração ideal. Colocando isso de lado por enquanto ...)

Alguém pode me dizer, quando eu concedo executar os procedimentos armazenados do relatório para o usuário X, por que eu também tenho que dar ao usuário X permissões de seleção explícitas nas tabelas do banco de dados do fornecedor afetado (aquelas que a consulta procs armazenada)?

Eu pensei que, contanto que o encadeamento de propriedade estivesse habilitado e todos os objetos tivessem a mesma propriedade, os direitos de execução no procedimento armazenado seriam suficientes, mas eles falham em dizer que o usuário X não tem direitos de seleção nas tabelas. / p>

Agradecemos antecipadamente por qualquer ajuda.

    
por theog 16.08.2010 / 21:48

1 resposta

1

Se você tiver o encadeamento de propriedade ativado em ambos os bancos de dados, e o usuário que está executando o procedimento armazenado for um membro do banco de dados do fornecedor, eles não precisarão de direitos para as tabelas.

A exceção é se você estiver usando SQL dinâmico, nesse caso, você precisará conceder acesso às tabelas base e o encadeamento de segurança não se aplicará a SQL dinâmico, já que o SQL dinâmico é executado fora do escopo do arquivo armazenado original. execução de procedimentos.

    
por 16.08.2010 / 22:10