Экспорт данных в PostgreSQL в Scada 6

Стартовая страница Форумы Вопросы по установке Экспорт данных в PostgreSQL в Scada 6

Просмотр 15 сообщений - с 1 по 15 (из 15 всего)
  • Автор
    Записи
  • #25929
    dnat1970
    Участник

    Доброго дня, пробую наладить экспорт в Scsda 6 в PostgreSQL встроенным модулем экспорта. Сразу оговорюсь что не имею профессиональных навыков в Администрировании и конфигурировании БД SQL.
    На WinServer 2022 установил последнюю 15 версию предложенную на официальном сайте — установил и использую настройки по умолчанию
    Создаю в ней БД и таблицы (скрипты для создания взял из руководства пользователя Scfda 5) при помощи SQL запросов. Пробую локально SQL запросами внести записи в таблицу — получается — записи в таблицу вносятся и читаются
    В Scada организую подключение
    Host=localhost;Port=5432;Database=plk;Username=postgres;Password=12345
    В Архивах Активирую отчеты которые хочу что бы передавались. После передачи конфигурации в Лог файле вижу ошибки Npgsql.PostgresException (0x80004005): 28P01. Насколько я понял — invalid_password. Но вроде как я вхожу в БД с этим паролем в pgAdmin?
    Еще при формировании командной строки я заменил в пароле ***** на конкретный 12345 — могло ли это повлиять и правильный ли синтаксис я сделал?
    Либо все таки нужно добавлять дополнительные права для пользователя в файлах конфигурации PostgreSQL?

    Мой лог

    Npgsql.PostgresException (0x80004005): 28P01: ������������ «postgres» �� ������ �������� ����������� (�� ������)
    at Npgsql.Internal.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|211_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage)
    at Npgsql.Internal.NpgsqlConnector.AuthenticateSASL(List`1 mechanisms, String username, Boolean async, CancellationToken cancellationToken)
    at Npgsql.Internal.NpgsqlConnector.Authenticate(String username, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
    at Npgsql.Internal.NpgsqlConnector.<Open>g__OpenCore|191_1(NpgsqlConnector conn, SslMode sslMode, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken, Boolean isFirstAttempt)
    at Npgsql.Internal.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
    at Npgsql.ConnectorPool.OpenNewConnector(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
    at Npgsql.ConnectorPool.<Get>g__RentAsync|28_0(NpgsqlConnection conn, NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
    at Npgsql.NpgsqlConnection.<Open>g__OpenAsync|45_0(Boolean async, CancellationToken cancellationToken)
    at Npgsql.NpgsqlConnection.Open()
    at Scada.Server.Modules.ModArcPostgreSql.Logic.PostgreCAL.CreateDbEntities()
    at Scada.Server.Modules.ModArcPostgreSql.Logic.PostgreCAL.MakeReady()
    at Scada.Server.Engine.ArchiveHolder.MakeReady()
    Exception data:
    Severity: �����
    SqlState: 28P01

    #25931
    dnat1970
    Участник

    Есть у кого то возможность посмотреть метод Аунтификации Postgre в рабочих версиях в файле pg_hba.conf
    Есть предположение что по умолчанию в 15 версии METHOD — scram-sha-256 предполагая что в более ранних версиях стояло — md5

    Мой pg_hba.conf

    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    
    # "local" is for Unix domain socket connections only
    local   all             all                                     scram-sha-256
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            scram-sha-256
    # IPv6 local connections:
    host    all             all             ::1/128                 scram-sha-256
    # Allow replication connections from localhost, by a user with the
    # replication privilege.
    local   replication     all                                     scram-sha-256
    host    replication     all             127.0.0.1/32            scram-sha-256
    host    replication     all             ::1/128                 scram-sha-256
    • Ответ изменён 3 года, 10 месяцев назад пользователем Mikhail.
    #25932
    dnat1970
    Участник
    #25933
    dnat1970
    Участник

    Немного из экспериментов может будет интересен опыт:
    Ошибку Npgsql.PostgresException (0x80004005): 28P01 удалось устранить путем изменения прав доступа редактированием файла pg_hba.conf — пока установил в нем всем METOD Trust — понимаю что это — не есть хорошо, поэтому если есть возможность у кого экспорт БД Postgre работает пришлите описание вашего файла конфигурации pg_hba.conf
    Столкнулся с другой ошибкой
    Npgsql.PostgresException (0x80004005): 3D000
    Лог файл Postgre выдал такую ошибку:
    [23324] ВАЖНО: база данных «rapid_scada» не существует
    Создал БД с таким именем и соответственно таблицы в ней, ошибки пропали

    Архивы (6)
    ———-
    [Cur] Current data : готовность
    [Min] Minute archive : готовность
    [Hour] Hourly archive : готовность
    [Events] Event archive : готовность
    [CurCopy] Current data copy : готовность, заполнение очереди 0/1000
    [MinCopy] Minute archive copy : готовность, заполнение очереди 0/1000

    Но в БД информация пока не записывается, может требуются еще какие то настройки в SCADA Администраторе — например в закладке Архивы …
    Как сейчас происходит экспорт — в предыдущей версии обозначались каналы которые нужно было экспортировать, сейчас как? Все?
    И Database=rapid_scada — это обязательный параметр? Мне он в документации до этого не попадался — либо я был невнимателен
    Проверил то о чем написал на 2 комп с PostgreSQL14 и PostgreSQL15

    #25936
    Mikhail
    Модератор

    Спасибо за подробное описание.
    Да, базу нужно сначала создать. Напишем об этом в документации, когда она появится.

    Для PostgreSql 14 файл pg_hba.conf по умолчанию:

    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    
    # "local" is for Unix domain socket connections only
    local   all             all                                     scram-sha-256
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            scram-sha-256
    # IPv6 local connections:
    host    all             all             ::1/128                 scram-sha-256
    # Allow replication connections from localhost, by a user with the
    # replication privilege.
    local   replication     all                                     scram-sha-256
    host    replication     all             127.0.0.1/32            scram-sha-256
    host    replication     all             ::1/128                 scram-sha-256

    С ним работает нормально.

    #25938
    Mikhail
    Модератор

    Пароль в файле ScadaInstanceConfig.xml шифруется с помощью утилиты. По умолчанию там пароль postgres

    Database=rapid_scada — это обязательный параметр?

    Да, это база, в которую пишутся данные.
    Если Вы просто включили архивы, которые уже были в проекте по умолчанию, то дополнительных настроек не требуется.
    Можно включить подробный журнал для архивов, чтобы получить дополнительную информацию по их работе.

    #26111
    dnat1970
    Участник

    Еще раз попрошу помощи и совета, пока так и не удается добиться экспорта в PostgreSQL
    Складывается впечатление что все работает правильно — Лог файлы SCADA говорят о том что все отправляется, на стороне Логов PostgreSQL — то же все вроде как без ошибок но данные в БД я не вижу
    Приложу скрины моих настроек SCADA и форм запросов в базу PostgreSQL — попрошу посмотреть у кого есть возможность — складывается впечетление что ошибка банальная и я ее просто не вижу. Спасибо

    #26112
    dnat1970
    Участник
    #26113
    dnat1970
    Участник
    #26114
    dnat1970
    Участник

    Был совет посмотреть правильно ли происходит буферизация в PostgreSQL — в соответствии с их документацией сделал изменения в PostgreSQL configuration file
    Установил вот в этом разделе такие параметры для работы с буфером — если у кого есть возможность дайте значение этого раздела Вашего файла ..Program Files\PostgreSQL\14\data\postgresql.conf
    #——————————————————————————
    # WRITE-AHEAD LOG
    #——————————————————————————

    # — Settings —

    wal_level = replica # minimal, replica, or logical
    # (change requires restart)
    fsync = on # flush data to disk for crash safety
    # (turning this off can cause
    # unrecoverable data corruption)
    synchronous_commit = on # synchronization level;
    # off, local, remote_write, remote_apply, or on
    wal_sync_method = fsync # the default is the first option
    # supported by the operating system:
    # open_datasync
    # fdatasync (default on Linux and FreeBSD)
    # fsync
    # fsync_writethrough
    # open_sync
    full_page_writes = on # recover from partial page writes

    #26125
    Mikhail
    Модератор

    В параметрах архивов у Вас стоит галочка использовать соединение хранилища. Она означает, что параметры берутся из SCADA\Config\ScadaInstanceConfig.xml
    Снимите эту галочку либо задавайте параметры в ScadaInstanceConfig.xml

    #26126
    Mikhail
    Модератор

    Но т.к. Вы использовали логин и пароль БД по умолчанию, причина не в этом. Просто нужно раскрыть узел Schemas и там найти таблицы. В селекте указывайте схему.

    #26134
    dnat1970
    Участник

    Попробовал
    rapid_scada
    Shemas
    pablic
    Tables
    cnldata
    выполнил запрос
    SELECT datetime, cnlnum, val, stat
    FROM public.cnldata;
    Получил
    Запрос выполнен успешно. Общее время выполнения: 141 msec.
    обработано строк: 0.
    аналогично с таблицей event

    Имеет ли значение что таблица созданы в схеме pablic?
    Она предлагается по умолчанию

    #26135
    dnat1970
    Участник
    #26144
    Mikhail
    Модератор

    Таблицы создаются автоматически в нужной схеме. Какие ещё есть схемы в дереве?

Просмотр 15 сообщений - с 1 по 15 (из 15 всего)
  • Для ответа в этой теме необходимо авторизоваться.