gifts2017

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

Опубликовал Павел (d0dger) в раздел Программирование - Практика программирования

Получение размера базы sql

Не считаю себя гуру 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

Скачать файлы

Наименование Файл Версия Размер
Получение размера базы 7.7 18
.ert 58,00Kb
13.01.12
18
.ert 58,00Kb Скачать
Получение размера базы 8.2 20
.epf 6,68Kb
13.01.12
20
.epf 6,68Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Епрст (Ёпрст) 13.01.12 11:23
По-уму, добваь еще в скрипт use databasename
И это, это не только для клюшек сойдет - а для любых баз.

ЗЫ: Модеры, уберите нахрен гамнокнопку - "подписаться на новые каменты", иначе никаких каментов к поделкам вы не увидите никогда, идиотизм это!
2. Павел (d0dger) 13.01.12 11:57
(1) Можно конечно извратиться - получить список всех баз, вывести их в список, а потом показывать свободной место выбранной, вот только кому это нужно будет :)
А по-поводу для любой платформы - да, надо поменять и выложить обработку для 8, спс...
3. Гость 20.01.12 13:45
после первого же запуска 1с-ка вылетела наглухо
4. Павел (d0dger) 20.01.12 13:47
(3) Гость, интересно на какой именно инструкции вылетело, какая версия 1с++?
5. olga pt (pt_olga) 06.12.12 11:26
блин, мне нужно было получить размер каждой из таблиц базы SQL, а не Игого :( деньги на ветер
6. Павел (d0dger) 06.12.12 11:47
create table #t(name varchar(255), row varchar(255), reserved varchar(255), data varchar(255), inxex_size varchar(255), unused varchar(255))

insert into #t
exec sp_msforeachtable N'exec sp_spaceused ''?'''

select * from #t
drop table #t
7. Иван (newgluk) 13.11.14 13:07
а что это за странная арифметика?) " 8192 / 1048576 "
иначе говоря, в каких единицах в dbo.sysfiles хранится размер файлов?
8. Павел (d0dger) 13.11.14 14:19
(7) newgluk, MS SQL Server хранит данные в страницах по 8 Кб, соответственно. Умножаем на 8192 - размер в байтах, делим на 1048576 (1024 * 1024) - получаем размер в мегабайтах.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа