我试图允许用户在不授予ALTER TRACE
权限的情况下从 .trc 文件查看 SQL Server 跟踪数据(SQL Server 2008 R2)。因此,我使用我的系统管理员帐户将其封装在一个存储过程中:
CREATE PROCEDURE test_trace
as
SELECT * FROM FN_TRACE_GETTABLE(N'C:\temp\trace1.trc', 1)
如果我使用我的系统管理员帐户执行此存储过程,它会按预期运行。如果我尝试在 domain1\user1 帐户下运行它,它不会运行并给出错误"You do not have permission to run 'FN_TRACE_GETTABLE'"
。这又是预料之中的。
所以现在我想让domain1\user1
存储过程运行,所以我将存储过程更改为在 sysadmin 帐户下执行:
CREATE PROCEDURE test_trace
WITH EXECUTE AS 'domain1\sysadmin1'
as
SELECT * FROM FN_TRACE_GETTABLE(N'C:\temp\trace1.trc', 1)
现在,当我执行存储过程时,"You do not have permission to run 'FN_TRACE_GETTABLE'"
无论我在哪个帐户下执行它,我都会得到!我期望能够在domain1\user1
和domain1\sysadmin1
帐户下执行它。
有人可以帮忙解决我错过的事情吗?我的目标是允许在不授予他们权限 domain1\user1
的情况下读取文件。trace1.trc
ALTER TRACE