Сообщение создано: 11. 03. 2014 [15:51]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"monia" wrote:
Т.е. если я использую архиватор OpenSCADA, то я должен создать в PostgerSQL БД, к которой будет иметь доступ только один пользователь (к примеру User)
Соответственно OpenSCADA должна работать с архивами только через этого пользователя (User), а выполнение моих SQL запросов должно происходить в другие БД и через других пользователей?
Пользователи тут вообще не при чём.
Я думаю можно сделать и два независимых подключения к одной БД (объекты БД в OpenSCADA) и работать с ними с разными концепциями транзакций.
Но говорил я про то, что в совместном режиме свои запросы нужно писать по правилам работы с транзакциями OpenSCADA и не применять прямого управления транзакциями.
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 12. 03. 2014 [05:34]
|
monia
Олег Намятов
Создатель темы
Зарегистрирован(а) с: 21.05.2012
Сообщения: 173
|
Но говорил я про то, что в совместном режиме свои запросы нужно писать по правилам работы с транзакциями OpenSCADA и не применять прямого управления транзакциями.
пожалуйста кинь ссылку на эти правила или напиши пример
в своем проекте я использую 2 БД, под архив сообщений и свой архив параметров. (для доступа к каждой БД созданы пользователи)
вот пример запроса записи в БД
SYS.BD.PostgreSQL.oscada_PST.SQLReq("INSERT INTO \"r01k001_ASt\" (\"TimeState\", \"wTorch1\", \"wTorch2\", \"wPmp1K\", \"wPmp2K\", \"wPmp1KK\", \"wPmp2KK\", \"wPmp3KK\", \"wPmp4KK\", \"wPmp1KO\", \"wPmp2KO\", \"wPmp3KO\", \"wPmp4KO\", \"wPmp5KO\", \"wPmp6KO\", \"wPmp1KGVS\", \"wPmp2KGVS\", \"wPmp1KHVS\", \"wPmp2KHVS\") VALUES ('" + sTimeState + "'" + ", " + wTorch1.toString() + ", " + wTorch2.toString() + ", " + wPmp1K.toString() + ", " + wPmp2K.toString() + ", " + wPmp1KK.toString() + ", " + wPmp2KK.toString() + ", " + wPmp3KK.toString() + ", " + wPmp4KK.toString() + ", " + wPmp1KO.toString() + ", " + wPmp2KO.toString() + ", " + wPmp3KO.toString() + ", " + wPmp4KO.toString() + ", " + wPmp5KO.toString() + ", " + wPmp6KO.toString() + ", " + wPmp1KGVS.toString() + ", " + wPmp2KGVS.toString() + ", " + wPmp1KHVS.toString() + ", " + wPmp2KHVS.toString() + ")");
В архив сообщений записываю таким образом
this.nodePrev().alarmSet((this.nodePrev().name()) + ": " + (NAME.length?NAME:SHIFR) + ": " + tErr.parse(1,":") + " (" + sSysTime + ")", levErr, SHIFR);
|
Сообщение создано: 12. 03. 2014 [21:58]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"monia" wrote:
пожалуйста кинь ссылку на эти правила или напиши пример
Всё просто (оперируем вторым аргументом SQLReq, http://wiki.oscada.org/Doc/OpisanieProgrammy ):
- "true" для команд записи-модификации.
- "false" для команд чтения.
Learn, learn and learn better than work, work and work.
|