Как узнать размер базы данных ms sql
Перейти к содержимому

Как узнать размер базы данных ms sql

  • автор:

Получение информации о размере базы данных, таблиц и индексов на диске (СУБД MS SQL Server)

Рост размера информационной базы является закономерным явлением ее эксплуатации, но, в некоторых случаях, данный процесс свидетельствует об ошибках в архитектуре системы. Среда SQL Server Management Studio предоставляет возможность легко получить информацию о занимаемом БД месте на диске, в том числе: сводную информацию; в разрезе таблиц базы данных; индексов таблиц. Анализ необычных (для системы в целом) данных может выявить ошибки архитектуры и/или ошибки выполнения регламентных операций. Способы получить такую информацию о размере данных на диске будут рассмотрены в данной статье.

«Стандартные отчеты» в пользовательском интерфейсе Management Studio

SQL Server Management Studio предоставляет минимальный необходимый набор стандартных отчетов для получения информации о размере базы данных/ее файлов/таблиц/индексов в режиме пользовательского интерфейса.

Стандартные отчеты по использованию дискового пространства

Доступ к этим отчетам может быть выполнен через «Обозреватель объектов» (Object explorer) → Правый клик мыши по базе данных → «Отчеты» (Reports) → «Стандартный отчет» (Standard reports)

Отчет «Занято места на диске» (Disk Usage)

Отчет содержит общие сведения об использовании места на диске базой данных.

В отчете представлена информация следующего рода:

Отчет

  • Общий объем, занятый на диске (Total space reserved)
  • Место, занятое файлами данных (Data files space reserved)
  • Место, занятое журналом транзакций (Transaction log space reserved)
  • Отражает графически процент пространств в составе файлов данных: индексов (index), данных (data), не выделенного (unallocated) и не используемого (unused)
  • Отражает графически процент примененного (used) и неиспользуемого (unused) пространства в составе журнала транзакций
  • Выводит записи событий автоматического увеличения (autogrow) и/или сжатия (autoshrink) для базы данных
  • Выводит информацию о месте на диске, используемом файлами данных

Отчеты «Использование дисковой памяти таблицей» (Disk Usage by Table), «Использование дисковой памяти верхними таблицами» (Disk Usage by Top Tables)

Отчет содержит подробные данные об использовании места на диске таблицами, расположенными в базе данных. Отличие этих двух отчетов заключается лишь в том что в отчете «By Top Tables» вывод происходит только для «верхних» (первых) 1000 таблиц.

В отчете представлена информация:

Отчет

  • Количество записей в таблице базы данных (Records)
  • Размер зарезервированного пространства на диске (Reserved)
  • Размер данных на диске (Data)
  • Общий размер индексов таблицы на диске (Indexes)
  • Размер не используемого пространства (Unused)

Отчет «Использование дисковой памяти секцией» (Disk Usage by Partition)

Отчет содержит подробные данные об использовании места на диске индексом и секциями, расположенными в базе данных.

Хотел бы обратить Ваше внимание что в данном отчете неверно рассчитывается дисковое пространство по кластерному индексу. Для получения реально используемого дискового пространства кластерным индексом можно: из «объема, используемого всеми индексами таблицы» (указанном в отчете «Использование дисковой памяти таблицей») вычесть «объем всех не кластерных индексов» (по отчету «Использование дисковой памяти секцией»)

В отчете представлена информация:

Отчет

  • Число записей в индексе/секции (Records)
  • Зарезервированное пространство на диске (Reserved)
  • Используемое пространство на диске (Used)

Хранимые процедуры

Данные о размере базы данных и таблиц также можно получить с помощью хранимой процедуры sp_spaceused Management Studio.

Синтаксис:
sp_spaceused [[ @objname = ] ‘objname’ ]
[,[ @updateusage = ] ‘updateusage’ ]

В процедуре могут быть использованы 2 не обязательных параметра:

  • @objname — Полное или неполное имя таблицы, индексированного представления или очереди. Если параметр не указан — результаты возвращаются для всей базы данных.
  • @updateusage — Указывает на необходимость запустить процедуру обновления сведений

Примеры запросов по всей базе данных и по конкретной таблице приведены ниже:

Как узнать размер базы данных ms sql

На сервере с Microsoft MS SQL Server 2008 R2 вдруг практически закончилось место. Кроме самого SQL сервера и операционной системы Windows Server 2008 R2 не было вообще ничего! Надо было очень оперативно найти разросшуюся базу и сделать с ней что-нибудь.

Вывести список баз данных MS SQL Server и их размеры можно как минимум двумя SQL-командами:

В табличке смотрим, кто разросся и, например, Shrink’аем log-файл, если Recovery Model установлена Full (How to Shrink Your MS SQL Database Log File)

Размер базы данных и общий размер всех баз данных

Размер базы данных и общий размер всех баз данных

Есть несколько способов определить размер базы данных. Вот некоторые из них:

1. sp_helpdb покажет размер каждой базы данных:

sp_helpdb

2. Следующий метод использует системную таблицу sys.master_files и возвращает размер текущей базы данных:

Получение размера базы данных MS SQL T-sql запросом к MS SQL Server

  • Результат

Не считаю себя гуру t-sql, но уже не первый раз приходится отвечать на вопрос «как узнать размер базы на сервере ms-sql?».

Для этого предлагается воспользоваться простым скриптом t-sql:

SELECT
LTRIM ( STR (( CONVERT ( dec (15,2),dbsize) + CONVERT ( dec (15,2),logsize)) * 8192 / 1048576, 15, 2) + ‘ MB’ ) РазмерБазы
FROM
(
SELECT SUM ( CONVERT ( BIGINT , CASE WHEN status & 64 = 0 THEN size ELSE 0 END )) dbsize
, SUM ( CONVERT ( BIGINT , CASE WHEN status & 64 <> 0 THEN size ELSE 0 END )) logsize
FROM dbo.sysfiles
) big

Он позволяет определить размер базы в текущем соединении, при необходимости можно воспользоваться командой useи получить размер другой базы данных

Пример использования для 1С 7.7 можно скачать из аттача. Используется 1С++

Пример использование для 1С 8.2 предполагает наличие строки соединения с 1С, используется ADO

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *