Я пытаюсь получить общий размер диска из текущей базы данных, которую я вызываю на SQL Сервере, но пользователь, под которым выполняется вызов, не имеет прав доступа для выполнения этой функции.
Я использую этот сценарий
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
, но некоторые серверы, на которых будет работать это приложение, из-за некоторых проблем с ИТ не позволяют нам используйте его.
У меня есть частичные результаты при использовании EXEC master.dbo.xp_fixeddrives
, но это только дает мне доступное свободное место, мне все еще нужно используемое пространство.
Есть ли какой-нибудь способ написать правильный разрешения, позволяющие моему пользователю использовать sys.dm_os_volume_stats
?