Перегляд завдання

НомерПроектКатегоріяВидимістьИзменен
0001559RasKonПобажанняГромадський2021-07-30 22:27
ІніціаторADGroup ВідповідальнийADGroup  
ПріоритетЗвичайноВпливатиМалийвідтворюваністьне перевірено
Умова ЗакритіРішенняВирішена 
Целевая версия10.05Решена в версии10.05 
Суб'єкт0001559: Перенесення роботи з базою даних у MSSQL.
Опис-
МіткаПов'язаних ярликів немає.
Кількість звернень
Період реалізації (днів)
Вартість
Запланована дата

Діяльність

Стелс7777

2017-10-06 11 :32

автор ~0001605

Чудова думка з п'ятьма АЛЕ!

1. Якщо інформація в СУБД буде зберігатися у відкритому вигляді.
Якщо організації потрібна конфіденційність, сисадмін може реалізувати її засобами самої SQL.

2. Призначення полів, первинні та зовнішні ключі мають бути найповнішим чином описані.

3) Максимально утриматися від складових первинних ключів і первинних ключів за полями з типами char і nvarchar.

4. Базу формувати без індексів. Кожен сисадмін зможе проаналізувати продуктивність своєї БД і, за необхідності, визначити необхідні для них поля, створити індекси.

5. Замінити програмний код Раскон засобами SQL там, де це можливо (агрегатні, скалярні, табличні функції, тригери, збережені процедури, обмежувальні ключі тощо). Це:
- зменшить трафік
- зніме навантаження на клієнті
- максимально виправдає використання SQL
- дасть можливість повторно використовувати код T-SQL замість створення API Раскон (якщо такий планується), відмовитися від REST
- зменшить імовірність виникнення важкодіагностованих помилок машинного (скомпільованого) коду.

В іншому випадку перехід майже не має практичного сенсу.

ADGroup

2017-10-06 11 :49

адміністратор ~0001608

1. У першому поданні база матиме ту саму структуру що і в Access. Зміна структури це окреме питання і не буде робитися відразу, інакше перевести базу на MSSQL взагалі не вдасться, якщо робити все відразу.
2. Поки там толком нічого описувати крім первинних ключів і назв таблиць.
3 Таких немає, але складові первинні ключі не виключаю в майбутньому, але це буде видно ближче до реалізації за умови якщо без них продуктивність буде низька.
4. База містить індекси за первинними ключами.
5 Це на перспективу, зараз про це важко говорити, оскільки потрібна зворотна сумісність. Для дилерських безлімітних програм потрібна, наприклад, максимально проста інсталяція, і за замовчуванням вони, як і раніше, працюватимуть на Access, інакше процес інсталяції та підтримки даних клієнтів може різко ускладнитися. Тому збережені процедури будуть вводитися з обережністю і знову ж таки не відразу.

Переведення на MSSQL у будь-якому разі має сенс як мінімум заради стабільності роботи бази, Ви зі свого досвіду знаєте про такі проблеми на великих базах. Плюс мінімальний функціонал по транзакціях і блокуваннях, які в Access начебто є, але їхня робота викликає великі питання, що знову ж таки критично на великих базах і великій кількості користувачів.

ADGroup

2018-03-02 12 :34

адміністратор ~0001743

Останні зміни: 2018-03-02 12 :40

Реалізовано перший тестовий варіант роботи з базою даних у MSSQL сервері. Тестування проводилося на MSSQL Express 2017. Функції резервного копіювання та відновлення бази з архіву працюють нормально. Спочатку створюється архів поточної бази у форматі "*.zp", потім з нього за допомогою "утиліт баз даних" відновлюємо базу вже в MSSQL. Для налаштування з'єднання з базою використовується Connection String, який можна налаштовувати в інтерфейсі зі спеціального вікна програми. Засіб універсальний, теоретично можна буде в майбутньому розширити і на інші СУБД. Робота з базою також зроблена максимально універсальним чином, щоб на даному етапі не прив'язуватися до синтаксису і спеціалізованих можливостей конкретної СУБД. На даному етапі програма не вміє сама створювати базу даних, тому після інсталяції MSSQL потрібно вручну виконати запит "create database raskondb" (ім'я бази можна створювати будь-яке, для прикладу вказано raskondb), після цього в програмі потрібно налаштувати Connection String на з'єднання з цією базою даних, після цього під час першого старту програми зробити відновлення бази з архіву за допомогою "утиліт бази даних". Режим роботи з базою через Connection String задається за допомогою командного рядка і параметра -usedbconstr. Більш детальна інструкція буде пізніше.

ADGroup

2018-04-13 22 :40

адміністратор ~0001767

Останні зміни: 2021-07-30 22 :27

Инструкция по переносу базы на 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) все дневные архивы будут автоматически создаваться уже в ном формате даже если база занята другими пользователями, аналогично функция создания дилерской базы данных будет работать без закрытия программы другими пользователями, но этот файл не поймут дилерские программы без дополнительных действий. Об этом лучше написать отдельно. Работа с дилерскими программами потребует отдельных специальных действий (из-за архивов нового формата).


Підтримка спільноти для завдання
Це завдання відзначена тим, що вона вирішена.
Якщо ви вважаєте, що це не так, будь ласка, знову відкрийте його та поясніть, чому.
Прихильників: панас воваукраїнець
Нейтралітет: Жоден користувач ще не проголосував нейтрально за це завдання.
Супротивників: За це завдання ще не проголосував жоден опонент.

Журнал версій

Дата змінення Користувач Поле Зміна
2017-08-17 13:26 ADGroup Новий виклик
2017-08-17 13:26 ADGroup Умова новий => призначений
2017-08-17 13:26 ADGroup Відповідальний => ADGroup
2017-10-06 11:32 Стелс7777 Коментар додано: 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 Рішення open => розв'язано
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