Обработка под управляемые формы, для баз развернутых на MS SQL сервер (обработка не должна использоваться для баз, созданных платформами 1С, так как это нарушает лицензионное соглашение).
Обработка позволяет посмотреть структуру таблиц базы данных (с помощью стандартного метода ПолучитьСтруктуруХраненияБазыДанных) имена таблиц, полей, индексы.
Методами SQL сервера (через ADODB.Connection, требуется указание имени и пароля администратор SQL) обработка позволяет:
- получить список баз на SQL сервере
- получить таблицы по выбранной базе на SQL сервере (с информацией о размере и числе строк)
- получить список индексов перечня таблиц базы, полученных либо методом 1С, либо методом SQL с информацией о фрагментации индексов (только в образовательных целях, это запрещается лицензионной политикой 1С).
- выполнить реиндексацию (REBILD) с обновлением статистики.
Индексы получаются методами SQL (не методами 1С). Опытным путем сделан вывод, что индексы, которые 1С указывает для таблиц, могут отличаться от индексов в SQL (вероятно, 1С показывает "плановые индексы" для таблиц): у "реальных" индексов могут отличаться наименования, состав индекса. Если удалить индекс, платформа всё равно будет показывать, что индекс существует, если добавить индекс, платформа его не увидит (методом ПолучитьСтруктуруХраненияБазыДанных). Поэтому для определения списка индексов используются средства MS SQL.
Перед началом работы на последней закладке (Авторизация) следует указать данные для доступа к SQL.
Сценарии использования:
1. Получение списка таблиц базы данных средствами 1С. Реиндексация всех или части таблиц (только в учебных и образовательных целях, смотрите лицензионное соглашение 1с).
1.1. На закладке "Таблицы базы" устанавливаем флаг "Имена базы данных", нажимаем заполнить
1.2. Переходим на закладку "Работа с индексами" (на закладке авторизации должно быть указано имя текущей базы на SQL сервере, и остальные данные для подключения). Флаг "из SQL базы" сброшен. Флаг указывает, что индексы нужно получать из перечня таблиц на закладке "Таблицы SQL базы" иначе (в текущем сценарии с закладки "Таблицы базы"
1.3. Нажимаем получить индексы
1.4. Выделяем все строки (Ctrl-A) или интересующие нас индексы или таблицы. Нажимаем фрагментация. Происходит запрос к SQL серверу, определяется фрагментация таблиц. Фрагментация вычисляется для выделенных строк.
1.5. Можно удалить из списка индексы с фрагментацией ниже указанного значения (к примеру меньше процента или 0.1 процента): в поле "предел фрагментации" вводим значение и нажимаем "Удалить ниже предела"
1.6. Кнопки REBUILD", "REORGANIZE" выполняют перестроение или реорганизацию индекса. Если у вас версия SQL 2016 или выше кнопка "REORGANIZE COMPRESS" не вернёт ошибку, а выполнит реорганизацию со сжатием (флаг COMPRESS появляется начиная с 2016 версии SQL).
1.7. После перестроения или реорганизации индекса можно еще раз нажать "Фрагментация" и проверить уменьшилась ли она.
2. Получения списка таблиц базы средствами SQL.
2.1. Переходим на закладку "Таблицы SQL базы", внутри две закладки "Список баз" и "Таблицы баз".
На первой закладке можно запросить список баз данных выбранного SQL сервера
На второй закладке выбранные базы доступны в поле выбора "Имя базы" (это тот же самый реквизит, что и на закладке "авторизация")
2.2. На закладке "Список баз" получаем список баз на SQL сервере
2.3. На закладке "Таблицы баз" выбираем интересующую базу и нажимаем "Получить таблицы"
Выводится информация по числу записей (Row) в каждой таблице и размеру (Size) в мегабайтах
Есть возможность удалить из списка таблицы меньше указанного размера
2.4. Далее продолжаем работать как в сценарии 1 с пункта 1.2. Флаг "из SQL базы" в данном сценарии должен быть взведён
Обращаем внимание, что закладка "Работа с индексами" требует заполнения всех полей на закладке "Авторизация"!
Работает на любых конфигурациях на УФ.