Получить текущее подключение с базой
Получить текущее подключение с базой
Идёт выполнение отчёта на Stimulsoft. Допустим я хочу его прервать и закрыть принудительно подключение с базой.
Каким образом можно получить текущее выполняемое подключение отчётом и выполнить Close()?
В отчёт добавлено подключение типа StiPostgreSQLDatabase.
Каким образом можно получить текущее выполняемое подключение отчётом и выполнить Close()?
В отчёт добавлено подключение типа StiPostgreSQLDatabase.
Re: Получить текущее подключение с базой
Здравствуйте,
Вы можете получить подключение из словаря:
((StiPostgreSQLDatabase)report.Dictionary.Databases["ConnectionName"])
Спасибо.
Вы можете получить подключение из словаря:
((StiPostgreSQLDatabase)report.Dictionary.Databases["ConnectionName"])
Спасибо.
Re: Получить текущее подключение с базой
Это понятно. Но у StiPostgreSQLDatabase нет метода Close(), у нас используется Npgsql, как мне его преобразовать к NpgsqlConnection?
Re: Получить текущее подключение с базой
Здравствуйте,
Извините за задержку с ответом.
Необходимо некоторое время для анализа проблемы.
Спасибо.
Извините за задержку с ответом.
Необходимо некоторое время для анализа проблемы.
Спасибо.
Re: Получить текущее подключение с базой
Я объясню для чего. У нас Stimulsoft отчёты строятся в отдельных потоках, следовательно на каждый вызов отчёта создается соединение с базой. Также в клиенте есть таймер построения отчёта и возможность отменить построение, есть отчёты которые формируются больше 10 минут. Вот после ручной отмены построения отчёта, соединение на базе с запросом остается висеть.
Отменяется отчёт таким кодом:
Отменяется отчёт таким кодом:
Код: Выделить всё
report.IsStopped = true;
report.Dispose();
Re: Получить текущее подключение с базой
Нет такой возможности?
Re: Получить текущее подключение с базой
Здравствуйте,
К сожалению, нет. Не получится получить текущее подключение.
Спасибо.
К сожалению, нет. Не получится получить текущее подключение.
Спасибо.
Re: Получить текущее подключение с базой
Можно сделать тогда, чтобы Dispose() закрывал все соединения с базой, которые активны в данный момент (используются в отчёте)?
Это очень необходимо. Проблема в том, что если идёт Render() и выполняется долгий запрос, то Dispose() его не отменяет.
Это очень необходимо. Проблема в том, что если идёт Render() и выполняется долгий запрос, то Dispose() его не отменяет.
Re: Получить текущее подключение с базой
Либо нужна возможность получения соединения, чтобы потом с ним манипулировать.
Re: Получить текущее подключение с базой
Здравствуйте,
Пожалуйста, попробуйте попробовать его взять из report.DataStore
Также как вариант, вы можете можете задать Application Name="Key" в строке подключения и затем закрывать его в самой базе.
Спасибо.
Пожалуйста, попробуйте попробовать его взять из report.DataStore
Также как вариант, вы можете можете задать Application Name="Key" в строке подключения и затем закрывать его в самой базе.
Спасибо.