Pokud byla uložená procedura vytvořena pomocí příkazu EXECUTE AS CALLER (což je podle mého názoru výchozí nastavení), musí mít volající všechna oprávnění nezbytná k tomu, aby mohl kromě příkazu EXECUTE v proceduře provádět cokoli, co uložená procedura dělá.
Z dokumentace SQL Server pro EXECUTE AS:
Všimněte si, že kvůli způsobu, jakým SQL Server zpracovává kontroly oprávnění pomocí řetězců vlastnictví, to není vždy striktně pravdivé a hádám, že udělení KONTROLY postupu (které uděluje status vlastnictví příjemci povolení) způsobuje, že tyto kontroly oprávnění jsou obejít.
Pokud vytvoříte proceduru pomocí příkazu EXECUTE AS OWNER, pak byste této proceduře neměli udělovat žádná oprávnění kromě EXECUTE.