Мазмұнға өту
Tez Base

Обработка на Инфостарте · 10 SM

Перенос на MS SQL отчитался успехом, а две даты стали одной

Штатный перенос между СУБД завершается кодом 0, счётчики строк сходятся до единицы. Строки на месте, испорчены значения внутри них, и приёмка по количеству строк этого не видит.

Обработка платная, 10 SM. Проверена на УПП (8.3.20, MS SQL), УТ 11.5 (8.3.27, MS SQL) и базе на PostgreSQL 17. Встречное направление, переезд на PostgreSQL, закрывает отдельная обработка.

На тестовом переносе бухгалтерской базы с PostgreSQL 17 на MS SQL Server 2022 так и вышло. Код возврата 0, шесть контрольных таблиц совпали по числу строк. При этом в одной из 11 396 таблиц даты 01.01.0001 и 02.01.0001 превратились в одну и ту же 01.01.1753. Всё предупреждение уместилось в одну строку stderr длиной 208 байт.

Второй тихий отказ сидит в индексах. У MS SQL предел ключа кластерного индекса 900 байт, некластерного 1700 начиная с версии 2016, у PostgreSQL около 2704. Индекс шире предела создаётся с предупреждением, пока фактические данные влезают, и падает позже, на первой длинной записи. К этому моменту связь с переездом уже никто не видит.

Обработка ловит оба случая до переноса. Её запускают на базе-источнике, работает она только средствами платформы: к СУБД не подключается, скриптов для администратора не печатает, в базу ничего не пишет и сам перенос не запускает.

Что она проверяет

Даты, которые не переживут смещение

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

Ширину ключа каждого индекса по байтам

Считает по колонкам хранения, поэтому составной реквизит не раздувается вчетверо. Показывает главного виновника: какой реквизит даёт основную часть ключа и что с ним делать.

Свои объекты отдельно от служебных таблиц

Индексы ваших объектов чинятся укорачиванием реквизита или снятием индексирования. Служебные таблицы платформы руками не чинятся вовсе, им нужен свежий релиз платформы или приёмник новее. Поэтому они стоят в разных узлах отчёта.

Что изменит версия приёмника

Отдельный узел считает, сколько отказов снимет переход с MS SQL 2014 на 2016 и сколько останется в любом случае. На 2014 и старше предел 900 байт действует для любого индекса.

Говорит, чего не видит

Тип индекса платформа не сообщает, поэтому ключ от 901 до 1700 байт помечен вниманием, а не отказом. Если проверка дат упёрлась в бюджет времени, число недосмотренных таблиц стоит в отчёте отдельной строкой.

Как выглядят находки на живых базах

Строки из прогонов на двух разных базах, складывать их числа нельзя: УТ 11.5 на платформе 8.3.27 и УПП на 8.3.20. Вердикты в обработке называются КРИТИЧНО, ВНИМАНИЕ, НОРМА и ИНФО.

Показатель Значение Как надо Вердикт Что это значит
Даты раньше 1753 года при смещении 0, УТ 11.5 41 675 значений в 119 реквизитах ноль чинить все станут 01.01.1753 при коде возврата 0; при смещении 2000 переносятся без потерь
Ключ индекса РегистрСведений.ЛогированиеПакетовОбмена, УТ 11.5 2167 байт до 1700 некластерный, до 900 кластерный чинить главный вклад реквизит Идентификатор, 2058 байт из 2167: укоротить или снять индексирование
Ключ хранилища настроек, служебная таблица, УПП на 8.3.20 1152 байта до 900 кластерный внимание создаётся без ошибки, пока реальные ключи короткие; на базе с платформой 8.3.27 этот ключ 556 байт
Даты при смещении 2000 под границу не попадает ничего ноль норма значение по умолчанию у ibcmd, ключ --target-date-offset
Сверка расчёта ширины с самой СУБД 59 из 59 шире 900, 26 из 26 шире 1700 совпадение по sys.index_columns инфо контрольные индексы на 1152, 2107 и 1024 байта сошлись до байта

Разбор результата

Ни одна из этих строк не видна штатными средствами переноса: код возврата 0, число строк сходится. Даты чинятся выбором смещения до создания базы-приёмника, широкие ключи своих объектов укорачиваются в конфигурации, а для служебных таблиц решение одно: платформа посвежее или приёмник посвежее.

Как пользоваться

  1. 01

    Открыть на источнике

    На той базе, которую собираетесь переносить. Платформа 8.3.20 и новее, управляемые формы, права на открытие внешних обработок и чтение данных.

  2. 02

    Задать приёмник

    Смещение дат, которое поставите новой базе (по умолчанию 2000), и версию MS SQL Server. Бюджет проверки дат по умолчанию 10 минут.

  3. 03

    Проверить базу

    Прогон занимает от десяти секунд до нескольких минут. Проверка дат по УТ 11.5 обошла 1 480 таблиц за 10 секунд.

  4. 04

    Разобрать КРИТИЧНО и ВНИМАНИЕ

    Внутри каждого вопроса объекты с именами как в конфигураторе и что с ними делать. Справка на девять вопросов открывается без интернета.

