A documentação da Microsoft diz sobre db_datareader
a função que:
db_datareader
: Membros da função de banco de dados fixa db_datareader podem ler todos os dados de todas as tabelas e visualizações de usuário. Objetos de usuário podem existir em qualquer esquema, exceto sys e INFORMATION_SCHEMA.
A última frase é confusa para mim. Acho que significa que usuários cuja única função é db_datareader não podem consultar coisas dentro de INFORMATION_SCHEMA, mas criei um usuário com apenas essa função para um banco de dados e executei com sucesso consultas como abaixo naquele banco de dados:
SELECT * FROM INFORMATION_SCHEMA.TABLES
Isso não contradiz a última frase? Qual é a interpretação correta da última frase?
O que essa frase está dizendo é que você não pode criar sua própria tabela no esquema INFORMATION_SCHEMA. Ou seja, abaixo não é permitido:
Quanto aos metadados que são expostos por meio dessas visualizações, temos as mesmas regras de quando consultamos visualizações de catálogo: você vê os objetos que tem permissão para usar (para resumir). Como o db_datareader tem permissão para selecionar de todas as tabelas e visualizações, ele vê a existência de todas as tabelas e visualizações (exceto onde ele tem deny}.