gifts2017

SQL Базомер (8.2, 8.3)

Опубликовал Андрей (andboss) в раздел Администрирование - Статистика базы данных

SQL Базомер - небольшая обработка, которая показывает информацию о используемом дисковом пространстве СУБД MS SQL, PostgreSQL  в разрезе метаданных 1С (8.2, 8.3).

Небольшая обработка, которая показывает информацию о физически используемом дисковом пространстве для СУБД MS SQL Server и PostgreSQL в разрезе метаданных 1С.

Использует подключение к SQL Server через OLEDB, данные запрашиваются процедурой sp_spaceused.
http://msdn.microsoft.com/ru-ru/library/ms188776.aspx
 
Работоспособность проверена на SQL Server 2005, 2008, 2012 И 1С: Предприятии 8.2, 8.3

Работает как в толстом так и в тонком клиенте(обычный и управляемый режимы).
Перед использованием на закладке "Настройки" указать данные для подключения к БД.

Для СУБД PostgreSQL:

Требуется установленный ODBC драйвер (если в тонком клиенте, то устанавливать на сервер приложений)
http://www.postgresql.org/ftp/odbc/versions/msi/

Проверял на версии PostgreSQL 9.0 и ODBC клиенте

http://wwwmaster.postgresql.org/download/mirrors-ftp/odbc/versions/msi/psqlodbc_09_00_0310.zip

Используются функции:

pg_total_relation_size

pg_table_size

pg_indexes_size

Количество записей берется из pg_class, имейте в виду данные обновляются там после VACUUM!


Комментарии и пожелания приветствуются.

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

Наименование Файл Версия Размер
SQLБазомер.epf 207
.epf 27,51Kb
13.07.15
207
.epf 27,51Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Владимир (ARL) 19.10.11 15:54
Очень понравилась обработка. Давно собирался посмотреть величины таблиц, да так и несобрался. А тут всё супер удобно. Даже пожеланий никаких не нашлось :) Благодарю!
2. Сергей (Seregalink) 19.10.11 23:44
Да спасибо, хорошая вещь, и главное удобная!
3. Gr0ck (gr0ck) 20.10.11 08:37
4. Anna Babynina (orsprog) 20.10.11 08:57
Обработка замечательная...а главное название подходящее
5. Anna Babynina (orsprog) 20.10.11 08:58
6. Евгений (Djonny) 20.10.11 10:57
Да, хорошая вещь!
только почему-то не отображается значение имени метаданных:
8.2.14.519
sql 2005
7. olga pt (pt_olga) 20.10.11 11:13
плюс! нужная обработина! сейчас буду пробовать
8. Андрей (andboss) 20.10.11 11:21
Djonny пишет:

Да, хорошая вещь!

только почему-то не отображается значение имени метаданных:

8.2.14.519

sql 2005


Не отображается в каждой строке метаданных? У себя в БД наткнулся на ситуацию, когда для существующей таблицы в SQL нет соответствия в метаданных 1С! Как это объяснить - видимо так работала платформа, сбой в каких то релизах, БД тянется еще начиная с версии 1С 8.0. В итоге с десяток таблиц типа "справочник" и несколько "документов" присутствуют только в виде физических таблиц MS SQL, функция ПолучитьСтруктуруХраненияБазыДанных(,Истина) не возвращает таблиц с такими именами!
9. Евгений (Djonny) 20.10.11 12:41
(8)Да, не отображается в каждой строке метаданных!
10. Armando Armando (Armando) 20.10.11 12:53
1. Не работает в управляемом приложении
2. Хотелось бы табличные части видеть в составе своих объектов (например, в виде дерева, как в конфигураторе). И чтоб дополнительно размер родительской таблицы отображался с учетом дочерних объектов. И естественно, чтоб можно было выбрать как отображать дочерние таблицы, в составе родительских или отдельно.
3. Таблица не поддается анализу. Даже что бы выгрузить в Excel в удобоваримом виде, надо сделать несколько лишних движений. Напрягает.
11. Андрей (andboss) 20.10.11 13:13
Djonny пишет:

(8)Да, не отображается в каждой строке метаданных!


И указанная БД MS Sql соответствует текущей используемой платформой, из которой запускаете обработку?
Объяснение нахожу только одно: конфигурация из которой запущена обработка и указанная БД в настройках - две различные базы данных!
12. Alex Misanets (Misanets) 20.10.11 14:15
При попытке подключения используя пользователя SQL с доменное авторизацией выдает ошибку, ну и не конектится:

