2011-07-11 4 views
0

J'ai utilisateur SQL Server dans la base de données et pour une raison quelconque, l'utilisateur ne peut pas afficher les tables lors de la connexionCréer un utilisateur dans SQL Server 2008

Voici les commandes que j'utilise pour créer cet utilisateur. Je ne veux pas faire l'utilisateur dbuser le propriétaire du schéma.

create user dbuser for login dbuser' 

--on the specific database, I am using these commands. 
exec sp_addrolemember @rolename = 'db_datareader', @membername = 'dbuser' 
exec sp_addrolemember @rolename = 'db_datawriter', @membername = 'dbuser' 

grant select on schema :: [schema1] TO [dbuser] 
grant insert on schema :: [schema1] TO [dbuser] 
grant update on schema :: [schema1] TO [dbuser] 
grant execute on schema :: [schema1] TO [dbuser] 

grant select on schema :: [schema2] TO [dbuser] 
grant insert on schema :: [schema2] TO [dbuser] 
grant update on schema :: [schema2] TO [dbuser] 
grant execute on schema :: [schema2] TO [dbuser] 

Même si j'accorde tous les accès d'insertion et mise à jour sur le schéma .. l'utilisateur lorsque vous êtes connecté avec dbuser n'est pas en mesure de voir l'une des tables de l'un des schémas. Il voit juste l'onglet des tables système lorsque l'utilisateur essaie de se connecter à la base de données. L'utilisateur a besoin de voir toutes les tables sous les schema1,schema2, schema3

grâce

+0

Si vous publiez code, XML ou des échantillons de données, ** S'il vous plaît ** mettre en évidence les lignes dans l'éditeur de texte et cliquez sur le bouton « exemples de code » ('{}') dans la barre d'éditeur au format bien et la syntaxe le mettre en évidence! –

+1

Merci de l'avoir édité pour moi. Je vais le faire ici. – iims

Répondre

1

Basé sur une solution trouvée à Microsoft Connect

procédez comme suit:

Pour résoudre le problème, vous devez vous connecter en tant qu'administrateur, cliquez droit sur le nœud de base de données, choisissez Propriétés, autorisations, et accordez l'autorisation "View " à l'utilisateur.

1

Etes-vous sûr que l'utilisateur se connecte à votre base de données et non maître? Et que vous créez l'utilisateur dans la bonne base de données?

+0

Oui je suis je vois l'utilisateur créé, dans la base de données que j'ai souhaité créer cet utilisateur. – iims

+0

@pkat: es-tu sûr que cet utilisateur n'est pas DENYd quelque part? Je viens de tester votre code, et cela a fonctionné pour moi avec le schéma dbo. La seule chose que j'ai changé est le guillemet simple après votre utilisateur de création pour la connexion (supprimé), et les noms de schéma. De plus, vous n'avez probablement pas besoin d'ajouter explicitement les droits, car l'addrolemember devrait s'occuper de cela pour vous. – jmoreno

1

Expansion de la réponse ci-dessus.

GRANT VIEW DEFINITION ON SCHEMA::[schema1] TO [dbuser]; 
GRANT VIEW DEFINITION ON SCHEMA::[schema2] TO [dbuser]; 
+0

intrestingly, cela n'a pas fonctionné, j'ai ajouté ceci à mon manuscrit et couru, c'était toujours le même problème. Mais quand j'ai suivi, NCGrimbo, ça a marché. – iims