Я пытаюсь программно контролировать размер базы данных SQL Server, чтобы мой администраторский раздел моего веб-приложения мог сообщить об этом, и я могу использовать это для выполнения некоторых SP очистки, очистки файлов журнала и т. Д.
Я использую следующий код для расчета размера таблиц в соответствии с рекомендацией SO:
CREATE TABLE #t (name SYSNAME, rows CHAR(11), reserved VARCHAR(18), data VARCHAR(18), index_size VARCHAR(18), unused VARCHAR(18))EXEC sp_msforeachtable 'INSERT INTO #t EXEC sp_spaceused ''?'''-- SELECT * FROM #t ORDER BY name-- SELECT name, CONVERT(INT, SUBSTRING(data, 1, LEN(data)-3)) FROM #t ORDER BY nameSELECT SUM(CONVERT(INT, SUBSTRING(data, 1, LEN(data)-3))) FROM
#tDROP TABLE #t
Когда я запускаю это для моей небольшой базы данных, я получаю общую сумму ~ 6,8 мегабайт. Когда я смотрю на свойства моей базы данных, она показывает 15,5 мегабайт.
У меня есть следующие вопросы:
1. Что еще может сделать разницу?
2. Можно ли эту разницу описать как «накладные расходы», которые будут расти лишь в небольшом темпе по мере роста других данных (для этого мне нужна приблизительная оценка).
3. Хранимые процедуры, функции, представления, триггеры находятся в этом «служебном» пространстве? Есть ли способ рассчитать это?
4. Есть ли другой способ получить полный размер базы данных? Я просто хочу простой способ получить РЕАЛЬНЫЙ размер.