Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Сборка и развертывание проекта

В данный момент сборка проекта происходит следующим образом:
В директории pathToXmlFiles расположены xml файлы классов.
Далее выполняется:
 Do $SYSTEM.OBJ.DeleteAll("-d")
 
Do $SYSTEM.OBJ.LoadDir(pathToXmlFiles,"-d",,1)
 
Do $SYSTEM.OBJ.CompileAll("-dcbkry",.errors)
Далее выполняется программа обновления до последней версии.

Основная проблема заключается в том, что при развёртывании проекта приходится копировать xml файлы на целевой сервер, а потом запускать сборку (которая занимает определённое время). Хотелось бы упростить и ускорить процесс.

Пока что вижу 2 варианта решения:
1) Выполнять сборку на специально предназначенном сервере сборки, а потом копировать CACHE.DAT на целевой сервер.
2) Использовать методы DeployToGbl и InstallFromGbl класса %Studio.Project. Deploy на серевере сборки, Install на целевом сервере.

Второй вариант выполняет все операции над проектом. Проектами мы не пользуемся, потому необходимо будет загружать все xml файлы в проект.

Хотелось бы узнать ваше мнение по этому поводу.

Какой из вариантов лучше?
Может быть есть ещё какие-то способы?
Ответ:
doublefint
DAiMor
можно одним описанием в XData описать все что нужно

Из опыта использования, оказалось что не всё ( настройка web-приложения и что-то еще ).
Получилась смесь - в XData прописан вызов кастомного метода, а уже в нем всё остальное ...
Ну да, это точно прям совсем всего там нет, но есть возможность добавить кастомный метод со своим кодом.
Вопрос: почему local postgres должен всегда быть peer ?

всем приветы
хочу всё-таки разобраться...
у меня одна-единственная запись:
local all postgres md5
но с такой записью СЕРВЕР НЕ ЗАПУСКАЕТСЯ
автор
postgres@postgres ВАЖНО: пользователь "postgres" не прошёл проверку подлинности (по паролю)
postgres@postgres ПОДРОБНОСТИ: Пароль не подходит для пользователя "postgres".

вот так он спамит в логах.

пароль выставил в системе: passwd postgres (123)
и внутри: ALTER USER postgres PASSWORD '123'; (также пробовал ENCRYPTED PASSWORD и md5 менял на password)
ну казалось бы - возьми ты пароль из системы и юзай, но нет!
чего ему надо?
почему я должен держать там обязательно peer или trust ?
пусть для сокета, а что если злоумышленник получил доступ к консоли, а команда "sudo -u postgres psql" - даёт полный доступ ко всем БД
так должно быть?
Ответ: ну вот это 9.6 из Debian 9.1
не знаю, что они могли там изменить (у вас же старее версия?)
по идее каждое "Пароль не подходит для пользователя "postgres"." - означает попытку какого-то действия, которое обламывается
но они и у вас есть.
ладно, йух с ним, peer так peer
Вопрос: Как узнать пароль postgres

я установил postgresql на ubuntu из консоли. Никто меня про пароли не спрашивал. После этого под супер пользователем я захожу с sudo, то есть
sudo -u postgres psql
при этом ввожу пароль от пользователя в никс (совсем не постгрес). Я хочу открыть доступ к базе постгрепс извне (с других компов в интернете). По инструкции мне надо создать второго супер юзера
# Переключаемся в системного пользователя postgres
su postgres
# Создаем нового суперпользователя
createuser -P -s postgreadmin
# вводим пароль по запросу

Проблема в том, что я не знаю пароля от postgres. Как его узнать?
Также по этой инструкции предлагают в pg_hba.conf сделать следующие изменения:
hostssl all postgreadmin 0.0.0.0/0 md5
Мне бы хотелось как минимум использовать другого пользователя (реального владельца базы), а лучше всего создать отдельного пользователя test_mir, который в базе данных test_baza будет иметь доступ только на чтение таблицы test_tablica. Такое возможно или надо давать доступ только супер пользователю?
Ответ:
azsx
Проблема в том, что я не знаю пароля от postgres. Как его узнать?

В pg_hba.conf делаете метод доступа trust для postgres. При необходимости перезапустите демон.
Подключаетесь к БД от имени postgres уже без пароля.
Меняете пароль в БД.
Отключаетесь от БД.
В pg_hba.conf меняете на метод доступа md5.
Вопрос: configure HS from oracle to postgres

Installing : postgresql94-odbc 1/1

Installed:
postgresql94-odbc.i386 0:09.03.0400-1PGDG.rhel5

cat $ORACLE_HOME/odbc.ini
[ODBC Data Sources]
PG_LINK         =       PostgreSQL

[PG_LINK]
Debug           =       1
CommLog         =       1
Description     =       to Postgres
Driver              = /usr/pgsql-9.4/lib/psqlodbc.so
Database            = postgres
Servername          = 10.0.1.6
UserName            = postgres
Password            = postgres
Port                = 5433
ReadOnly            = No
RowVersioning       = No
ShowSystemTables    = No
ShowOidColumn       = No
FakeOidIndex        = No
QuotedId            = No
FetchBufferSize = 99

