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 не будет опубликован. Обязательные поля помечены *