Подтвердить что ты не робот

Выполнять хранимую процедуру в качестве другого запроса пользователя

У меня возникла следующая проблема: есть пользователь, которому нужно выполнить хранимую процедуру (spTest). В spTest вызывается sp_trace_generateevent. sp_trace_generateevent требует прав на изменение трассировки, и я не хочу, чтобы у пользователя это было. Поэтому я хотел бы, чтобы пользователь мог выполнить spTest. Как я могу это сделать?
Благодарим вас за помощь.

4b9b3361

Ответ 2

Как показали другие, вы можете добиться того, что хотите, используя предложение Execute As. На примерах вариантов реализации взгляните на документацию Books Online для предложения Execute As.

Для дальнейшего чтения и для того, чтобы лучше понять эту тему, то, что вы хотите достичь, входит в концепцию безопасности Контекстное переключение.

Ответ 3

это то, что я сделал (и преуспел):

let Source = Sql.Database("server", "database", 
    [Query= "EXECUTE AS USER='user' EXECUTE [schema].[spname] 'parm1', 'parm2'"])

в   Источник

Ответ 4

Когда вы перейдете к выполнению этой конкретной хранимой процедуры, вам нужно будет создать другое соединение с использованием необходимых учетных данных пользователя.