web-dev-qa-db-fra.com

Insérer refusé sur des tables. Mais la connexion a la permission pour cela

Je suis une procédure de base de données X à la base de données Y.

Sur la base de données y, il devrait y avoir un insertion de l'utilisateur.

enter image description here

Dans cette image, la première colonne est la connexion, la seconde est le rôle qui dispose de toutes les autorisations nécessaires (il a l'insert sur la table dont nous avons besoin).

Le login est correctement attribué au rôle et le rôle a toutes les autorisations nécessaires.

mais lorsque j'exécute la procédure, je reçois ces célèbres erreurs:

Msg 229, Level 14, State 5, Procedure PROCEDURENAME, Line 165 [Batch Start Line 2]
The INSERT permission was denied on the object 'XXXXXXXXXXX', database 'DB', schema 'dbo'.
Msg 229, Level 14, State 5, Procedure PROCEDURENAME, Line 484 [Batch Start Line 2]
The INSERT permission was denied on the object 'YYYYYYYYYYYYYY', database 'DB', schema 'dbo'.
Msg 229, Level 14, State 5, Procedure PROCEDURENAME, Line 527 [Batch Start Line 2]
The INSERT permission was denied on the object 'YYYYYYYYYYYYYY', database 'DB', schema 'dbo'.
Msg 229, Level 14, State 5, Procedure PROCEDURENAME, Line 570 [Batch Start Line 2]
The INSERT permission was denied on the object 'YYYYYYYYYYYYYY', database 'DB', schema 'dbo'.

J'ai créé un autre login de test, a donné exactement les mêmes autorisations et cela a fonctionné.

Comment puis-je trouver ce qui bloque l'insert pour ce login? J'ai même couru une trace pour voir si je peux trouver plus d'erreurs, rien sur EventViewer aussi.

Le login n'a pas d'autorisations explicites. Son juste membre du rôle avec les autorisations.

Les autorisations de rôle sont correctes:

enter image description here

ÉDITER:

j'ai tout essayé depuis de recréer le login Windows et de refaire toutes les autorisations. Ce que j'ai noté est:

Je pourrais créer un identifiant (SQL Login avec mot de passe) et cela a fonctionné.

J'ai essayé comme un test, insérez simplement des données dans la table avec le login Windows d'origine, il a échoué, je l'ai ensuite supprimé du rôle et a donné l'autorisation d'insertion et elle échoue toujours. Même avec une permission d'insertion sur la base de données, elle ne parvient pas à insérer des données.

2
Racer SQL

Utilisez la procédure stockée ScriptLoginPermissions, déployez-la dans n'importe quelle base de données utilisateur:

https://github.com/aleksey-vitsko/database-administrator-tools/blob/master/permissions%20-%20ScriptLoginPerrissions.sql

Exécutez-le en spécifiant le nom de la connexion:

exec ScriptLoginPermissions 'domain\account.name'

En plus de montrer toutes les autorisations pour ce compte, ceci SP affichera également l'adhésion au groupe, y compris des groupes AD/Windows

Ensuite, vous devriez vérifier si l'un des groupes d'annonce, vous devez refuser la permission de la table en question.
[.____] Exécuter le SP Spécifier le nom de groupe cette fois:

exec ScriptLoginPermissions 'domain\group.name'
0
Aleksey Vitsko