Sql server SQL Server返回sp_trace_generateevent错误

Sql server SQL Server返回sp_trace_generateevent错误,sql-server,Sql Server,在尝试执行此数据库时,我从其中一个数据库中得到一个错误 创建或更改过程[dbo].[test\u sp] 以所有者身份执行 作为 选择SUSER_SNAME()+“”+USER_NAME(); 开始 exec master..sp_trace_generateevent@eventid=82, @userinfo=N'test' 结束 去 exec[dbo].[test\u sp] 错误: Msg 8189,14级,状态10,程序主控..sp_trace_generateevent,第1行[批

在尝试执行此数据库时,我从其中一个数据库中得到一个错误

创建或更改过程[dbo].[test\u sp]
以所有者身份执行
作为
选择SUSER_SNAME()+“”+USER_NAME();
开始
exec master..sp_trace_generateevent@eventid=82,
@userinfo=N'test'
结束
去
exec[dbo].[test\u sp]
错误:

Msg 8189,14级,状态10,程序主控..sp_trace_generateevent,第1行[批次开始第9行] 您没有运行“SP_TRACE_GENERATEEVENT”的权限

授予我的用户
ALTER TRACE
(返回
SUSER\u SNAME()
),但没有帮助

第二个数据库(同一服务器)上的同一脚本可以正常工作


还可以是什么?

您试图以所有者身份执行此操作,所有者是数据库级主体,您不能在模拟数据库级主体时在当前数据库之外操作。切换为以调用者身份执行(默认),以使用调用者的身份在master中运行proc。乙二醇

create or alter procedure [dbo].[test_sp]
with execute as caller
as
SELECT SUSER_SNAME()+ ' '+ USER_NAME();
begin
    exec master..sp_trace_generateevent @eventid = 82,  @userinfo  = N'test'
end
GO
exec [dbo].[test_sp] 

通过将数据库标记为可信,可以使其与所有者模拟一起工作。请参阅:和

请参阅更新的答案。非常感谢。这是值得信赖的