- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图允许用户查看 .trc 文件中的 SQL Server 跟踪数据,而不授予他们 ALTER TRACE
权限 (SQL Server 2008 R2)。因此,我使用我的系统管理员帐户将其封装在存储过程中:
CREATE PROCEDURE test_trace
as
SELECT * FROM FN_TRACE_GETTABLE(N'C:\temp\trace1.trc', 1)
如果我使用我的系统管理员帐户执行此存储过程,它会按预期运行良好。如果我尝试在domain1\user1帐户下运行它,它不会运行并给出错误“您无权运行'FN_TRACE_GETTABLE'”
。这又是预料之中的事情。
现在我想让 domain1\user1
运行存储过程,因此我将存储过程更改为在系统管理员帐户下执行:
CREATE PROCEDURE test_trace
WITH EXECUTE AS 'domain1\sysadmin1'
as
SELECT * FROM FN_TRACE_GETTABLE(N'C:\temp\trace1.trc', 1)
现在,当我执行存储过程时,无论我在哪个帐户下执行它,都会得到“您无权运行'FN_TRACE_GETTABLE'”
!我希望能够在 domain1\user1
和 domain1\sysadmin1
帐户下执行它。
有人可以帮我解决我错过的事情吗?我的目标是允许 domain1\user1
读取 trace1.trc
文件,而不授予他们 ALTER TRACE
权限。
最佳答案
您需要使用code signing以受控的方式提升特权。在 EXECUTE AS 过程上下文中,您处于沙盒状态并且无法利用服务器级别权限(例如跟踪相关权限),请阅读 Extending Database Impersonation by Using EXECUTE AS 。代码签名也是这个问题的正确解决方案。查看full example here .
关于sql-server - FN_TRACE_GETTABLE 上的 SQL Server EXECUTE AS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17401328/
我是一名优秀的程序员,十分优秀!