gifts2017

Отчёт по индексам в базах 1С (под MSSQL)

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

Отчёт покажет соответствие индексов в ИБ SQL индексам в конфигурации 1С. Лишние, недостающие и некорректные.

В процессе обновлений ИБ 1С индексы на SQL могут ломаться, некоторые из них не создаются, некоторые пропадают.

Со временем индексы в базе SQL перестают соответствовать индексам, записи о которых содержатся в конфигурации ИБ 1С.

Этот отчёт позволяет провести анализ: сравнивает имеющиеся на SQL индексы с имеющимися в конфигурации, показывает лишние, недостающие, а также индексы, идентичные по полям, но различающиеся по именам.

Отчёт формируется в документ OpenOffice (он должен быть установлен) с использованием Com-соединения 1С и подключения к SQL через SQLOLEDB.

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

Версия ComConnector устанавливается в начале (в исходном файле под 8.3)

_v83axjs   =   new ActiveXObject("V83.ComConnector");

Имя обрабатываемой базы задается как обычная строка подключения к 1С (можно скопировать из окна выбора баз)

var _conn_string  =   'Srvr="доменное_имя_сервера1с";Ref="имя_базы_1с"';

Параметры подключения к ИБ задаются через данные переменные

var _sql_server   =    "доменное имя sql сервера";
var _sql_user      =    "имя пользователя для sql сервера";
var _sql_pass     =    "пароль пользователя для sql сервера";
var _1c_user       =    "имя пользователя ИБ 1с";
var _1c_pass      =    "пароль пользователя ИБ 1с";

Пояснения к отчёту:

  • Индексов на SQL - количество индексов, имеющихся в базе непосредственно на SQL
  • Индексов в 1С - количество записей об индексах, которые должны присутствовать в соответствии с конфигурацией 1С
  • Идентичных индексов - количество индексов на SQL и в 1С, полностью идентичных по именам и полям
  • Идентичных по полям - количество индексов на SQL и в 1С, идентичных по полям индекса, но с отличающимися именами. Данное различие не принципиально - имя индекса не влияет на его функционал
  • Идентичных по именам - количество индексов на SQL и в 1С, идентичных по именам индекса, но с отличающимися полями. Такие индексы можно смело считать некорректными.
  • Лишних индексов SQL - индексы, которые есть на SQL, но записей о которых нет в конфигурации 1С.
  • Недостающих индексов 1С - записи об индексах в конфигурации 1С, которые физически отсутствуют в ИБ на SQL.

Описание полей отчёта:

  • sql_table - Имя таблицы SQL, которой принадлежит индекс
  • sql_index - Имя индекса на SQL
  • sql_fields - поля индекса на SQL
  • 1c_table - имя таблицы, которой принадлежит индекс, в соответствии с конфигурацией 1С
  • 1c_index - Имя индекса в соответствии с конфигурацией 1С
  • Поля индекса 1С - поля индекса в соответствии с конфигурацией 1С
  • ИмяТаблицы 1С - имя таблицы, которой принадлежит индекс, в соответствии с конфигурацией 1С в именах 1С
  • Метаданные 1С - метаданные таблицы, которой принадлежит индекс, в соответствии с конфигурацией 1С в терминах 1С
  • Назначение 1С - назначение таблицы, которой принадлежит индекс, в соответствии с конфигурацией 1С в терминах 1С
  • index_id(clustered?) - тип существующего индекса на SQL (кластерный или нет)
  • is_unique - тип существующего индекса на SQL - уникальный ли?

Мною разработан и оттестирован механизм полного восстановления всех индексов и их свойств методами 1С. Данный механизм может быть применён для восстановления индексов (приведение в соответствие конфигурации) на очень больших базах 1С. Механизм был протестирован на ИБ размером >30 Терабайт.

Открыт для общения по поводу восстановления индексов в Вашей большой базе.

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

Наименование Файл Версия Размер Кол. Скачив.
Скрипт формирования отчёта об индексах
.js 26,92Kb
12.05.16
18
.js 26,92Kb 18 Скачать

См. также

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

Комментарии

1. Антон Стеклов (asved.ru) 18.05.16 08:47
В процессе обновлений ИБ 1С индексы на SQL могут ломаться, некоторые из них не создаются, некоторые пропадают.
Со временем индексы в базе SQL перестают соответствовать индексам, записи о которых содержатся в конфигурации ИБ 1С.


Скажите, Вы обращались с этой проблемой в 1С?

Также вызывает сомнения сам факт существования 1С-базы в 30Тб. Мне с ходу видится только две возможности дойти до такого размера - либо хранить в БД файлы, причем много, либо не знать про бэкап журнала транзакций.
2. Aleksey Zhuchkov (MrWonder) 18.05.16 13:53
(1) asved.ru, Нет, в 1с я не обращался по этой проблеме. Как-то самому решить получилось ))
А поводу базы в 30 ТБ - убеждать я Вас не собираюсь. И если Вы полагаете, что ИБ такого размера обслуживают лузеры, которые не знают как это делать, то это всего лишь Ваше мнение.
PS. Если честно, насчёт 30 ТБ я наврал. Реальный размер - 32 ТБ ))))
3. Антон Стеклов (asved.ru) 18.05.16 14:21
И если Вы полагаете, что ИБ такого размера обслуживают лузеры, которые не знают как это делать, то это всего лишь Ваше мнение


Да вот потому и интересуюсь, как вы дошли до жизни такой, что не полагаю.
4. Aleksey Zhuchkov (MrWonder) 18.05.16 14:58
(3) asved.ru, Просто очень много данных. И это при том, что разные подсистемы по разным базам разнесены.
5. Вадим Халилов (admin@bzaimy.com) 12.07.16 18:07
У меня при формировании пишет ошибку "Несоответствие типов (параметр 1)" почему?
6. Aleksey Zhuchkov (MrWonder) 14.07.16 08:25
(5) admin@bzaimy.com, пришлите мне лог alexey гав-гав yandex.ru
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа