【问题标题】:Add the right permissions to a user to use sys.dm_os_volume_stats table function为用户添加正确的权限以使用 sys.dm_os_volume_stats 表函数
【发布时间】:2020-01-17 02:24:31
【问题描述】:

我正在尝试从我在 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

【问题讨论】:

  • 您好,欢迎来到 SO!您可能想查看Server Fault 以了解与服务器相关的基础架构管理。

标签: sql sql-server database database-administration diskspace


【解决方案1】:

来自该 DMO 的the documentation,登录需要VIEW SERVER STATE 权限。注意 - 除了从 DMO 读取的能力之外,该权限还提供了许多其他功能,因此请评估并评估这是否适合您的环境。

【讨论】:

    【解决方案2】:

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

    创建过程 [dbo].[GetPerformanceStatus] 以所有者身份执行 作为 开始 ... 结束

    【讨论】:

      猜你喜欢
      • 2018-05-06
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 2023-02-14
      • 2010-12-24
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多