Просмотр задачи
Номер | Проект | Категория | Видимость | Создан | Изменен |
---|---|---|---|---|---|
0001559 | RasKon | Пожелания | публичная | 2017-08-17 13:26 | 2021-07-30 22:27 |
Инициатор | ADGroup | Ответственный | ADGroup | ||
Приоритет | обычный | Влияние | малое | Воспроизводимость | не проверялась |
Состояние | закрыта | Решение | решена | ||
Целевая версия | 10.05 | Решена в версии | 10.05 | ||
Тема | 0001559: Перенос работы с базой данных в MSSQL. | ||||
Описание | - | ||||
Метки | Нет связанных меток. | ||||
Количество обращений | |||||
Срок реализации (дней) | |||||
Стоимость | |||||
Планируемая дата | |||||
|
Замечательная мысль с пятью НО! 1. Если информация в СУБД будет храниться в открытом виде. Если организации нужна конфиденциальность, сисадмин может реализовать ее средствами самой SQL. 2. Назначения полей, первичные и внешние ключи должны быть наиболее полным образом описаны. 3. Максимально воздержаться от составных первичных ключей и первичных ключей по полям с типами char и nvarchar. 4. Базу формировать без индексов. Каждый сисадмин сможет проанализировать производительность своей БД и, при необходимости, определить необходимые для них поля, создать индексы. 5. Заменить программный код Раскон средствами SQL там, где это возможно (агрегатные, скалярные, табличные функции, триггеры, хранимые процедуры, ограничивающие ключи и т.д.). Это: - уменьшит трафик - снимет нагрузку на клиенте - максимально оправдает использование SQL - даст возможность повторно использовать код T-SQL вместо создания API Раскон (если такой планируется), отказаться от REST - уменьшит вероятность возникновения труднодиагностируемых ошибок машинного (скомпилированного) кода. В противном случае переход почти не имеет практического смысла. |
|
1. В первом представлении база будет иметь туже структуру что и в Access. Изменение структуры это отдельный вопрос и не будет делаться сразу иначе перевести базу на MSSQL вообще не удастся если делать все сразу. 2. Пока там толком нечего описывать кроме первичных ключей и названий таблиц. 3. Таких нет но составные первичные ключи не исключаю в будущем, но это будет видно ближе к реализации при условии если без них производительность будет низкая. 4. База содержит индексы по первичным ключам. 5. Это на перспективу, сейчас об этом тяжело говорить, так как требуется обратная совместимость. Для дилерских безлимитных программ нужна например максимально простая установка и по умолчанию они по прежнему будут работать на Access, иначе процесс установки и поддержки данных клиентов может резко усложнится. По этому хранимые процедуры будут вводится с осторожностью и опять же не сразу. Перевод на MSSQL в любом случае имеет смысл как минимум ради стабильности работы базы, Вы по своему опыту знаете о таких проблемах на больших базах. Плюс минимальный функционал по транзакциям и блокировкам, которые в Access вроде как есть но их работа вызывает большие вопросы, что опять же критично на больших базах и большом числе пользователей. |
|
Реализован первый тестовый вариант работы с базой данных в MSSQL сервере. Тестирование проводилось на MSSQL Express 2017. Функции резервного копирования и восстановления базы из архива работают нормально. Сначала создается архив текущей базе в формате "*.zp", потом из него с помощью "утилит баз данных" восстанавливаем базу уже в MSSQL. Для настройка соединения с базой используется Connection String, который можно настраивать в интерфейсе из специального окна программы. Средство универсальное, теоретически можно будет в будущем расширить и на другие СУБД. Работа с базой также сделана максимально универсальным образом чтоб на данном этапе не привязываться к синтаксису и специализированным возможностям конкретной СУБД. На данном этапе программа не умеет сама создавать базу данных, по этому после инсталляции MSSQL нужно вручную выполнить запрос "create database raskondb" (имя базы можно создавать любое, для примера указано raskondb), после этого в программе нужно настроить Connection String на соединение с этой базой данных, после этого при первом старте программы сделать восстановление базы из архива с помощью "утилит базы данных". Режим работы с базой через Connection String задается с помощью коммандной строки и параметра -usedbconstr. Более подробная инструкция будет позже. |
|
Инструкция по переносу базы на MSSQL: 1. Создаем принудительно архив базы данных в новом формате. Для этого запускаем программу через командную строку с дополнительными параметрами, в результате программа в папке data создаст архив базы в файле с именем "yyyymmdd_hhnn.zp", где yyyymmdd_hhnn текущая дата и время: ccalc.exe -usefdacc -arhivebase 2. Необходимо создать connection string и создать саму базу данных на сервере MSSQL. 2.1. Запускаем программу как обычно ярлыком с рабочего стола, на окне ввода имени пользователя и пароля ничего не вводим и сразу нажимаем кнопку "утилиты базы данных". Откроется окно утилит, нажимаем на клавиатуре F10 и на окне утилит появится скрытая кнопка "Редактировать Connection String". Нажимаем, открывается редактор. В редакторе на первой вкладке Definition устанавливаем Driver ID значение "MSSQL", ниже где значение Server выбираем (прописываем) сервер. Прописываем User_Name и Password для подключения к серверу или ставим параметр OSAuthent=Yes если сервер поддерживает аутентификацию на уровне операционной системы. Нажимаем кнопку Test для проверки соединения с сервером. 2.2. Необходимо создать базу данных на MSSQL сервере. Если база данных уже создана ранее и создана вручную другими средствами, то пропускаем этот пункт. Открываем вкладку "SQL Script" и вписываем скрипт "create database raskondb", где raskondb это имя базы данных (можно указать любое имя, только запомните его). Нажимаем кнопку "Run ...". Возвращаемся на вкладку Definition. 2.3. В параметре Database прописываем raskondb (имя базы данных). Снова нажимает "Test" для проверки подключения к базе. 2.4. Закрываем редактор нажав кнопку "OK", закрываем окно утилит и на окне ввода логина и пароля нажимаем "Отмена" чтоб закрыть программу. 3. Запускаем программу в режиме работы через Connection String. Для этого запускаем программу через командную строку с параметром: ccalc.exe -usedbconstr 4. При первом запуске программы после создания базы данных (база данных пока пустая) необходимо восстановить базу данных из архива, чтоб она восстановилась уже в MSSQL. Для этого запускаем программу, заходим в "утилиты базы данных" и выбираем в списке архивов наш свежий архив "yyyymmdd_hhnn.zp", где yyyymmdd_hhnn текущая дата и время на момент создания архива из пункта 1. Важно: другой архив выбирать нельзя так как он будет в старом формате, и такой архив нельзя развернуть в MSSQL. 5. После успешного восстановления архива базы в MSSQL можно ввести логин и пароль для входа в программу и работать с ней. Програму нужно будет каждый раз запускать как написано в пункте 3. Важно: действия из пункта 1 принудительно формируют архив в новом формате, внешне это никак не отличается от старого, только там другая структура файла. Плюс архивы в новом формате можно создавать на работающей программе, когда другие пользователи работают с базой. Когда программа работает с MSSQL (в режиме работы через Connection String) все дневные архивы будут автоматически создаваться уже в ном формате даже если база занята другими пользователями, аналогично функция создания дилерской базы данных будет работать без закрытия программы другими пользователями, но этот файл не поймут дилерские программы без дополнительных действий. Об этом лучше написать отдельно. Работа с дилерскими программами потребует отдельных специальных действий (из-за архивов нового формата). |
Эта задача отмечена что решена. Евли Вы думаете что это не так, пожалуйста откройте её повторно и разьясните почему. |
|
Сторонники: | panas vovaukrainec |
Нейтралитет: | Еще не проголосовало нейтрально ни одного пользователя за данную задачу. |
Оппоненты: | Еще не проголосовало ни одного оппонента за данную задачу. |
Дата изменения | Пользователь | Поле | Изменить |
---|---|---|---|
2017-08-17 13:26 | ADGroup | Новая задача | |
2017-08-17 13:26 | ADGroup | Состояние | новая => назначена |
2017-08-17 13:26 | ADGroup | Ответственный | => ADGroup |
2017-10-06 11:32 | Stealth7777 | Комментарий добавлен: 0001605 | |
2017-10-06 11:49 | ADGroup | Комментарий добавлен: 0001608 | |
2018-03-02 12:34 | ADGroup | Комментарий добавлен: 0001743 | |
2018-03-02 12:34 | ADGroup | Целевая версия | 10.XX (готовится к выпуску) => 10.05 |
2018-03-02 12:36 | ADGroup | Комментарий изменен: 0001743 | |
2018-03-02 12:36 | ADGroup | Комментарий изменен: 0001743 | |
2018-03-02 12:40 | ADGroup | Комментарий изменен: 0001743 | |
2018-03-02 12:40 | ADGroup | Комментарий изменен: 0001743 | |
2018-03-08 10:14 | ADGroup | Состояние | назначена => закрыта |
2018-03-08 10:14 | ADGroup | Решение | открыта => решена |
2018-03-08 10:14 | ADGroup | Решена в версии | => 10.05 |
2018-04-13 22:40 | ADGroup | Комментарий добавлен: 0001767 | |
2021-07-30 21:17 | ADGroup | Комментарий изменен: 0001767 | |
2021-07-30 22:27 | ADGroup | Комментарий изменен: 0001767 | |
2021-07-30 22:27 | ADGroup | Комментарий изменен: 0001767 | |
2021-07-30 22:27 | ADGroup | Комментарий изменен: 0001767 |