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

Tsql SQL Server 2012-访问包含的数据库中sys.dm_db_index_usage_stats的权限,tsql,sql-server-2012,Tsql,Sql Server 2012,在包含的数据库中,如何授予用户对此表的读取权限 我正在尝试创建一个函数来获取表上次更新的日期,但当包含的用户运行它时,它失败,错误为297“用户没有执行此操作的权限” CREATE FUNCTION [MGMT].[GetLastObjectUpdateTime] (@ObjectName NVARCHAR(100)) RETURNS DATETIME WITH EXECUTE AS OWNER AS BEGIN DECLARE @Result DATETIME

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

我正在尝试创建一个函数来获取表上次更新的日期,但当包含的用户运行它时,它失败,错误为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

(代码来源:)

我将尝试授予所有者服务器权限查看服务器状态,该状态为


他们或pehaps public(或其他组)需要函数的execute权限和包含表的references权限。不清楚谁从您的帖子中得到了什么。签出用户是具有执行权限的角色的成员。授予视图服务器状态将意味着我破坏了一些包含功能,因为我必须在我将包含的db连接到的每台服务器上运行grant。虽然从技术上讲这会起作用,但它会破坏数据库的包含功能。需要在数据库迁移到的每台服务器上运行此脚本。
USE master;
GO
GRANT VIEW SERVER STATE TO [owner login]
GO