Eu tenho 2 esquemas, digamos sch1 e sch2 . Cada propriedade de um usuário diferente.
Eu quero conceder direitos SELECT em sch2.MyTable (mas apenas este objeto) para sch1 procedures/views E permitir fazer referência a sch2.MyTable em restrições de chave estrangeira sch1 .
Eu NÃO quero tornar o sch2.MyTable diretamente acessível para aqueles que usam procedimentos/visualizações do sch2 , mas deseja permitir o acesso indireto.
Basicamente sch2 é muito mais importante. Os proprietários de sch2 também têm controle de sch1, mas não vice-versa. Por outro lado, sch1 tem alguns dados que dependem de sch2 e eles devem poder vê-los e não devem permitir a exclusão de dados de sch2, enquanto sch1 ainda tem algumas dependências deles.
Isso é possível (talvez através de sinônimos)?
Pois não parece- não, não é possível. A menos que você fale sobre "Visualizações e restrições" OU "diferentes proprietários de esquema".
Você precisa examinar o uso de certificados para assinar os procedimentos armazenados. Isso permitirá que os usuários acessem outras tabelas.
Espero que a seguinte resposta ajude:
Você pode verificar os privilégios usando o esquema de informações.
Você deve ser capaz de fazer isso facilmente apenas concedendo EXEC no(s) procedimento(s) armazenado(s) e SELECT na(s) visão(ões) para o(s) usuário(s) que deseja acessar indiretamente a tabela. Fazemos isso em nosso escritório o tempo todo, não concedemos permissões para tabelas subjacentes e apenas permitimos o acesso aos dados subjacentes por meio de visualizações/procedimentos.