Я использую SQL Server 2016, и у нас есть хранилище данных, нам нужно отслеживать размер базы данных, потому что каждый день данные будут загружаться с помощью инструмента ETL.
На этапе тестирования я загружаю данные за один день в хранилище данных, затем использую ниже SQL, чтобы получить размер базы данных:
SELECT
database_name = DB_NAME(database_id)
, log_size_mb = CAST(SUM(CASE WHEN type_desc = 'LOG' THEN size END) * 8. / 1024 AS DECIMAL(8,2))
, row_size_mb = CAST(SUM(CASE WHEN type_desc = 'ROWS' THEN size END) * 8. / 1024 AS DECIMAL(8,2))
, total_size_mb = CAST(SUM(size) * 8. / 1024 AS DECIMAL(8,2))
FROM sys.master_files WITH(NOWAIT)
WHERE database_id = DB_ID('ODS_OUT_DEV') -- for current db
GROUP BY database_id
, затем я получил ниже информацию:
database_name log_size_mb row_size_mb total_size_mb
ODS_OUT_DEV 127794.63 127802.63 255597.25
после этого я загружаю данные другого дня в хранилище данных, и я уверен, что в таблицы в хранилище данных было вставлено много данных. Затем я использую тот же SQL выше, чтобы получить информацию о размере базы данных, но он возвращает те же данные, что и при первом запуске. Поэтому я думаю, что если SQL возвращает информацию о размере базы данных в реальном времени, если нет, как я могу получить информацию в реальном времени