SQL Server 2012 - 访问包含数据库中的sys.dm_db_index_usage_stats的权限

时间:2013-12-08 13:15:58

标签: tsql sql-server-2012

在包含的数据库中,如何授予用户对此表的读取权限?

我正在尝试创建一个函数来获取上次更新表的日期,但是当包含的用户运行它时,它会失败并显示错误297'用户无权执行此操作。'。

CREATE FUNCTION [MGMT].[GetLastObjectUpdateTime] (@ObjectName NVARCHAR(100))
RETURNS DATETIME
WITH EXECUTE AS OWNER
AS 
BEGIN
        DECLARE @Result DATETIME

        SELECT  @result = MAX(last_user_update)
        FROM    sys.dm_db_index_usage_stats
        WHERE   OBJECT_ID = OBJECT_ID(@ObjectName)

        RETURN @Result
END

(代码来自:http://blog.sqlauthority.com/2009/05/09/sql-server-find-last-date-time-updated-for-any-table/#comment-684267

1 个答案:

答案 0 :(得分:0)

我会尝试授予所有者服务器权限VIEW SERVER STATE needed to use that view

USE master;
GO
GRANT VIEW SERVER STATE TO [owner login]
GO