Ошибка установки соединения: {ВнешняяОбработка.SQLБазомер.МодульОбъекта(6)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Login failed for user 'Domen\User'.
13. Андрей (andboss) 20.10.11 16:15
Misanets пишет:

При попытке подключения используя пользователя SQL с доменное авторизацией выдает ошибку, ну и не конектится:



Ошибка установки соединения: {ВнешняяОбработка.SQLБазомер.МодульОбъекта(6)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Login failed for user 'Domen\User'.


Добавил NTLM-аутентификацию
14. Александр Крынецкий (echo77) 20.10.11 21:31
если бы под 8.1 такое было.
вот еще хорошая штука http://infostart.ru/public/19463/
15. Zoomby Zoomby (Zoomby) 20.10.11 22:19
спасибо автору :) надо попробовать потестить
16. Евгений (Djonny) 20.10.11 22:25
(11) Вот тут может быть!
запускал на платформе, отличной от той, на которой база.
Завтра проверю!
17. Андрей (andboss) 21.10.11 08:15
echo77 пишет:
если бы под 8.1 такое было.


Да вроде нет препятствий перенести этот код в обработку созданную в 8.1.
Если не ошибаюсь, функция ПолучитьСтруктуруХраненияБазыДанных() в 8.1 существует, так что всй должно взлететь)
18. Тарас (Trof@) 21.10.11 10:04
В мене помилка "Ошибка установки соединения: {ВнешняяОбработка.SQLБазомер.МодульОбъекта(12)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Ошибка входа пользователя "admin"", але коли включаю Аутентифікацію то все працює. З чим це може бути повязане?
19. Тарас (Trof@) 21.10.11 10:08
(18) Вибачайте вже побачив аналогічне повідомлення.
20. Евгений (Djonny) 21.10.11 10:49
(11) Точно, запустил на той платформе, на которой работает база,
и имя метаданных отображается
Спасибо!
21. Alex Misanets (Misanets) 21.10.11 11:28
Взвесил обработкой получилось 45,1 Гб, а mdf файл весит 69,7 Гб.
Можете объяснить?
22. Андрей (andboss) 21.10.11 11:40
Misanets пишет:

Взвесил обработкой получилось 45,1 Гб, а mdf файл весит 69,7 Гб.

Можете объяснить?


Обработка возвращает физически занятый размер под структуры MS SQL внутри mdf файла (-ов). Сам mdf файл как правило всегда больше, и не отражает физически занятое пространство под структуры, для уменьшения можете использовать SHRINKDATABASE
http://msdn.microsoft.com/ru-ru/library/ms190488.aspx

Т.е в вашем случае SHRINKDATABASE выбросит пустое место из mdf и файл станет чуть больше 45,1 гб
23. Alex Misanets (Misanets) 21.10.11 12:05
Благодарю, сделаем, проверим.
24. ghost_51 21.10.11 12:52
А нет подобного для postgres?
25. Андрей (andboss) 21.10.11 16:15
ghost_51 пишет:

А нет подобного для postgres?


Уже есть, качайте)
26. sound sound (sound) 21.10.11 16:31
Может на СКД переписать?
27. Андрей Т (Twirus) 21.10.11 16:45
28. infostar81 21.10.11 19:40
29. Станислав Турчинский (Istur) 24.10.11 12:05
(0) Посмотрел обработку и не понял смысла ее появления, и чем она лучше моей Анализ размеров таблиц, метаданных, различная статистика для клиент-серверного (SQL) и файлового вариантов базы, ну кроме еще поддержки PostgreSQL. Моя же показывает все в удобном виде, написана на СКД, дает возможность показывать информацию по выбранным метаданным, а не только по всем, выводить информацию не только в килобайтах, но и в мегабайтах и гигабайтах, накладывать различные отборы, и просто выводимый вид гораздо более понятен. У одного вида метаданных может быть несколько таблиц, в моей обработке это сгруппировано, в данной же обработке выводится простыня, не упорядоченная даже по наименованию и типу метаданных. В общем я не понимаю ни смысла данной обработки и ее плюсов, ни плюсов за эту саму обработку. И даже немного обидно, потому что подавляющая часть времени мною был потрачена именно на удобность и приятность использования, здесь же автор вообще этим не заворачивался, и оказывается это никому собственно и не надо, народ проглотит все что угодно. Мда...
void.tm; YPermitin; kseonbr; artbear; Збянтэжаны Саўка; +5 Ответить 2
30. Игорь Ю (igor_aviant) 24.10.11 17:16
{ВнешняяОбработка.SQLБазомер.МодульОбъекта(79)}: Ошибка при вызове метода контекста (Execute)
Результат = objCmd.Execute();
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): ERROR: function pg_table_size(text) does not exist;
Error while executing the query
31. Андрей (andboss) 25.10.11 08:21
На какой версии PostgreSQL пробуете? На 9.x работает, возможно на более ранних нет функции pg_table_size
32. Игорь Ю (igor_aviant) 25.10.11 11:22
33. Сергей (sipoju) 25.10.11 15:37
Вещь хорошая, на MS SQL работает нормально, но PostgreSQL у нас ниже 9, стабильная для 1С 8.4.3-3.1C, так что подождем пока
34. Алексей Попов (Aleskey_K) 01.11.11 17:48
35. StronG-X (Dethmond) 25.06.12 10:26
Спасибо, как раз то, что нужно
36. Владимир (clab) 17.07.13 11:21
Для отображения метаданных (кого не работает) в нашем случае помогло привести записи в таблице в нижний регистр

