Пользователь SQL/SSMS только для чтения, который может только просмотреть единую базу данных

Я в настоящее время использую SQL Server 2005, который имеет много баз данных по для individiaul клиентов.

Я должен создать единственный вход в систему только для чтения для каждого из моих клиентов, однако я не могу позволить им видеть другие базы данных в SSMS, поскольку они содержат другие клиентские названия компаний.

Я выполнил следующее, которое дает мне точно, в чем я нуждаюсь, однако это дает им db_owner, а не только для чтения. При удалении db_owner они больше не могут видеть DB в 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

Действительно ли это возможно? Я могу обновить SQL при необходимости, если это не возможно в 2005.

1
задан 5 May 2015 в 13:15
1 ответ

Вы могли бы создать пользователя для входа в систему и назначить ему роль только для чтения?

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

После этого они не должны быть членами роли db_owner, если только это не установить где-нибудь по умолчанию для добавления любых новых пользователей к роли db_owner. Это должно ограничиваться SELECT только для базы данных пользователя. Если вы хотите ограничить представления определенными таблицами, вам придется создать специальную роль, чтобы ограничить этот доступ.

0
ответ дан 4 December 2019 в 07:43

Теги

Похожие вопросы