[Default]
Driver = /usr/lib/liboplodbcS.so.1


cat $ORACLE_HOME/hs/admin/initPG_LINK.ora

HS_FDS_CONNECT_INFO = PG_LINK
HS_FDS_TRACE_LEVE = OFF
HS_FDS_TRACE_FILE_NAME = /tmp/odbc_trace.trc
HS_FDS_SHAREABLE_NAME = /usr/lib/libodbc.so
set ODBCINI=/etc/odbc.ini


 cat $ORACLE_HOME/network/admin/tnsnames.ora

PG_LINK =
  (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = bi-6.bi.ru) (PORT = 1523))
  (CONNECT_DATA =   (SID  = PG_LINK) (HS=OK))
  )


cat $ORACLE_HOME/network/admin/listener.ora

SID_LIST_LISTENER =
  (SID_LIST =
       (SID_DESC =
      (SID_NAME = PG_LINK)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (PROGRAM = dg4odbc)
   )
  )

LISTENER =
    (DESCRIPTION_LIST =
      (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP) (HOST = bi-6.bi.ru) (PORT = 1523))
      (ADDRESS = (PROTOCOL = IPC) (KEY  = EXTPROC0))
      )
    )


lsnrctl reload ;



SQL>  create public database link PG_LINK connect to "postgres" identified by "postgres" using 'PG_LINK';
SQL>  select * from dual@PG_LINK;
 select * from dual@PG_LINK
                    *
ERROR at line 1:
ORA-28546: connection initialization failed, probable Net8 admin error
ORA-02063: preceding line from PG_LINK
Ответ:
SQL>  select * from pg_tables@PG_LINK;
 select * from pg_tables@PG_LINK
               *
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
ОШИБКА: отношение "PG_TABLES" не существует;
No query has been executed with that handle {42P01,NativeErr = 1}
ORA-02063: preceding 3 lines from PG_LINK


а вот скажите, нет ли там файла типа phsql.ini где нужно открыть - кто-куда может ходить?
ощущение что в postgres прав не хватает
Вопрос: Переход на Postgres (Postgres vs ANSI)

Всем привет в этом чате!

Задумался о переходе на Postgres. В связи с этим прошу разъяснений по некоторым пунктам (без некоторых не проживу), а именно:

a) platforms OSX, IOS, Android
b) portable/embedded version
c) universal triggers with inserting/updating/deleting keywords
d) triggers on connect/disconnect
e) gtt
f) cte
g) computed columns
h) insert returning clause
i) command line interface
j) table-level constraint name as
create table <table> (
  constraint <constraint_name> primary key/foreign key/unique/check
);

k) utf-8 support
l) 2-phase locking
m) sql editor with sintax
Ответ: Ролг Хупин,

Firebird - первая любовь. Postgres - возможно, будет брак по расчету. )))
Вопрос: Получить через Postgres файлы хранящиеся на диске

Всем привет.
Есть такая простая задача: вернуть пользователю в браузер файл для загрузки, но проблема в том, что файлы хранятся на сервере с БД в каталоге и имеют название id из БД (без расширения и исходного названия), исходное название и расширение хранится в бд в отдельной таблице.
Эти файлы в данный каталог загружаются из другого приложения через postgres, а мне надо получать их в своем приложении как минимум с расширением файлов. Вот и решил попробовать достать эти файлы через lo_import, а затем просто возвращать из запроса в приложение на сервере, а дальше уже возвращать клиенту, но вот проблема: lo_import загружает файл в бд, возвращает oid, как теперь получить эти данные? по факту после загрузки они попали в pg_largeobject, но вот собрать их так, чтобы файл открылся (после объединения всех частей и добавления нужного расширения) как надо не получается.

собирать пробовал так
SELECT array_to_string(array(select data from pg_largeobject where loid = 135422 order by pageno),'');
Ответ: Вариант 2
Написать свою хранимую процедуру на языке, ну например Perl установив предварительно расширение PlPerlU, которое позволяет забирать данные из любого каталога на диске где установлен PG.

Пример функции которая забирает требуемый файл:
-- Function: read_file_as_hex(text)

-- DROP FUNCTION read_file_as_hex(text);

CREATE OR REPLACE FUNCTION read_file_as_hex(name text)
RETURNS text AS
$BODY$
my $s = "";
my $buff = "";
my $read_buff = "";
my $file_name = $_[0];
my $name_size = length($file_name);
$file_name = pack("H$name_size", $file_name);
unless (open(READING_FILE, $file_name)) {
return ($buff);
} else {
binmode(READING_FILE);
my $file_size = -s($file_name);
read(READING_FILE, $read_buff, $file_size);
close(READING_FILE);
$s = 2*$file_size;
$buff = unpack("H$s", $read_buff );
return ($buff);
}

$BODY$
LANGUAGE plperlu VOLATILE
COST 100;
ALTER FUNCTION read_file_as_hex(text)
OWNER TO postgres;

