Технологии Blogger.

Перевод базы с 8.1 на 8.2

>> 21 июня 2012 г.

Задача стояла перевести рабочую базу на 100 пользователей (64Гб) на платформу 8.2. На момент перевода база работала на релизе 8.1.11.67 на MS SQL Server 2005. Особенность заключалась в том, что база изначально была создана со смещением дат 0. При обычной конвертации базы 1С не могла провести пересчет итогов, ругаясь на всякого рода неправильные даты (или пустые).

Прочитать можно здесь:Дата '01.02.0001 0:00:00' не может быть записана в базу данных  

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

Про причину подобной ошибки прочитать можно здесь:
Устанавливаем 1С 8.2. на SQL. Подскажите, что означает галка "Смещение дат"?

Для работы наибольшего количества информационных баз достаточно дат больших 1 января 1753 года. Установка смещения дат 2000 ведет к усложнению обслуживания информационной базы и незначительному снижению производительности, поскольку все даты базы данных получают неестественные значения и требуют преобразования при чтении, записи и использовании.
Решение проблемы

Для изменения смещения базы основным способом было выгрузка базы в файл. После этого необходимо зайти в таблицу "_YearOffSet" и изменить единственное ее значение с 0 на 2000. После этого требовалось загрузить базу из файла обратно, что позволило бы вернуть значения всех дат в норму. Если этого не сделать, то вместо даты 1 января 2012 года, вы увидите январь 4012 года.

Основной принцип изложен здесь:
Как поменять смещение даты с 0 на 2000

Обсуждение темы можно посмотреть здесь:
v8: MS SQL Server нулевое смещение дат. Можно ли установить в процессе работы базы?

Трудозатраты

Сам процесс занимает много времени, если база у вас достаточного размера. К примеру, выполнение бекапирования занимало около часа (база еще находилась на платформе 8.1), выгрузка базы в файл потребовала 45 минут (после того как база была конвертирована на 8.2), и сама загрузка базы из файла занимала от 1,5 до 2,5 часов (после изменения параметра смещения даты). Так же необходимо выделить время на реиндексацию и пересчет итогов.

В моем случае проблема заключалась в том, что на платформе 8.1 программа не осиливала даже выгрузить базу в файл, чтобы не вылететь с ошибкой
Ошибка СУБД: Interface 0c733a7c-2a1c-11ce-ade5-00aa0044773d

Так что стоит закладывать много времени в перевод большой базы на новую платформу. Так как я хотел выполнить этот процесс быстрее, то пришлось три вечера с работы лететь дамой и до 2 ночи заниматься попытками перевода. Каждый вечер натыкался на какую-то проблему, а днем искал пути ее решения. Но в целом, советую заниматься этим на выходных, чтобы все перепроверить три раза, и никто в спину дышать не будет.

Трудности перевода

Но все не так просто. Загрузка базы из файла мне не далась сразу. Программа не могла "осились" этот процесс и в конце концов он завершался ошибкой

Сеанс работы завершен администратором по причине:
Соединение с сервером баз данных разорвано администратором
Microsoft OLE DB Provider For SQL Server: Ошибка подключения
HRESULT=80004005 


Я нашел два варианта решения этой проблемы.

Первый вариант (второй мне не понадобился) заключается в определении пользователям, по которыми запускается сервер 1С и SQL дать больше прав на управление ресурсами сервера (оперативной памяти).

На сервере с 1С Сервером и с MSSQL-сервером заходим в:
Панель управления -> Администрирование -> Локальные параметры безопасности

В открывшейся оснастке:
Локальные политики - Назначение прав пользователя.

В появившемся списке политик находим "Закрепление страниц в памяти", двойной клик по этой политике и в открывшемся окне на закладке "Параметр локальной безопасности" добавляем в список пользователей тех юзеров, под которыми на сервере стартуют 1С Сервер, MSSQL-сервер и клиент 1С(если он на сервере запускается для каких либо целей).

Далее жмём "ОК" и перестартуем севисы MSSQL и 1С сервера.
Желательно те же манипуляции провести с политикой "Настройка квот памяти для процесса". Она находится в этом же списке чуть ниже.

Взято здесь: Ошибка "Сеанс работы завершен администратором"

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

Примечание

При добавлении базы на кластере сервера 1С 8.2 не забудьте изначально указать смещение дат 2000, так как это можно будет сделать только единожды. По умолчанию оно так и стоит.

При прописывании путей к базе для пользователей на последней вкладке необходимо прописать версию предприятия 8.2 либо вообще не заполнять. Иначе программа попытается запустить уже конвертированную базу снова на 8.1, при этом выдав ошибку разных версий.

Подробнее можно прочитать здесь:
Ошибка: Сеанс работы завершен администратором


Отправить комментарий

  © Blogger template Simple n' Sweet by Ourblogtemplates.com 2009

Back to TOP