J'ai une question sur Types de tableaux définis par l'utilisateur dans SQL Server 2008.
Pour les besoins de l'une des applications ASP.NET, nous avons défini nos propres types de table sur SQL Server 2008 pour les utiliser comme paramètres dans les procédures stockées (lors de l'exécution de la commande SQL dans l'application ASP.NET, nous passons l'objet DataTable comme paramètre pour la procédure stockée). voir ici pour un exemple )
Le problème est que lorsque nous exécutons une commande Sql (exécuter une procédure stockée) depuis ASP.NET, nous obtenons une erreur :
L'autorisation EXECUTE a été refusée pour l'objet 'ourTableType', la base de données 'ourDatabase', le schéma 'ourSchema'.
Pourquoi en est-il ainsi ? Pourquoi devons-nous définir l'autorisation sur les types de table définis par l'utilisateur ? Pourquoi ne suffit-il pas de définir la permission sur la procédure stockée qui l'utilise ? Et si nous devons l'établir quoi qu'il arrive, pourquoi n'y a-t-il pas d'autorisation pour les types de tables définis par l'utilisateur ? EXECUTE
type de permission à définir dans la fenêtre des propriétés (je ne peux voir que Control
, References
, Take Ownership
, View Definition
) ?
Ce que je ne comprends pas non plus, c'est que le fait de définir la permission de Control
dans la fenêtre des propriétés résout le problème et la procédure stockée s'exécute sans problème.
4 votes
Duplicata possible de Un paramètre de valeur de table dans une procédure stockée obtient une erreur de refus d'autorisation d'exécution.
0 votes
Merci ! J'ai cherché mais ce n'est clairement pas suffisant :/.
1 votes
Essayez de mettre
AS dbo
à la fin. Comme ça :GRANT EXEC ON TYPE::[schema].[typename] TO [User] AS dbo
. Cela a fonctionné pour moi.0 votes
Duplicata possible de Un paramètre de valeur de table dans une procédure stockée obtient une erreur de refus d'autorisation d'exécution.