La réponse générale est d'accorder l'autorisation d'exécution comme expliqué ci-dessus. Mais cela ne fonctionne pas si le propriétaire du schéma du SP est différent des objets sous-jacents.
Vérifier les propriétaires de schémas par :
select name, USER_NAME(s.principal_id) AS Schema_Owner from sys.schemas s
Pour changer le propriétaire d'un schéma, vous pouvez :
ALTER AUTHORIZATION ON SCHEMA::YOUR_SCHEMA TO YOUR_USER;
Exemples :
ALTER AUTHORIZATION ON SCHEMA::Claim TO dbo
ALTER AUTHORIZATION ON SCHEMA::datix TO user1;
Enfin, si dans votre SP vous tronquez une table ou modifiez la structure, vous pouvez ajouter WITH EXECUTE AS OWNER dans votre SP :
ALTER procedure [myProcedure]
WITH EXECUTE AS OWNER
as
truncate table etl.temp
0 votes
Si l'utilisateur a le rôle de db_owner, il peut aussi exécuter (ce qui n'équivaut pas à grant exec...).
1 votes
J'ai obtenu cette erreur lorsqu'il y avait une erreur de syntaxe dans ma déclaration SQL. Essentiellement, j'avais fusionné
GO
yCreate
surGOCreate
. D'autres erreurs de syntaxe semblent également donner cette erreur.