向用户添加使用sys.dm_os_volume_stats表功能的正确权限

问题描述 投票:0回答:2

我正在尝试从我正在SQL Server中调用的当前数据库中获取磁盘总大小,但是在其下进行调用的用户没有执行此功能的正确权限。

我正在使用此脚本

SELECT distinct(volume_mount_point), 
  total_bytes/1048576/1024 as Size_in_GB, 
  available_bytes/1048576/1024 as Free_in_GB,
  (select ((available_bytes/1048576* 1.0)/(total_bytes/1048576* 1.0) *100)) as FreePercentage
FROM sys.master_files AS f CROSS APPLY 
  sys.dm_os_volume_stats(f.database_id, f.file_id)
group by volume_mount_point, total_bytes/1048576, 
  available_bytes/1048576 order by 1

我也尝试过使用xp_cmdshell,但是此应用程序将在其中运行某些服务器,因为某些IT问题使我们无法使用它。

我使用EXEC master.dbo.xp_fixeddrives有部分结果,但是它只给我可用的可用空间,我仍然需要使用的空间。

是否有任何方法可以编写适当的权限以允许我的用户使用sys.dm_os_volume_stats

sql sql-server database database-administration diskspace
2个回答
0
投票

从该DMO的the documentation,登录需要VIEW SERVER STATE权限。注意:该权限除了可以读取该DMO的功能外,还提供了许多其他功能,因此请对其进行评估并评估它是否适合您的环境。


0
投票

我通过添加“ WITH EXECUTE AS OWNER”来解决我的问题,解决了该问题

创建过程[dbo]。[GetPerformanceStatus]拥有所有者如开始...结束

© www.soinside.com 2019 - 2024. All rights reserved.