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]
通过将数据库标记为可信,可以使其与所有者模拟一起工作。请参阅:和请参阅更新的答案。非常感谢。这是值得信赖的