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


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!

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

51 Comments

  1. ARL

    Очень понравилась обработка. Давно собирался посмотреть величины таблиц, да так и несобрался. А тут всё супер удобно. Даже пожеланий никаких не нашлось 🙂 Благодарю!

    Reply
  2. Seregalink

    Да спасибо, хорошая вещь, и главное удобная!

    Reply
  3. gr0ck

    Хорошо, и вовремя:)

    Reply
  4. orsprog

    Обработка замечательная…а главное название подходящее

    Reply
  5. orsprog

    (1) ARL, мне тоже нравится

    Reply
  6. Djonny

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

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

    8.2.14.519

    sql 2005

    Reply
  7. pt_olga

    плюс! нужная обработина! сейчас буду пробовать

    Reply
  8. andboss
    Djonny пишет:

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

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

    8.2.14.519

    sql 2005

    Не отображается в каждой строке метаданных? У себя в БД наткнулся на ситуацию, когда для существующей таблицы в SQL нет соответствия в метаданных 1С! Как это объяснить — видимо так работала платформа, сбой в каких то релизах, БД тянется еще начиная с версии 1С 8.0. В итоге с десяток таблиц типа «справочник» и несколько «документов» присутствуют только в виде физических таблиц MS SQL, функция ПолучитьСтруктуруХраненияБазыДанных(,Истина) не возвращает таблиц с такими именами!

    Reply
  9. Djonny

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

    Reply
  10. Armando

    1. Не работает в управляемом приложении

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

    3. Таблица не поддается анализу. Даже что бы выгрузить в Excel в удобоваримом виде, надо сделать несколько лишних движений. Напрягает.

    Reply
  11. andboss
    Djonny пишет:

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

    И указанная БД MS Sql соответствует текущей используемой платформой, из которой запускаете обработку?

    Объяснение нахожу только одно: конфигурация из которой запущена обработка и указанная БД в настройках — две различные базы данных!

    Reply
  12. Misanets

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

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

    Reply
  13. andboss
    Misanets пишет:

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

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

    Добавил NTLM-аутентификацию

    Reply
  14. echo77

    если бы под 8.1 такое было.

    вот еще хорошая штука http://infostart.ru/public/19463/

    Reply
  15. Zoomby

    спасибо автору 🙂 надо попробовать потестить

    Reply
  16. Djonny

    (11) Вот тут может быть!

    запускал на платформе, отличной от той, на которой база.

    Завтра проверю!

    Reply
  17. andboss
    echo77 пишет:

    если бы под 8.1 такое было.

    Да вроде нет препятствий перенести этот код в обработку созданную в 8.1.

    Если не ошибаюсь, функция ПолучитьСтруктуруХраненияБазыДанных() в 8.1 существует, так что всй должно взлететь)

    Reply
  18. Trof@

    В мене помилка «Ошибка установки соединения: {ВнешняяОбработка.SQLБазомер.МодульОбъекта(12)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Ошибка входа пользователя «admin»», але коли включаю Аутентифікацію то все працює. З чим це може бути повязане?

    Reply
  19. Trof@

    (18) Вибачайте вже побачив аналогічне повідомлення.

    Reply
  20. Djonny

    (11) Точно, запустил на той платформе, на которой работает база,

    и имя метаданных отображается

    Спасибо!

    Reply
  21. Misanets

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

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

    Reply
  22. andboss
    Misanets пишет:

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

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

    Обработка возвращает физически занятый размер под структуры MS SQL внутри mdf файла (-ов). Сам mdf файл как правило всегда больше, и не отражает физически занятое пространство под структуры, для уменьшения можете использовать SHRINKDATABASE

    http://msdn.microsoft.com/ru-ru/library/ms190488.aspx

    Т.е в вашем случае SHRINKDATABASE выбросит пустое место из mdf и файл станет чуть больше 45,1 гб

    Reply
  23. Misanets

    Благодарю, сделаем, проверим.

    Reply
  24. ghost_51

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

    Reply
  25. andboss
    ghost_51 пишет:

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

    Уже есть, качайте)

    Reply
  26. sound

    Может на СКД переписать?

    Reply
  27. Twirus

    Спасибо,как раз искал.

    Reply
  28. infostar81

    попробуем, спасибо

    Reply
  29. Istur

    (0) Посмотрел обработку и не понял смысла ее появления, и чем она лучше моей Анализ размеров таблиц, метаданных, различная статистика для клиент-серверного (SQL) и файлового вариантов базы, ну кроме еще поддержки PostgreSQL. Моя же показывает все в удобном виде, написана на СКД, дает возможность показывать информацию по выбранным метаданным, а не только по всем, выводить информацию не только в килобайтах, но и в мегабайтах и гигабайтах, накладывать различные отборы, и просто выводимый вид гораздо более понятен. У одного вида метаданных может быть несколько таблиц, в моей обработке это сгруппировано, в данной же обработке выводится простыня, не упорядоченная даже по наименованию и типу метаданных. В общем я не понимаю ни смысла данной обработки и ее плюсов, ни плюсов за эту саму обработку. И даже немного обидно, потому что подавляющая часть времени мною был потрачена именно на удобность и приятность использования, здесь же автор вообще этим не заворачивался, и оказывается это никому собственно и не надо, народ проглотит все что угодно. Мда…

    Reply
  30. igor_aviant

    {ВнешняяОбработка.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

    Reply
  31. andboss

    На какой версии PostgreSQL пробуете? На 9.x работает, возможно на более ранних нет функции pg_table_size

    Reply
  32. igor_aviant

    У нас PostgreSQL версии 8.4.3

    Reply
  33. sipoju

    Вещь хорошая, на MS SQL работает нормально, но PostgreSQL у нас ниже 9, стабильная для 1С 8.4.3-3.1C, так что подождем пока

    Reply
  34. Aleskey_K

    Спасибо за обработку.

    Reply
  35. Dethmond

    Спасибо, как раз то, что нужно

    Reply
  36. clab

    Для отображения метаданных (кого не работает) в нашем случае помогло привести записи в таблице в нижний регистр

    Таблица = ПолучитьСтруктуруХраненияБазыДанных(,Истина);

    //

    для Каждого СтрокаТаб из Таблица цикл

    СтрокаТаб.ИмяТаблицыХранения=НРег(СтрокаТаб.ИмяТаблицыХранения);

    КонецЦикла;

    //

    Да и спасибо автору за полезную вещь

    Reply
  37. aximo

    Интересная сервисная штука, даже для того, чтобы сопоставить таблицы бд — объектам конфигурации

    Reply
  38. НатальяАлекс

    Очень интересно. То есть она и сопоставляет таблицы? И вес показывает?

    Reply
  39. elena_77

    Спасибо за обработку. Именно сейчас ищем причину, по которой база перестала загружаться из dt архива. Во время загрузки вылетает с ошибкой. Размер таблицы превышает 4 гб. Вот нам срочно понадобилось определить, какая из таблиц так распухла.

    Reply
  40. Sniper9mm

    спасибо большое !!!

    Reply
  41. air_mike

    (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

    Reply
  42. mikhailovaew

    (29) Istur, не переживайте: у Вашей обработки и плюсов больше, и скачиваний )

    Reply
  43. Tapochki-tmn

    Не хватает функции сравнения двух и более баз на предмет чего поменялось.

    У нас вот база за последний месяц в два раза в размерах выросла.

    Запустил в рабочей базе, запустил в копии месячной давности.

    Вижу, регистр ВерсииОбъектов вышел на лидирующие позиции. Вспомнил, что месяц назад добавлял объекты для контроля версий. Собственно, на него и так думал, но после просмотра результатов обработки, подозрения подтвердились.

    Однако, это по одному объекту стало понятно, а чтобы выявить какие еще объекты, к примеру, добавились в базе, придется в Excel выгружать и искать отличия ?

    Очень помогла бы функция сравнения с подсветкой строк с добавленными и удаленными объектами. И возможность сортировки не только по размеру, но и по другим столбцам при клике на заголовок колонки.

    Но это все хотелки, а за уже имеющееся огромное спасибо!

    Очень помогло.

    Reply
  44. bashirov.rs

    (29) Istur, не важно у кого информативнее, человек старался — делал. Пусть ваша более информативна — но может кому-то достаточно такой информации.

    Reply
  45. dr2c

    Обработку подключил, статистика собралась, но «Имя метаданных» пусто (PostgreSQL)! Что не так?

    Reply
  46. Юля789

    Неистово плюсую!

    Reply
  47. chukawata

    (45) В режиме совместимости 8.2.13 ряд метаданных (например, константы, регламентные задания) хранятся в одной общей таблице, поэтому их собственные имена в данном поле не отражаются. Возможно, у Вас такая ситуация.

    Reply
  48. XOCTEP

    (36)

    Таблица = ПолучитьСтруктуруХраненияБазыДанных

    На Postgre не отображались имена метаданных. Ваш способ помог исправить проблему.

    Reply
  49. NurikRistart

    На windows server 2016, база на PSQL, упорно не хочет видеть psql odbc, кто нибудь проверял на сервер 2016?

    Reply
  50. sapervodichka

    вот есть по-свежее https://infostart.ru/public/1093355/ отчетиком

    Reply
  51. Дмитрий74Чел

    MS SQL 13 (2016), win server 2016 — работает. Единственное, не выводилисьт имена метаданных — потому что «ИмяТаблицыSQL» теперь содержит «[dbo].[_Name]» вместо «_Name»; как следствие не срабатывет поиск

    СтрокаДанные1С = Таблица.Найти(Запись.ИмяТаблицыSQL, «ИмяТаблицыХранения»);

    Решается парой строк кода.

    Reply

Leave a Comment

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