Pergunta:
- Eu tenho um servidor SQL Server 2005 e um servidor SQL Server 2016.
- Em cada servidor há um banco de dados (A) com um procedimento armazenado que seleciona dados de uma visualização no Banco de Dados (A)
- A visão no banco de dados (A) está referenciando uma tabela no banco de dados (B) no MESMO SERVIDOR
- Estou usando um logon que tem SOMENTE permissão de execução no procedimento armazenado no banco de dados (A).
- Esta configuração é a mesma para AMBOS os servidores.
- No servidor 2005, posso executar o SP como o logon descrito e recuperar dados por meio da exibição no banco de dados (A) da tabela no banco de dados (B) - como seria de esperar.
- No servidor 2016, recebo um erro porque no banco de dados (A) não consigo selecionar, via SP e a view, dados da tabela no banco de dados (B).
Ambos os servidores estão executando o SQL Server Standard Edition - (embora um seja 2005 e um seja 2016).
Para resumir:
SQL Server 2005
- DATABASE A = VIEW = TABLE no DATABASE B
- DATABASE A = STORED PROCEDURE = selecione em VIEW
- LOGON = APENAS EXECUTAR NO PROCEDIMENTO ARMAZENADO
- RESULTADO = SUCESSO
SQL Server 2016
- A CONFIGURAÇÃO PARECE IDÊNTICA
- RESULTADO = FALHA
Por que é isso? O que há de diferente entre essas duas versões do SQL no que diz respeito à herança de permissões? É algo muito óbvio que estou perdendo?
Qualquer indicação seria muito útil!