Получить текущее подключение с базой

Обсуждение Stimulsoft Reports.NET
Аватара пользователя
t0pdevice
Сообщения: 100
Зарегистрирован: 15 авг 2016, 09:59

Получить текущее подключение с базой

Сообщение t0pdevice »

Идёт выполнение отчёта на Stimulsoft. Допустим я хочу его прервать и закрыть принудительно подключение с базой.
Каким образом можно получить текущее выполняемое подключение отчётом и выполнить Close()?
В отчёт добавлено подключение типа StiPostgreSQLDatabase.
Aleksey
Сообщения: 2787
Зарегистрирован: 22 апр 2010, 06:57

Re: Получить текущее подключение с базой

Сообщение Aleksey »

Здравствуйте,

Вы можете получить подключение из словаря:
((StiPostgreSQLDatabase)report.Dictionary.Databases["ConnectionName"])

Спасибо.
Аватара пользователя
t0pdevice
Сообщения: 100
Зарегистрирован: 15 авг 2016, 09:59

Re: Получить текущее подключение с базой

Сообщение t0pdevice »

Это понятно. Но у StiPostgreSQLDatabase нет метода Close(), у нас используется Npgsql, как мне его преобразовать к NpgsqlConnection?
Aleksey
Сообщения: 2787
Зарегистрирован: 22 апр 2010, 06:57

Re: Получить текущее подключение с базой

Сообщение Aleksey »

Здравствуйте,

Извините за задержку с ответом.
Необходимо некоторое время для анализа проблемы.

Спасибо.
Аватара пользователя
t0pdevice
Сообщения: 100
Зарегистрирован: 15 авг 2016, 09:59

Re: Получить текущее подключение с базой

Сообщение t0pdevice »

Я объясню для чего. У нас Stimulsoft отчёты строятся в отдельных потоках, следовательно на каждый вызов отчёта создается соединение с базой. Также в клиенте есть таймер построения отчёта и возможность отменить построение, есть отчёты которые формируются больше 10 минут. Вот после ручной отмены построения отчёта, соединение на базе с запросом остается висеть.
Отменяется отчёт таким кодом:

Код: Выделить всё

report.IsStopped = true;
report.Dispose();
Аватара пользователя
t0pdevice
Сообщения: 100
Зарегистрирован: 15 авг 2016, 09:59

Re: Получить текущее подключение с базой

Сообщение t0pdevice »

Нет такой возможности?
Aleksey
Сообщения: 2787
Зарегистрирован: 22 апр 2010, 06:57

Re: Получить текущее подключение с базой

Сообщение Aleksey »

Здравствуйте,

К сожалению, нет. Не получится получить текущее подключение.

Спасибо.
Аватара пользователя
t0pdevice
Сообщения: 100
Зарегистрирован: 15 авг 2016, 09:59

Re: Получить текущее подключение с базой

Сообщение t0pdevice »

Можно сделать тогда, чтобы Dispose() закрывал все соединения с базой, которые активны в данный момент (используются в отчёте)?
Это очень необходимо. Проблема в том, что если идёт Render() и выполняется долгий запрос, то Dispose() его не отменяет.
Аватара пользователя
t0pdevice
Сообщения: 100
Зарегистрирован: 15 авг 2016, 09:59

Re: Получить текущее подключение с базой

Сообщение t0pdevice »

Либо нужна возможность получения соединения, чтобы потом с ним манипулировать.
Aleksey
Сообщения: 2787
Зарегистрирован: 22 апр 2010, 06:57

Re: Получить текущее подключение с базой

Сообщение Aleksey »

Здравствуйте,

Пожалуйста, попробуйте попробовать его взять из report.DataStore
Также как вариант, вы можете можете задать Application Name="Key" в строке подключения и затем закрывать его в самой базе.

Спасибо.
Ответить