В проекте потребовалось использовать подключение к внешней базе данных расположенной в сети предприятия, в качестве СУБД используется MS SQL. Далее опишу достаточно простое решение, которое легло в основу решения. Пример будет весьма примитивным :)
Предпосылки
- На сервере приложений должно быть установлено ПО Microsoft SQL Server 2008 R2 Native Client (версия зависит от версии СУБД).
- В папке согласно параметру DIR_CT_RUN должна присутствовать библиотека dbmssslib.dll.
Последовательность
1. Настройка соединения с БД
2. После того как соединение настроено, тестируем его с помощью программы ADBC_TEST_CONNECTION через SE38.
3. Все, теперь можно писать вашу программу и подключаться к указанной базе данных.
REPORT ZMSSQL. DATA: c TYPE cursor, dbs TYPE dbcon-con_name VALUE 'SQL001', dbtype TYPE dbcon_dbms, lv_acct_name TYPE char100. TRY. EXEC SQL. CONNECT TO :dbs ENDEXEC. IF sy-subrc <> 0. RAISE EXCEPTION TYPE cx_sy_native_sql_error. ENDIF. EXEC SQL. OPEN dbcursor FOR SELECT acct_name FROM ACCOUNT ENDEXEC. DO. EXEC SQL. FETCH NEXT dbcursor INTO :lv_acct_name ENDEXEC. IF sy-subrc <> 0. EXIT. ELSE. WRITE / lv_acct_name. ENDIF. ENDDO. EXEC SQL. CLOSE dbcursor ENDEXEC. EXEC SQL. DISCONNECT :dbs ENDEXEC. CATCH cx_sy_native_sql_error. MESSAGE `Error in Native SQL.` TYPE 'I'. ENDTRY.
П.С. Чтобы было правильно воспринято, данное решение не является рекомендуемым к применению на проектах, правильнее все же использовать другие решения: корпоративные шины данных, сервисы и т.д. Но, в качестве временной заплатки, для решения локальной задачи вполне подойдет и это :)
Забыли сказать, что ваш рецепт только для систем, которые на Windows cерверах !
ОтветитьУдалитьДля Линукса своя нота 1644499
А вот для Unix платформ чтото решений(нот) я не нашёл...