Өзіңіз шеше алмай жатырсыз ба? Жазыңыз, бірге қараймыз

Регламенттік қызмет көрсетуді база тұрақты жұмыс істейтіндей, бэкаптар кепілді түрде қалпына келетіндей және дискілер кенет таусылмайтындай баптаймыз.

Құны
450 000 ₸-денбір реттік баптау; сүйемелдеу - айына 150 000 ₸-ден; салықтарсыз

Тақырып бойынша талдаулар

Перенос базы 1С с PostgreSQL на MS SQL: смещение дат, индексы и приёмка

Справочник к переезду базы 1С с PostgreSQL на MS SQL Server через ibcmd infobase replicate: какое смещение дат ставить и как узнать текущее, какие ключи индексов шире 900 байт создадутся молча и при чём тут версия SQL Server, чем принимать перенос вместо подсчёта строк. С регламентом по этапам и замерами на трёх базах.

Уникальный индекс в PostgreSQL пропускает дубли с NULL: найти, посчитать, починить

Методика для служебных таблиц рядом с базой 1С: один запрос к каталогу PostgreSQL находит все уникальные ключи с необязательными колонками, второй считает, какая доля строк идёт мимо защиты. Дальше ремонт по версиям: NULLS NOT DISTINCT с 15-й, частичные индексы до неё, и проверка повтором в транзакции с откатом. Все запросы прогнаны на PostgreSQL 17.

Миграция 1С на PostgreSQL: как проверить базу до переезда и не потерять ночное окно

Переносили боевую базу 276 ГБ с MS SQL на PostgreSQL. Перенос встал четыре раза подряд, каждый раз через час и без единого сообщения об ошибке. Виноват оказался неразрывный пробел в служебном регистре и то, как PostgreSQL сравнивает строки через ICU. Здесь полная версия: почему перенос молчит, две гипотезы, которые не подтвердились, готовый скрипт поиска проблемных строк и чек-лист перед миграцией.

PostgreSQL для 1С: настройка, обслуживание и миграция без иллюзий

Бизнес массово переходит на PostgreSQL - из-за лицензий и импортозамещения. Разбираем честно: чем обслуживание PostgreSQL отличается от MS SQL, какие параметры настраивают под 1С, на какие грабли наступают при миграции и почему PostgreSQL не "быстрее по умолчанию" - без настройки он тормозит.

Инфостарттағы карточка →

Жиі қойылатын сұрақтар

Обработка меняет данные или подключается к СУБД?

Нет. Она только читает метаданные, структуру хранения и агрегаты через язык запросов 1С, к серверу баз данных не подключается и скриптов для администратора не печатает. В информационную базу ничего не пишет и сам перенос не запускает.

На какой базе её запускать - на PostgreSQL или на MS SQL?

На источнике, то есть на базе, которая сейчас живёт на PostgreSQL, до переноса. Расчёт идёт по метаданным и структуре хранения, а ширина ключа считается по правилам MS SQL: это ответ на вопрос, что получится в приёмнике.

Почему это опаснее, чем кажется, зачем вообще проверять до переноса?

Штатный перенос завершается кодом 0, и число строк до и после совпадает до единицы. Сломанными оказываются значения внутри строк - например, даты раньше 1753 года при нулевом смещении схлопываются в 01.01.1753. Сверка по количеству строк такой прогон пропускает целиком.

Что означает смещение дат?

Это смещение, указанное для целевой информационной базы. При смещении 0 даты раньше 1753 года перенос не переживают - платформа кладёт их в 01.01.1753. При смещении 2000 любая дата платформы попадает в допустимый диапазон, это и значение по умолчанию у ibcmd.

Индекс шире предела - это точно поломка?

Нет, и в этом неприятность. SQL Server создаёт такой индекс с предупреждением, пока фактические данные в предел влезают, а падает позже, на первой длинной записи. Пороги: 900 байт кластерный ключ, 1700 некластерный начиная с версии 2016; на 2014 и старше 900 везде.

Что нужно для запуска и на чём она проверена?

Платформа 8.3.20 и новее, управляемые формы, права на открытие внешних обработок и чтение данных. Проверена на УПП (8.3.20), УТ 11.5 (8.3.27) на MS SQL и на базе PostgreSQL 17. Встроенная справка на девять вопросов открывается без интернета.

1С жүйеңізге тегін экспресс-аудит

1-2 күнде базаңызды қарап, өнімділік қайда жоғалып жатқанын табамыз және не істеу керегін айтамыз. Міндеттемесіз.

Тегін экспресс-аудит алу

Тапсырманы талқылайық

Ең жылдамы WhatsApp: тапсырма туралы бірер жол жазыңыз, жұмыс күні ішінде жауап береміз.

[email protected]

Өтінімді формамен қалдыру ыңғайлырақ