|
|
|
Ошибка attempted two active database requests
|
|||
|---|---|---|---|
|
#18+
Добрый день всем! У меня Sybase ASA 5.50. При открытии запроса SELECT из ASP-страницы возникает ошибка: Microsoft OLE DB Provider for ODBC Drivers ошибка '80004005' [Sybase][ODBC Driver]General error: attempted two active database requests /disp/itogi/coding/itogi7_view1.asp, line 14 Мне понятно, что это ещё кто-то выполняет запрос. Можно ли как-нибудь настроить сервер Sybase, чтобы не выскакивало этой ошибки?Или вообще дело не в Sybase а в другом? Заранее большое спасибо за ответ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2004, 11:06 |
|
||
|
Ошибка attempted two active database requests
|
|||
|---|---|---|---|
|
#18+
Может, у тебя база в монопольном режиме запущена? А вообще, в RTFM написано следующее: RTFM Attempted two active database requests Item Value SQLCode -298 Constant SQLE_DOUBLE_REQUEST SQLState 42W22 ODBC State S1000 Probable cause In Embedded SQL, you have attempted to submit a database request while you have another request in process. This often occurs in Windows when processing the WM_PAINT message causes a database request, and you get a second WM_PAINT before the database request has completed. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2004, 14:16 |
|
||
|
Ошибка attempted two active database requests
|
|||
|---|---|---|---|
|
#18+
Уважаемый mastlive! Спасибо за ответ! Не могли бы Вы прокомментировать то что написано в RTFM? Я как мог перевёл, но не пойму причём здесь сообщение WM_PAINT, ведь оно касается только перерисовки окон? И как ещё узнать запущена ли база в монопольном режиме или нет? Заранее большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2004, 06:07 |
|
||
|
Ошибка attempted two active database requests
|
|||
|---|---|---|---|
|
#18+
ДжекУважаемый mastlive! Спасибо за ответ! Не могли бы Вы прокомментировать то что написано в RTFM? Я как мог перевёл, но не пойму причём здесь сообщение WM_PAINT, ведь оно касается только перерисовки окон? И как ещё узнать запущена ли база в монопольном режиме или нет? Заранее большое спасибо! В ошибке написано, что идет попытка обращения к запросу, который уж был запущен из приложения. В качестве примера приводится ситуация с параллейным потоком обработки WINAPI в Embedded SQL, когда приложение запустив запрос в параллейном потоке и получив в основном потоке событие WM_PAINT попыталось обратиться к запросу, который еще не был выполнен сервером. В Вашем случае получается, что в ASP во время выполнения запроса и не дожидаясь его окончания где то еще идет к нему обращение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2004, 06:31 |
|
||
|
Ошибка attempted two active database requests
|
|||
|---|---|---|---|
|
#18+
Уважаемый ASCRUS! Спасибо большое за разъяснение описания ошибки! Но тогда как же обеспечить многопользовательскую работу с этой базой без выскакивания этих ошибок? Это делается в программе или можно как-то настроить сам сервер Sybase, чтобы он ждал завершения каждого запроса?Если можно то как? Заранее большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2004, 10:53 |
|
||
|
Ошибка attempted two active database requests
|
|||
|---|---|---|---|
|
#18+
ДжекУважаемый ASCRUS! Спасибо большое за разъяснение описания ошибки! Но тогда как же обеспечить многопользовательскую работу с этой базой без выскакивания этих ошибок? Это делается в программе или можно как-то настроить сам сервер Sybase, чтобы он ждал завершения каждого запроса?Если можно то как? Заранее большое спасибо! Хоть я и не знаю ASP, но могу точно сказать, что дело не в сервере, а ASP и Вашем коде на нем. Во первых нужно посмотреть, не стоит ли на OLE DB соединении флаг "Asynchronous", означающий асинхронное выполнение запросов, где соединение посылает запрос на сервер и не дожидаясь его выполнения передает управление обратно приложению для дальнейшей работы. Во вторых открываете ли Вы для каждого соединения в ASP отдельную сессию работы с СУБД или же пытаетесь работать через один коннект ? В случае попытки работы всех параллейных соединений клиентов ASP через одно соединение с БД Вы и получите как раз такую ошибку. Правильным может быть только организация на каждого клиента ASP собственного соединения с БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2004, 11:05 |
|
||
|
Ошибка attempted two active database requests
|
|||
|---|---|---|---|
|
#18+
ASCRUSХоть я и не знаю ASP, но могу точно сказать, что дело не в сервере, а ASP и Вашем коде на нем. Во первых нужно посмотреть, не стоит ли на OLE DB соединении флаг "Asynchronous", означающий асинхронное выполнение запросов, где соединение посылает запрос на сервер и не дожидаясь его выполнения передает управление обратно приложению для дальнейшей работы. Во вторых открываете ли Вы для каждого соединения в ASP отдельную сессию работы с СУБД или же пытаетесь работать через один коннект ? В случае попытки работы всех параллейных соединений клиентов ASP через одно соединение с БД Вы и получите как раз такую ошибку. Правильным может быть только организация на каждого клиента ASP собственного соединения с БД. У меня источник данных ODBC с драйвером Sybase SQL Anywhere 5.0. Я смотрел свойства этого источника, но не нашёл там флага "Asynchronous". На счёт открытия отдельной сессии, Вы имеете ввиду, что на в каждой странице ASP я должен создавать новое соединение, например так: Dim conn Dim rs Set conn=Server.CreateObject("ADODB.Connnection") conn.ConnectionString="dsn=mydsn" Set rs=Server.CreateObject("ADODB.Recordset") rs.Open "Select * from mytable" Я же до сих пор делал так: Dim rs Set rs=Server.CreateObject("ADODB.Recordset") rs.ActiveConnection="DSN=mydsn" rs.Open "Select * from mytable" и это неправильно, да? Правильно я Вас понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2004, 12:06 |
|
||
|
Ошибка attempted two active database requests
|
|||
|---|---|---|---|
|
#18+
ДжекУ меня источник данных ODBC с драйвером Sybase SQL Anywhere 5.0. Я смотрел свойства этого источника, но не нашёл там флага "Asynchronous". На счёт открытия отдельной сессии, Вы имеете ввиду, что на в каждой странице ASP я должен создавать новое соединение, например так: Dim conn Dim rs Set conn=Server.CreateObject("ADODB.Connnection") conn.ConnectionString="dsn=mydsn" Set rs=Server.CreateObject("ADODB.Recordset") rs.Open "Select * from mytable" Я же до сих пор делал так: Dim rs Set rs=Server.CreateObject("ADODB.Recordset") rs.ActiveConnection="DSN=mydsn" rs.Open "Select * from mytable" и это неправильно, да? Правильно я Вас понял? Поняли правильно, но так как я не знаю ASP, то и не знаю, как он открывает рекордсеты - в пределах существующей сессии или же автоматически организовывает новую. Посмотрите на всякий случай еще на обьект ADODB.Connection, вполне вероятно там еще нужно вызвать метод явного подсоединения сессии к БД, что то типа conn.Connection. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2004, 12:09 |
|
||
|
Ошибка attempted two active database requests
|
|||
|---|---|---|---|
|
#18+
ASCRUSПоняли правильно, но так как я не знаю ASP, то и не знаю, как он открывает рекордсеты - в пределах существующей сессии или же автоматически организовывает новую. Посмотрите на всякий случай еще на обьект ADODB.Connection, вполне вероятно там еще нужно вызвать метод явного подсоединения сессии к БД, что то типа conn.Connection. Это я не дописал код,сейчас заглянул в другое место там так: Dim conn Dim rs Set conn=Server.CreateObject("ADODB.Connnection") conn.ConnectionString="dsn=mydsn" Set rs=Server.CreateObject("ADODB.Recordset") conn.CursorLocation = adUseClient conn.Open rs.ActiveConnection=conn rs.Open "Select * from mytable" При таком открытии набора данных ошибки attempted two active database requests появляться не должно, да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2004, 12:28 |
|
||
|
Ошибка attempted two active database requests
|
|||
|---|---|---|---|
|
#18+
Джек ASCRUSПоняли правильно, но так как я не знаю ASP, то и не знаю, как он открывает рекордсеты - в пределах существующей сессии или же автоматически организовывает новую. Посмотрите на всякий случай еще на обьект ADODB.Connection, вполне вероятно там еще нужно вызвать метод явного подсоединения сессии к БД, что то типа conn.Connection. Это я не дописал код,сейчас заглянул в другое место там так: Dim conn Dim rs Set conn=Server.CreateObject("ADODB.Connnection") conn.ConnectionString="dsn=mydsn" Set rs=Server.CreateObject("ADODB.Recordset") conn.CursorLocation = adUseClient conn.Open rs.ActiveConnection=conn rs.Open "Select * from mytable" При таком открытии набора данных ошибки attempted two active database requests появляться не должно, да? По идее не должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2004, 12:34 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=32803623&tid=2014061]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
155ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 260ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...