Я столкнулся со следующей проблемой: существует пользователь, который должен выполнить хранимую процедуру (spTest). В теле spTest называют sp_trace_generateevent. sp_trace_generateevent требует, изменяют полномочия трассировки, и я не хочу, чтобы у пользователя был он. Таким образом, я хотел бы, чтобы пользователь смог выполнить spTest. Как я могу сделать это?
Попробуйте следующее:
EXECUTE AS user = 'special_user'
EXECUTE YourProcerdure
REVERT
посмотрите это:
Общие сведения о переключении контекста <<< есть примеры того, что вы пытаетесь сделать
Общие сведения о контексте выполнения
Предложение EXECUTE AS (Transact-SQL)
EXECUTE AS (Transact-SQL)
Когда вы переходите к выполнению этой конкретной хранимой процедуры вам нужно будет создать другое соединение, используя необходимые учетные данные пользователя.
Как предлагали другие, вы можете добиться желаемого с помощью предложения Execute As. Примеры вариантов реализации см. В электронной документации для пункта Execute As .
Для дальнейшего чтения и более глубокого понимания этой темы, то, чего вы хотите достичь, подпадают под концепцию безопасности Переключение контекста .