La permission SELECT a été refusée sur l'objet 'Users', database 'XXX', schema 'dbo'

j'ai déplacé une base de données de SQL Server 2012 à Azure. Je ne veux pas utiliser l'utilisateur master, donc j'ai créé un utilisateur test. C'est ce que j'ai fait pour la base de données XXX sur Azure:

create user test from login test with default_schema=[dbo]
exec sp_addrolemember 'db_owner','test'

j'ai vérifié, et les objets de base de données qui m'intéressent sont tous dans le schéma dbo. La table Users est dans le schéma dbo.

La chaîne de connexion dans mon projet web test connexion. Il produit le message d'erreur:

The SELECT permission was denied on the object 'Users', database 'XXX', schema 'dbo'

Qu'est-ce que le message d'erreur moyen et que puis-je faire pour laisser l'utilisateur test accéder à la base de données XXX?

44
demandé sur Old Geezer 2013-10-12 16:12:55

7 réponses

je pense que le problème est avec l'utilisateur refuser des privilèges. Cette erreur survient lorsque l'utilisateur que vous avez créé n'a pas les privilèges suffisants pour accéder à vos tables dans la base de données. Accordez le privilège de l'utilisateur afin d'obtenir ce que vous voulez.

GRANT les permissions spécifiques à l'utilisateur telles que SELECT, INSERT, UPDATE et DELETE sur les tables de cette base de données.

51
répondu Rahul Tripathi 2018-04-04 07:56:55

la syntaxe pour accorder la permission select est:

USE YourDB;

GRANT SELECT ON dbo.functionName TO UserName;
18
répondu John Hayhow 2015-05-19 20:58:35

C'est ainsi que j'ai pu résoudre le problème lorsque je l'ai affronté

  1. Start SQL Management Studio.
  2. Développez le Nœud du Serveur (dans l 'Explorateur d'Objets').
  3. développez le noeud de bases de données et ensuite développez la base de données spécifique à laquelle vous essayez d'accéder en utilisant l'utilisateur spécifique.
  4. étendre le noeud utilisateurs sous le noeud de sécurité pour la base de données.
  5. clic Droit sur l'utilisateur spécifique et cliquez sur 'propriétés'. Que vous décrochassiez dialogue.
  6. assurez-vous que l'utilisateur est membre du groupe db_owner (veuillez lire les commentaires ci-dessous avant d'utiliser go this path) et d'autres modifications requises en utilisant la vue. (Je l'ai utilisé pour 2016. Pas sûr de savoir à quoi ressemble la boîte de dialogue spécifique dans une autre version et donc de ne pas être spécifique)
13
répondu Pramod B R 2018-07-13 05:29:00
  1. Open SQL Management Studio
  2. Développez votre base de données
  3. étendre le dossier "Sécurité"
  4. Développer Les "Utilisateurs"
  5. clic Droit sur l'utilisateur (celui qui tente d'exécuter la requête)
  6. assurez-vous de décocher

    db_denydatareader

    db_denydatawriter

enter image description here

cela devrait aller sans dire, mais seulement accorder les permissions ce que les besoins de l'utilisateur. Une solution facile et paresseuse est de vérifier db_owner comme je l'ai, mais ce n'est pas la meilleure pratique de sécurité.

2
répondu Kolob Canyon 2018-08-14 18:35:37

les permissions de subvention pour cet utilisateur sont nécessaires

1
répondu billah77 2014-10-15 13:28:03

Vérifiez l'espace de votre base de données.cette erreur vient quand l'espace augmenté comparent à l'espace donné à la base de données.

0
répondu Nilesh 2015-06-24 06:09:36

j'ai résolu mon problème en faisant ça. [NOTE IMPORTANTE: il permet d'augmenter les privilèges (élargis) au compte particulier, peut-être plus que ce qui est nécessaire pour chaque scénario].

  1. Aller à 'Explorateur D'Objets ' de SQL Management Studio.
  2. Développez Sécurité, puis Login.
  3. sélectionnez l'utilisateur avec lequel vous travaillez, puis cliquez à droite et sélectionnez Propriétés.
  4. Dans sélectionner une Page, passez à Rôles De Serveur
  5. Clic sur administrateur et enregistrer.
0
répondu Christopher Casso 2018-06-14 20:36:19