Центр удаленного доступа  (26.07.2026)
Использование DBLINK в Пользовательских процедурах

Использование DBLINK в Пользовательских процедурах.

Для возможности использования DBLINK в Пользовательских процедурах, необходимо соблюсти следующие условия:

  • DBLINK должен быть создан как SHARED
  • транзакция, в которой выполняется запрос DBLINK, не должна быть автономной

Ранее (до релиза от января 2021), в ЦУД все Пользовательские процедуры принудительно всегда выполнялись в автономной транзакции. Это делалось для поддержки случаев, когда в пользовательской процедуре осуществляется управление текущей транзакцией (commit или rollback).

Сейчас это поведение изменено в пользу возможности использования DBLINK в Пользовательских процедурах. В результате, чтобы Пользовательские процедуры с управление текущей транзакцией продолжили работать, необходимо отказаться от такого управления транзакцией, либо "обернуть" это управление в блок автономной транзакции, с помощью анонимного блока или отдельной подпрограммы.

Управление списком объектов, автоматически оборачиваемых в блок автономной транзакции.

Предопределенный список объектов БД из стандартной поставки Парус, которые управляют текущей транзакцией, ведется в отдельном списке, поддерживается и поставляется с самого начала вместе с текущим сервисом.

Начиная с релиза от января 2021 добавлена возможность расширения списка таких объектов Администраторами сервиса. Это может быть оказаться полезным для пользовательских процедур, или процедур, разрабатываемых на местах, и не входящих в стандартную поставку Парус.

Как было упомянуто выше, лучше всего отказаться от подхода с управлением текущей транзакции на серверной стороне. Но в тех случаях, где это сделать затруднительно, теперь можно включить наименование таких объектов в специальный список, и при использовании этого объекта в вызовах из клиента, SQL-код клиента будет автоматически "обернут" в блок автономной транзакции с помощью анонимного блока.

Для включения объекта в этот список создайте (или добавьте в имеющийся) текстовый файл с именем AutonomouseTransactionObjects.txt, отдельную строку или строки с именами нужных объектов. Этот файл должен быть расположен в каталоге сервиса, рядом с исполняемым модулем (по умолчанию, C:\Program Files\ParusRemoteAccess). Обратите внимание на используемую разрядность сервиса - версия x64 находится в отдельном подкаталоге WIN64.