Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Ошибка attempted two active database requests / 11 сообщений из 11, страница 1 из 1
26.11.2004, 11:06
    #32800985
Джек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка attempted two active database requests
Добрый день всем!
У меня 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 а в другом?
Заранее большое спасибо за ответ!
...
Рейтинг: 0 / 0
26.11.2004, 14:16
    #32801521
mustlive
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка attempted two active database requests
Может, у тебя база в монопольном режиме запущена? А вообще, в 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.
...
Рейтинг: 0 / 0
29.11.2004, 06:07
    #32803024
Джек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка attempted two active database requests
Уважаемый mastlive!
Спасибо за ответ!
Не могли бы Вы прокомментировать то что написано в RTFM?
Я как мог перевёл, но не пойму причём здесь сообщение WM_PAINT,
ведь оно касается только перерисовки окон?
И как ещё узнать запущена ли база в монопольном режиме или нет?
Заранее большое спасибо!
...
Рейтинг: 0 / 0
29.11.2004, 06:31
    #32803035
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка attempted two active database requests
ДжекУважаемый mastlive!
Спасибо за ответ!
Не могли бы Вы прокомментировать то что написано в RTFM?
Я как мог перевёл, но не пойму причём здесь сообщение WM_PAINT,
ведь оно касается только перерисовки окон?
И как ещё узнать запущена ли база в монопольном режиме или нет?
Заранее большое спасибо!
В ошибке написано, что идет попытка обращения к запросу, который уж был запущен из приложения. В качестве примера приводится ситуация с параллейным потоком обработки WINAPI в Embedded SQL, когда приложение запустив запрос в параллейном потоке и получив в основном потоке событие WM_PAINT попыталось обратиться к запросу, который еще не был выполнен сервером. В Вашем случае получается, что в ASP во время выполнения запроса и не дожидаясь его окончания где то еще идет к нему обращение.
...
Рейтинг: 0 / 0
29.11.2004, 10:53
    #32803363
Джек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка attempted two active database requests
Уважаемый ASCRUS!
Спасибо большое за разъяснение описания ошибки!
Но тогда как же обеспечить многопользовательскую работу с этой
базой без выскакивания этих ошибок?
Это делается в программе или можно как-то настроить сам сервер
Sybase, чтобы он ждал завершения каждого запроса?Если можно то как?
Заранее большое спасибо!
...
Рейтинг: 0 / 0
29.11.2004, 11:05
    #32803401
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка attempted two active database requests
ДжекУважаемый ASCRUS!
Спасибо большое за разъяснение описания ошибки!
Но тогда как же обеспечить многопользовательскую работу с этой
базой без выскакивания этих ошибок?
Это делается в программе или можно как-то настроить сам сервер
Sybase, чтобы он ждал завершения каждого запроса?Если можно то как?
Заранее большое спасибо!
Хоть я и не знаю ASP, но могу точно сказать, что дело не в сервере, а ASP и Вашем коде на нем. Во первых нужно посмотреть, не стоит ли на OLE DB соединении флаг "Asynchronous", означающий асинхронное выполнение запросов, где соединение посылает запрос на сервер и не дожидаясь его выполнения передает управление обратно приложению для дальнейшей работы. Во вторых открываете ли Вы для каждого соединения в ASP отдельную сессию работы с СУБД или же пытаетесь работать через один коннект ? В случае попытки работы всех параллейных соединений клиентов ASP через одно соединение с БД Вы и получите как раз такую ошибку. Правильным может быть только организация на каждого клиента ASP собственного соединения с БД.
...
Рейтинг: 0 / 0
29.11.2004, 12:06
    #32803623
Джек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка attempted two active database requests
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"
и это неправильно, да?
Правильно я Вас понял?
...
Рейтинг: 0 / 0
29.11.2004, 12:09
    #32803635
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка attempted two active database requests
ДжекУ меня источник данных 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.
...
Рейтинг: 0 / 0
29.11.2004, 12:28
    #32803703
Джек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка attempted two active database requests
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
появляться не должно, да?
...
Рейтинг: 0 / 0
29.11.2004, 12:34
    #32803720
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка attempted two active database requests
Джек 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
появляться не должно, да?
По идее не должно.
...
Рейтинг: 0 / 0
29.11.2004, 12:40
    #32803736
Джек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка attempted two active database requests
Спасибо ещё раз за ответы!
Сейчас буду исправлять ASP-страницы.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Ошибка attempted two active database requests / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]