Файл передается как HEX последовательность, в Browser(е) на Java собрать как должно быть.
Вопрос: Развёртывание CLR сборки на из Visual Studio

Windows 10 Pro 32бит
Microsoft Visual Studio 10
Microsoft SQL Server 2008 R2

При развёртывании проекта CLR сборки из студии возникает ошибка, но какая не понятно:

AppservProject -> D:\TFS\SqlServerProjects\AppservProject\bin\Release\AppservProject.dll
------ Развертывание начато: проект: AppservProject, Конфигурация: Release Any CPU ------
========== Построение: успешно и без изменений: 1, с ошибками: 0, пропущено: 0 ==========
========== Развертывание: успешно: 0, с ошибками: 1, пропущено: 0 ==========

Когда была Windows 7, то эта сборка успешно разворачивалась на сервер. После перехода на Windows 10 наблюдается такая картина. В чём может быть причина?
Ответ: Degun,

нужна гадалка... "с ошибками: 1" может она увидит что за этим скрывается
Вопрос: Как вызывать процедуру Postgres с OUT-параметрами

Добрый день!

Для одного проекта у нас выбрали Postgres.
С непривычки у меня не получается реализовать простейшую, казалось бы, вещь.

Если на SQL Server я создавал, процедуры с OUT-параметрами и вызывал их из внешней программы таким образом (2 OUT-параметра и 2 обычных)
EXEC процедура ?@m.par1, ?@m.par2, ?m.par3, ?m.par4

при этом мои переменные m.par1 и m.par2 после выполнения процедуры принимали значения соответствующих параметров,
то Postgres, по моим наблюдениям, вообще не требует передачи в процедуру OUT-параметров. То есть, в моём случае в процедуру, вроде, надо передавать два параметра. Да и в DBeaver она отображается не с четырьмя, а с двумя параметрами (OUT-параметры игнорируются)
Подскажите, пожалуйста, как, создать и вызвать из программы, для примера, простейшую процедуру получения нового уникального кода с использованием OUT-параметра типа SQL SERVERовской

CREATE PROCEDURE dbo.new_id  
  @nRetVal int OUTPUT  
  AS  
  BEGIN  
  UPDATE id_counter SET @nRetVal = id_counter.id, id_counter.id = id_counter.id + 1


Надо использовать команду EXECUTE процедура
или
конструкцию select <моя переменная> from процедура(параметр)?

Необходимо, чтобы я из своей программы передал переменную нужного типа, но с произвольным именем, в процедуру Postgres, и после выполнения этой процедуры переменная приняла бы значение, которое присвоилось в процедуре соответствующему параметру.
Ответ:
Hawkmoon
Товарищу также в целях просветления следует...
для начала прочитать документацию:

  • 37.4.1. Аргументы SQL-функций
  • 37.4.4. Функции SQL с выходными параметрами


  • 4.3.1. Позиционная передача
  • 4.3.2. Именная передача
  • 4.3.3. Смешанная передача
  • Вопрос: sqlvariant для postgres

    Здравствуйте уважаемые посетители sql.ru!
    Мне надо портировать проект завязанный на mssql2000 на postgresql. Все бы ничего, но есть одна проблема, очень много данных типа sqlvariant. Сразу скажу, что данные хранить в разных таблицах по типам в этом проекте неприемлимо.
    Итак, как мне получить тип sqlvariant для постгреса? Насколько я понял, родной поддержки этого типа нет. Возможно ли такое вообще? Может кто сталкивался? Или хотябы в какую сторону копать? Только не пинайте сильно, у меня пока ещё мало опыта с sql :)
    Заранее большое спасибо!
    Ответ:
    rovan
    AndyKuvaldin
    Имена таблиц, наименование полей и индексы...

    PG предоставляет возможность доступа к метаданным как через стандартную схему (INFORMATION_SCHEMA) так и через собственные таблицы метаданных.
    Изучай.

    спасибо
    Вопрос: PgBouncer - настройка для пользователя postgres

    Ситуация следующая :
    Ubuntu 14.04.3 + PostgreSQL 9.5 + PgBouncer 1.5.4

    Правильно ли я понимаю, что настроить отдельно доступ для разных пользователей можно только в PgBouncer c версии 1.7 ?
    Т.е. например пользователь user соединяется с базой с паролем :
    postgres@ubuntu:~$ psql -p 6432 -d userdb -U user

    А вот пользователь postgres соединяется с базой без пароля :
    postgres@ubuntu:~$ psql -p 6432 -d userdb
    и
    postgres@ubuntu:~$ psql -p 6432 pgbouncer

    Если удаляю или обнуляю строку пароля пользователя postgres в файле userlist.txt выдает ошибку
    postgres@ubuntu:~$ psql -p 6432 pgbouncer
    psql: ERROR: No such user: postgres

    Нужно установить версию 1.7 ?
    Иначе никак ?

    Спасибо. Сорри за возможно чайниковский вопрос.
    Ответ: Alexius,

    да, спасибо за наводки.
    Так и сделал.