2017-05-11 2 views
1

C'est ma première question ici, alors je dis: bonjour!sql server 2012 - ne peut pas accorder sur select sur une fonction table multi-instruction

J'ai une fonction table à plusieurs instructions (appelée fn) qui (bien sûr) renvoie une table. J'ai également créé un rôle de base de données (appelé dbr).

J'ai essayé d'ajouter la permission mon dbr peut choisir de mon fn.

J'ai donc ouvert le dbr, ajouter mon fn à des sécurables, accorder sur Select et j'obtiens une erreur: La clé ne peut pas être nulle. Nom du paramètre: key (mscorelib)

Ceci est peu étrange, car dans mon fn j'ai clé primaire sur return-table-variable et aussi la clé ne peut pas être nulle. Pour être spécifique, la clé est construite avec trois champs: dateFrom, dateTo, article

La fonction fonctionne parfaitement, mais je ne peux pas la mettre à la disposition de mes membres dbr.

Des sugestions?

+0

Connaissiez-vous ceci: https://docs.microsoft.com/en-us/sql/t-sql/statements/execute-as-clause-transact-sql –

+0

Fonction et même que la procédure stockée , devrait accorder l'autorisation d'exécution. – Wendy

Répondre

0

Peut-être que c'est un bug de Management Studio non-corrigé ou vous cliquez au mauvais endroit, pourquoi n'utilisez-vous pas T-SQL à la place?

grant select on dbo.fn to dbr 
+0

Vous avez raison, il est probablement problème de patch manquant - je ne suis pas l'administrateur du serveur. Donc, finalement, cela fonctionne avec T-SQL et pas avec SQL MS.Thanks! – mtz