2010-02-05 3 views
1

У меня есть ситуация, когда я хочу ограничить представление базы данных для входа пользователя.SQL Server - Ограничить представление баз данных на основе логина

Например: У меня есть 3 базы данных в экземпляре SQL Server MyDB, UserDB, RestrictedDB. Затем я создаю 2 входа; User1 и User2. Затем я сделал DENY VIEW ANY DATABASE [User1], а затем DENY ПРОСМОТРЕТЬ ЛЮБУЮ БАЗА ДАННЫХ [User2]. Затем я сделал User1 владельцем UserDB, выполнив sp_changedbowner 'User1'

Когда я вхожу в систему как User1, я могу видеть только UserDB, который именно то, что я хочу. Но, конечно, когда я вхожу в систему как User2, нет базы данных, которую он может просматривать.

Я сделал User2 как db_owner, выполнив sp_addrolemember 'db_owner', 'User2' и снова зашел в систему, но я до сих пор не вижу UserDB. Я не пытался выполнить sp_changedbowner на User2, поскольку я думаю, что результатом будет то, что User2 сможет видеть UserDB, но не User1.

Что мне нужно для User1 & User2, чтобы иметь возможность видеть только UserDB. Как мне это сделать?

Заранее благодарен!

ответ

0

В Oracle это делается с помощью команды «GRANT». Я не знаю, SQL Server имеет GRANT используется

ГРАНТ:

GRANT [permissions] ON TABLE to [user] 

так

GRANT select, insert, update, delete ON TABLE to User2 
1

логинов должны быть связаны с базами данных путем создания сопоставления пользователей базы данных для входа в систему ,

0

В SQL Server есть Серверные логины и Пользователи базы данных. Постарайся ассоциировали сервера Вход в конкретной базе данных:

базы данных> Безопасность> Пользователи> Новый пользователь ...

3

Вы можете настроить роль безопасности предоставления privleges таблиц, представлений и их доступа все это. Свяжите пользователя с желаемой ролью, которую вы создали, и получите желаемый результат.

Следующее должно создать роль, логин, пользователя и предоставить только разрешение SELECT рассматриваемому представлению. Те же методы могут применяться для любых разрешений.

CREATE ROLE [db_views_role] AUTHORIZATION [dbo] 
GO 
GRANT SELECT ON [dbo].[vMyView] TO [db_views_role] 
GO 
CREATE LOGIN [my_login] WITH PASSWORD=N'PASSWORD', DEFAULT_DATABASE=[MyDatabase], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF 
GO 
CREATE USER [my_login] FOR LOGIN [my_login] 
GO 
EXEC sp_addrolemember N'db_views_role', N'my_login' 
GO