2010-02-05 8 views
1

J'ai une situation dans laquelle je souhaite limiter la vue de la base de données par connexion de l'utilisateur.SQL Server - Limiter l'affichage des bases de données en fonction de la connexion

Par exemple: J'ai 3 bases de données dans mon instance SQL Server appelée MyDB, UserDB, RestrictedDB. Je crée ensuite 2 connexions; Utilisateur1 et Utilisateur2. J'ai ensuite fait un DENY VIEW TOUTES LES BASES DE DONNÉES À [User1], puis DENY VIEW TOUTE BASE DE DONNÉES À [User2]. J'ai ensuite fait User1 le propriétaire de UserDB en exécutant sp_changedbowner 'User1'

Lorsque je me connecte en tant que User1, je ne vois que UserDB qui est exactement ce que je veux. Mais bien sûr, lorsque je me connecte en tant que User2, il n'y a aucune base de données qu'il peut voir.

J'ai également fait User2 en tant que propriétaire db en exécutant sp_addrolemember 'db_owner', 'User2' et en me connectant à nouveau, mais je n'arrive toujours pas à voir UserDB. Je n'ai pas essayé d'exécuter sp_changedbowner sur User2 car je pense que le résultat serait que User2 pourra voir UserDB mais pas User1.

Ce dont j'ai besoin est à la fois pour User1 & User2 pour pouvoir voir seulement UserDB. Comment ferais-je cela?

Merci d'avance!

Répondre

0

Dans Oracle, cela se fait via la commande 'GRANT'. Je ne sais pas est SQL Server a GRANT

GRANT est utilisé:

GRANT [permissions] ON TABLE to [user] 

si

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

Les connexions doivent être associées aux bases de données en créant la cartographie des utilisateurs de bases de données aux connexions .

0

Dans SQL Server, il existe Connexions au serveur et Utilisateurs de la base de données. Essayez associée connexion au serveur de la base de données spécifique:

Base de données> Sécurité> Utilisateurs> Nouvel utilisateur ...

3

Vous pouvez configurer un rôle de sécurité accordant privleges sur des tables, des vues et leur accès tout cela. Associez l'utilisateur désiré au rôle que vous avez créé et vous obtiendrez le résultat souhaité.

Les éléments suivants doivent créer un rôle, un identifiant, un utilisateur et ne fournir que l'autorisation SELECT only à la vue en question. Les mêmes méthodes peuvent être appliquées pour toutes les autorisations que vous souhaitez.

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