Как я могу получить значение database_size для sp_spaceused?

Я пытаюсь получить значение размера базы данных SQL Server (хранилище данных)

Насколько я знаю, у нас есть sp_spaceused, который можно использовать для проверки размера базы данных.

Но я не смог найти никакого решения, чтобы помочь grep количество значений database_size

Другое решение не использует spaceused, но, поскольку Azure DWH не разрешает sys.master_file, другое решение также не работает.

Любая помощь будет принята с благодарностью!


person The One    schedule 24.01.2019    source источник
comment
Посмотрите этот поток stackoverflow.com/questions/18014392 / это может вам помочь.   -  person Suraj Kumar    schedule 24.01.2019
comment
Спасибо, Сурадж. Я проверю.   -  person The One    schedule 24.01.2019
comment
К сожалению, во всех ответах упоминается использование sys.master_file, что в моем случае запрещено.   -  person The One    schedule 24.01.2019
comment
Попробуйте также эту тему: 13296150/   -  person Suraj Kumar    schedule 24.01.2019
comment
К сожалению, представление каталога «dm_db_partition_stats» не поддерживается в этой версии. '((   -  person The One    schedule 24.01.2019
comment
На документы, sys.dm_db_partition_stats называется sys.dm_pdw_nodes_db_partition_stats в хранилище данных SQL Azure.   -  person Jeroen Mostert    schedule 24.01.2019


Ответы (3)


Когда вы запустите запрос EXEC sp_helpdb, вы получите весь размер базы данных. Здесь также вы можете передать любое конкретное имя базы данных. Независимо от того, в какой базе данных вы сейчас находитесь.

person Suraj Kumar    schedule 24.01.2019
comment
Спасибо за Ваш ответ. Я попробовал ваше предложение и получил эту ошибку. Хранимая процедура sp_helpdb не существует или не поддерживается. Я предполагаю, что Azure DWH довольно ограничен с точки зрения того, что мы можем сделать :( - person The One; 24.01.2019
comment
Это может быть какое-то ограничение, и я проверил на локальной машине. - person Suraj Kumar; 24.01.2019


Пытаться

declare @dbsize as bigint
declare @logsize as bigint

select 
  @dbsize = sum(convert(bigint,case when status & 64 = 0 then size else 0 end))
, @logsize = sum(convert(bigint,case when status & 64 <> 0 then size else 0 end))
from dbo.sysfiles;

select dbSizeInMB = cast((@dbsize + @logsize)*8/1024.0  AS decimal(10,2) );
person Gabriele Petrioli    schedule 24.01.2019
comment
Он сказал: представление каталога «sysfiles» не поддерживается в этой версии. - person The One; 24.01.2019