Таблица = ПолучитьСтруктуруХраненияБазыДанных(,Истина);
//
для Каждого СтрокаТаб из Таблица цикл
СтрокаТаб.ИмяТаблицыХранения=НРег(СтрокаТаб.ИмяТаблицыХранения);
КонецЦикла;
//

Да и спасибо автору за полезную вещь
37. Дмитрий Никс (aximo) 17.07.13 11:33
Интересная сервисная штука, даже для того, чтобы сопоставить таблицы бд - объектам конфигурации
38. Наталья Литвин (НатальяАлекс) 24.09.13 11:52
Очень интересно. То есть она и сопоставляет таблицы? И вес показывает?
39. Елена (elena_77) 01.10.13 17:48
Спасибо за обработку. Именно сейчас ищем причину, по которой база перестала загружаться из dt архива. Во время загрузки вылетает с ошибкой. Размер таблицы превышает 4 гб. Вот нам срочно понадобилось определить, какая из таблиц так распухла.
40. Михаил ф (Sniper9mm) 13.03.14 15:10
41. Mike (air_mike) 07.08.14 17:18
(30) igor_aviant, В общем модуле закоментить строки 59,60 так:
//|pg_table_size(schemaname||'.'||tablename) / 1024 AS table_usage_kb,
//|pg_indexes_size(schemaname||'.'||tablename) / 1024 as index_usage_kb,
|0 AS table_usage_kb,
|0 as index_usage_kb,
Тогда такой ошибки не будет. А так в 8.4 нет такой функции pg_table_size
42. mikhailovaew (mikhailovaew) 13.08.14 16:14
(29) Istur, не переживайте: у Вашей обработки и плюсов больше, и скачиваний )
43. Николай Степанов (Tapochki-tmn) 10.11.14 11:56
Не хватает функции сравнения двух и более баз на предмет чего поменялось.
У нас вот база за последний месяц в два раза в размерах выросла.
Запустил в рабочей базе, запустил в копии месячной давности.
Вижу, регистр ВерсииОбъектов вышел на лидирующие позиции. Вспомнил, что месяц назад добавлял объекты для контроля версий. Собственно, на него и так думал, но после просмотра результатов обработки, подозрения подтвердились.
Однако, это по одному объекту стало понятно, а чтобы выявить какие еще объекты, к примеру, добавились в базе, придется в Excel выгружать и искать отличия ?
Очень помогла бы функция сравнения с подсветкой строк с добавленными и удаленными объектами. И возможность сортировки не только по размеру, но и по другим столбцам при клике на заголовок колонки.

Но это все хотелки, а за уже имеющееся огромное спасибо!
Очень помогло.
44. Рамиль Баширов (bashirov.rs) 03.12.14 13:46
(29) Istur, не важно у кого информативнее, человек старался - делал. Пусть ваша более информативна - но может кому-то достаточно такой информации.
45. Константин Шалаев (dr2c) 18.12.14 16:56
Обработку подключил, статистика собралась, но "Имя метаданных" пусто (PostgreSQL)! Что не так?
Прикрепленные файлы:
46. Юлия Романова (Юля789) 19.03.15 04:42