Важно отметить, что вам нужно будет выполнить команду REVERT после запроса, поскольку SQL Server будет рассматривать вас как пользователя, которого вы выполняете, пока вы не отключите соединение или не откроете олицетворение. Тем не менее, вы должны точно знать, что получит пользователь (получить несколько строк, но не все? Это должно вам помочь).

роверить, может ли пользователь выполнить хранимую процедуру на сервере MS SQL?

Я могу видеть, имеет ли пользователь явные разрешения на выполнение, подключившись к базе данных master и выполнив:

databasename..sp_helpprotect 'storedProcedureName', 'username'

однако, если пользователь является членом роли, у которой есть разрешения на выполнение, sp_helprotect мне не поможет.

В идеале я хотел бы иметь возможность назвать что-то вроде

databasename..sp_canexecute 'storedProcedureName', 'username'

который бы вернул бул.