Gostaria de construir vários bancos de dados novos (várias dúzias) no SQL Server 2016. No entanto, gostaria que todos os usuários acessassem um único banco de dados (chamado de SEGURANÇA por enquanto) e aplicassem segurança a esse banco de dados, onde cada usuário teria acesso a um único esquema para seu departamento. O SQL Server 2016 permite herança de segurança, para que você não precise criar esses usuários em cada banco de dados e aplicar a mesma segurança em cada um? Alguns desses esquemas terão apenas exibições nas quais as definições que lêem esquemas e tabelas em outros bancos de dados.
Alguns desses esquemas em DEV_SECURITY permitirão leitura/gravação e descarte/criação em exibições, tabelas e procedimentos armazenados, para SEGURANÇA, mas também em outro banco de dados.
Isso exige que eu crie esses usuários e sua segurança em todos os bancos de dados ou posso simplificar apenas criando-os em SEGURANÇA?
O que você está perguntando é sobre as cadeias de propriedade .
No caso simples, quando estamos dentro de um banco de dados, quando você dá permissões em uma visão e a visão é de propriedade do mesmo principal que possui todas as tabelas subjacentes, você simplesmente não faz nada: um usuário acessará a visão sem nenhuma permissão no tabelas subjacentes.
No seu caso, há mais de um banco de dados e estamos falando de Cross-Database Ownership Chaining
Você deve ler este parágrafo no artigo acima para entender as ameaças potenciais caso você habilite as cadeias de propriedade crossdb.
Você pode ler mais sobre isso aqui: Habilitando o acesso entre bancos de dados no SQL Server .
Resumindo, para que funcione, além do requisito de ter o mesmo dono você deve habilitar ambos os bancos de dados para db chainig:
ALTER DATABASE ... SET DB_CHAINING ON
.Nesse caso, você ainda pode conceder permissões apenas em suas visualizações sem concedê-las em tabelas de outros bancos de dados, mas ainda deve mapear seus usuários em todos os bancos de dados de interesse. Caso contrário, ao acessar tabelas de outros bancos de dados por meio da cadeia de propriedade de exibição, quebra quando você está saindo do banco de dados e deve conceder as permissões a todas as tabelas subjacentes.