Task preview

НомерprojectCategoryVisibilityИзменен
0001559RasKonWishespublic2021-07-30 22:27
InitiatorADGroup ResponsibleADGroup  
PriorityordinaryInfluencesmallReproducibilityuntested
Condition closedDecisionsolved 
Целевая версия10.05Решена в версии10.05 
Theme0001559: Transferring database work to MSSQL.
Description-
TagsThere are no associated tags.
Number of references
Implementation period (days)
Cost
Planned date

Activity

Stealth7777

2017-10-06 11 :32

author ~0001605

A wonderful idea with five BUTs!

1. If the information in the DBMS will be stored in an open form.
If the organization needs confidentiality, the sysadmin can implement it by means of SQL itself.

2. Field assignments, primary and foreign keys should be described in the most complete way.

3. Refrain as much as possible from composite primary keys and primary keys on fields with char and nvarchar types.

4. Form the database without indexes. Each sysadmin will be able to analyze the performance of his database and, if necessary, determine the fields necessary for them and create indexes.

5. Replace Rascon program code with SQL tools where possible (aggregate, scalar, table functions, triggers, stored procedures, limiting keys, etc.). This will:
- reduce traffic
- reduce the load on the client
- maximize the justification of using SQL
- make it possible to reuse T-SQL code instead of creating a RASCON API (if such a program is planned), abandon REST
- reduce the probability of hard-to-diagnose errors of machine (compiled) code.

Otherwise, the transition makes almost no practical sense.

ADGroup

2017-10-06 11 :49

administrator ~0001608

1. In the first view the base will have the same structure as in Access. Changing the structure is a separate issue and will not be done at once otherwise transfer the base to MSSQL in general will not be possible if you do everything at once.
2. While there is nothing to describe except primary keys and table names.
3. There are no such, but composite primary keys I do not exclude in the future, but it will be seen closer to the implementation, provided that without them performance will be low.
4. The database contains indexes on primary keys.
5. This is for the future, now it is hard to talk about it, as backward compatibility is required. For dealer unlimited programs need for example the simplest possible installation and by default they will still work on Access, otherwise the process of installation and support of customer data can be dramatically complicated. On this stored procedures will be introduced with caution and again not immediately.

Transfer to MSSQL in any case makes sense at least for the sake of stability of the base, you know from experience about such problems in large bases. Plus minimal functionality on transactions and locks, which in Access like there are but their work raises big questions, which again is critical on large bases and a large number of users.

ADGroup

2018-03-02 12 :34

administrator ~0001743

Last modified: 2018-03-02 12 :40

The first test variant of working with a database in MSSQL server has been implemented. Testing was performed on MSSQL Express 2017. The functions of backing up and restoring the database from the archive work normally. First, an archive of the current database is created in the format "*.zp", then from it we restore the database in MSSQL using "database utilities". To configure the connection to the base is used Connection String, which can be configured in the interface from a special window of the program. The tool is universal, theoretically it can be extended to other DBMS in the future. Work with the database is also made as universally as possible so that at this stage not to be tied to the syntax and specialized features of a particular DBMS. At this stage the program does not know how to create a database, so after the installation of MSSQL you need to manually execute the query "create database raskondb" (the name of the database can be created any, for example raskondb), after that in the program you need to configure Connection String to connect to this database, after that at the first start of the program to restore the database from the archive using "database utilities". The mode of working with the database via Connection String is set using the command line and the -usedbconstr parameter. More detailed instructions will be given later.

ADGroup

2018-04-13 22 :40

administrator ~0001767

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


Community support for the task
This problem is marked solved.
If you think it is not, please reopen it and explain why.
Supporters: panas vovaukrainec
Neutrality: No users have yet voted neutral for this task.
Opponents: No opponents have yet voted in favor of this task.

Change history

Date of change User Field Modify
2017-08-17 13:26 ADGroup New task
2017-08-17 13:26 ADGroup Condition new => assigned
2017-08-17 13:26 ADGroup Responsible => ADGroup
2017-10-06 11:32 Stealth7777 Comment added: 0001605
2017-10-06 11:49 ADGroup Comment added: 0001608
2018-03-02 12:34 ADGroup Comment added: 0001743
2018-03-02 12:34 ADGroup Targeted version 10.XX (forthcoming) => 10.05
2018-03-02 12:36 ADGroup Comment modified: 0001743
2018-03-02 12:36 ADGroup Comment modified: 0001743
2018-03-02 12:40 ADGroup Comment modified: 0001743
2018-03-02 12:40 ADGroup Comment modified: 0001743
2018-03-08 10:14 ADGroup Condition assigned => closed
2018-03-08 10:14 ADGroup Decision open => solved
2018-03-08 10:14 ADGroup Resolved in version => 10.05
2018-04-13 22:40 ADGroup Comment added: 0001767
2021-07-30 21:17 ADGroup Comment modified: 0001767
2021-07-30 22:27 ADGroup Comment modified: 0001767
2021-07-30 22:27 ADGroup Comment modified: 0001767
2021-07-30 22:27 ADGroup Comment modified: 0001767