|
|
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
Пользуюсь ADO для доступа к СУБД Jet. Получаю рекордсет через select, далее добавляю к нму запись через rs.AddNew() И делаю rs.Update. Всё это находится внутри транзакции. Так вот - иногда при Update'е вылетает ошибка 0x80040e21. Можно ли как-нибудь получить более подробную информацию в чём именно дело и куда вообще копать ? Сижу мучаюсь - разобраться из=за чего именно проблематично так как ошибка нечастая и проект большой :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 16:10 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
А текст ошибки какой? (в коллекции Connection.Errors) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 16:20 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 16:23 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
В своё время, меня на этом форуме отучили заниматься обновлением таблиц через recorset, теперь сам советую пользуй объеты ADO, хоть Connection, хоть Command. ВОТ!!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 16:42 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
Исходим из того что отказаться от рекордсета не имею возможности ;) ЗЫ А что плохово в обновлении через рекордсет ? По крайней мере очень лаконично и удобно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 17:12 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
Воспользуйся поиском, поймёшь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 17:21 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
Глюкало этопо определению. Вместо простого и ясного закодированного программистом INSERT и UPDATE, задача постороения соотв. SQL оператора и последующая синхронизация рекордсета и базы данных возлагается на OLEDB провайдера. Ещё можно посмотреть куда ветер дует :), т.е каким образом организовано обновление базы в модели ADO.NET ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 17:23 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
МученникИсходим из того что отказаться от рекордсета не имею возможности ;) А это как? ADODB.Connection недоступен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 17:25 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
один из вероятных источников ошибок при работе с jet через рекордсеты - проблемы выделения памяти. другой проблемы синхронизации данных. первой части касаются - битая память, проблемы с выделением доп. памяти (нехватка, ошибки при свопе и т.д.) нужна (стат) информация по ошибке - возникает на нескольких машинах или только на одной. если на всех - хоть какие-нибудь характеристики размера рекордсета\тов задействованных в момент ошибки. Если это при массовом вводе - после скольких добавлений возникает ошибка. вторая часть сама по себе делится на собственные источники возникновения. общие советы. 1) попробуй ограничить размер maxBufferSize (dbMaxBufferSize) например, через DAO.SetOption для дальнейшего советования нужно бы код видеть. с завязанными глазами - если добавления в цикле и цикл "длинный" - полезно периодически принудительно сбрасывать буфер jet. сильно толково универсального не знаю, найдешь ли... смотреть надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 17:39 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
Отказаться от модели не моргу так как уйма коду написана через рекордсеты и я править его совершенно не хочу, тем более что это не совсем в моём попечении ;) А разрулить ситуацию оч надо... код в основном тупой типа for i=0 to 10 rs.addNew() rs("...") = '"..." rs.Update Или аналогичные операции с перекачкой данных из одного рекордсета в другой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 17:53 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
А действительно в одной транзакции ВСЕ изменения делать нужно? авторОтказаться от модели не моргу так как уйма коду написана через рекордсеты и я править его совершенно не хочу, тем более что это не совсем в моём попечении ;) А разрулить ситуацию оч надо... Значит переписать код придётся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 17:55 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
все-таки начни с maxbufferSize открытому соединению скажи что-то типа Cnn.Properties("Jet OLDEDB:Max Buffer Size").Value = 8196 (или меньше - до 512 включительно) потом уже на этом соединении открывай рекордсеты. CursorLocation для рекордсетов какой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 17:59 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
Кстати ещё - обычно проблемы возникают при параллельной работе двух пользователей ;) ЗЫ Все рекордсеты синхронизирую - то есть пока один создаёт рекордсет по таблице другой пользователь туже таблицу открыть не может на зпапись - только для чтения ;) ЗЫЫ Переписать весь код не вариант :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 17:59 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
Server Side ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 18:01 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
МученникКстати ещё - обычно проблемы возникают при параллельной работе двух пользователей ;) ЗЫ Все рекордсеты синхронизирую - то есть пока один создаёт рекордсет по таблице другой пользователь туже таблицу открыть не может на зпапись - только для чтения ;) ЗЫЫ Переписать весь код не вариант :) Это почти 100% ошибки синхронизации/взаимных блокировок. посмотри ссылки, указанные здесь /topic/42244&pg=7&hl=counter#1190506 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 18:06 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
А как задать свойство соединения MaxBufferSize в ADO и что оно именно означает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 18:06 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
МученникА как задать свойство соединения MaxBufferSize в ADO и что оно именно означает ? F1+ ссылки (частично повторяющиеся) /topic/144755&hl=maxbuffersize#1174363 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 18:09 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
Видимо взаимные блокировки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 18:14 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
Это нереально - вопросы блокировок разруливаются на уровне приложения - то есть в коде предполагается что СУБД не способна к многопотосной работе и полностью самостоятельно поддерживается синхронизация.... А как вообще Jet синхронизует работу ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 18:23 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
ХМ-ХМ. Уже начинает становиться смешно. Интересно, что ВЫ там наваяли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 18:29 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
То что МЫ наваяли то отлично работает, к сожалению подавляющий объём кода ваяли не МЫ, как вы изволили выразится. ЗЫ Что смешного то ? Как работает синхронизация SQL Server'а вполне прозрачно, но вот что там шаманит Jet не понятно и как то не вызывает доверия... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 18:31 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
авторТо что МЫ наваяли то отлично работает, к сожалению подавляющий объём кода ваяли не МЫ, как вы изволили выразится. ДА, теперь совсем смешно, МЫ не МЫ икорова не моя. Sorry for OFF!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 18:42 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
после некоторых ковыряний в носу возникла гипотеза, что подобная ошибка может свидетельствовать об истечении неких внутренних таймаутов ожидания ... не ясно правда чего. глянул в MSDN, что там пишут про 0x80040e21 получается, что это некий тип "общей ошибки", которая может возникать в ответ на - ошибку инициализации провайдера при попытке открыть соединение - попытку открыть обновляемый рекордсет с "серверным курсором" на источнике, который не может этого обеспечить по своей природе или попытку произвести неподдерживаемую рекордсетом операцию - типа update - попытку установить значение querytimeout за рамками допустимых значений. -при использовании [Microsoft][ODBC Microsoft Access 97 Driver] + АДО такая ошибка может возникать при попытке присвоить значение NULL полю, которое not nullable. -может свидетельствовать о конфликтах при batch-update-ах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 03:12 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
автор код в основном тупой типа for i=0 to 10 rs.addNew() rs("...") = '"..." rs.Update Или аналогичные операции с перекачкой данных из одного рекордсета в другой Идеальный случай для применения INSERT . . . SELECT . . . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 09:12 |
|
||
|
Ошибка во время многошаговой операции...
|
|||
|---|---|---|---|
|
#18+
м.б. и это: PRB: "Multiple-step OLE DB Operation Generated Errors" When Opening ADO Connection PSS ID Number: 269495 CAUSE The following are two possible causes of this error: In the registry, under the key for an OLE DB provider's CLSID, there may be an entry named OLEDB_SERVICES. If the OLE DB provider being used to make the ADO connection doesn't have the OLEDB_SERVICES entry, and ADO tries to set up a property that is not supported by the provider, the error occurs. For more information on this registry entry, see the "Resolution" section. If OLEDB_SERVICES entry exists but there is a problem in the ADO connection string, the error occurs. If the OLEDB_SERVICES registry entry is not present, the call to set up a property is made directly to the provider. If the provider does not support the property, the SetProperties OLE DB call made by ADO will fail. This is a fatal failure if the property is required in order to make a connection. If the property was explicitly included in the connection string, it is most likely required. If the property setting is optional, the failure is not fatal. This is the case when you connect without explicitly setting the property in the connection string. In this case, ADO sets the property to True but marks it as optional. RESOLUTION You can work around this problem in the following ways: Do not use the "Persist Security Info" keyword in your ADO connection string. Add the OLEDB_SERVICES registry entry as follows:IMPORTANT: This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base: 256986 Description of the Microsoft Windows Registry Start Registry Editor (Regedit.exe). In the registry under HKEY_CLASSES_ROOT\CLSID, find the CLSID of the OLE DB Provider. For example, the following registry key is for the Microsoft OLE DB Provider for SQL Server (SQLOLEDB): HKEY_CLASSES_ROOT\CLSID\{0C7FF16C-38E3-11d0-97AB-00C04FC2AD98} Click the CLSID, and then on the Edit menu, click Add Value and add the following registry value: Value Name: OLEDB_SERVICES Data Type: REG_DWORD Value: 0xFFFFFFFF NOTE: To find the CLSID for the provider you are using, search for the provider's ProgID (SQLOLEDB, for example) in the registry under HKEY_LOCAL_MACHINE\SOFTWARE\Classes\. Under the ProgID, there will be a key named CLSID. If the above conditions are satisfied and you still receive the error, check your connection string for other possible errors. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 09:27 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32927353&tid=1668438]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 391ms |

| 0 / 0 |
