Usuário somente leitura SQL / SSMS que pode visualizar apenas um único banco de dados

1

Atualmente estou usando o SQL Server 2005, que possui vários bancos de dados para clientes individuais.

Eu preciso criar um único login somente para leitura para cada um dos meus clientes, no entanto, não posso permitir que eles vejam os outros bancos de dados no SSMS, pois eles contêm nomes de empresas de outros clientes.

Eu corri o seguinte que me dá exatamente o que eu preciso, no entanto, isso lhes dá db_owner em vez de somente leitura. Ao remover o db_owner, eles não podem mais ver o banco de dados no SSMS.

--Step 1: (create a new user)
create LOGIN hello WITH PASSWORD='foo', CHECK_POLICY = OFF;


-- Step 2:(deny view to any database)
USE master;
GO
DENY VIEW ANY DATABASE TO hello; 


 -- step 3 (then authorized the user for that specific database , you have to use the  master by doing use master as below)
USE master;
GO
ALTER AUTHORIZATION ON DATABASE::yourDB TO hello;
GO

Isso é possível? Eu posso atualizar o SQL, se necessário, se não for possível em 2005.

    
por lethalMango 05.05.2015 / 12:15

1 resposta

0

Funcionaria para você criar um usuário para o login e atribuir-lhe uma função somente leitura?

<!-- language: lang-sql -->
CREATE USER hello FOR LOGIN hello
GO
EXEC sp_addrolemember 'db_datareader', 'hello'

Eles não devem ser um membro da função db_owner depois disso, a menos que seja definido em algum lugar por padrão para adicionar novos usuários à função db_owner. Isso deve limitar a SELECT somente no banco de dados do usuário. Se você quiser limitar as visualizações a tabelas específicas, será necessário criar uma função personalizada para limitar esse acesso.

    
por 05.05.2015 / 18:11