Tenho um banco de dados SQL Server hospedado (compartilhado) e gostaria de adicionar um logon somente leitura. (Esse logon será usado para criar a visualização de dados do Power BI.)
Olhando para isso, é muito mais complexo do que eu esperava.
Idealmente, o usuário convidado seria somente leitura e eu poderia apenas adicionar um login para a conta de convidado . Mas parece que esta conta não tem permissão de login inicialmente.
Alguém poderia oferecer a maneira mais simples - a maneira que altera menos o banco de dados - para adicionar um login que tenha acesso somente leitura?
Além disso, existe uma maneira de impedir o acesso a algumas tabelas, como minhas tabelas de associação de usuários?
Você precisa diferenciar entre um usuário e um login. O login é usado para fazer login na sua instância. Este login então precisa de um usuário em cada banco de dados que este login deseja acessar.
Então você simplesmente torna esse usuário um membro da função db_datareader no banco de dados.
O usuário convidado não é o que você está procurando. Se você habilitar o convidado (
GRANT CONNECT TO guest
), todos os logons poderão acessar o banco de dados com quaisquer permissões que você atribuir ao usuário convidado. O usuário convidado não tem nenhum privilégio por padrão, é para você atribuir. Mas, novamente, o usuário convidado não é o que você está procurando.Se você tiver exceções, você pode
DENY SELECT ON tablename TO username
para essas exceções de tabela. DENY tem precedência sobre GRANT.Existem alguns aspectos e exceções ao acima, mas não quero confundir as águas e cavar explicações que não são relevantes para o caso em questão, daí minhas pequenas generalizações e simplificações acima.