Control-ADO при работе с Windows Server
Oracle:
Microsoft не поддерживает 64-битный поставщик данных OLEDB для Oracle. Используйте «Oracle Provider for OLE-DB«(«Поставщик данных Oracle для OLE-DB») вместо «Microsoft OLE-DB Provider für Oracle» . Для доступа к ADO используйте „Provider=OraOLEDB.Oracle;Data Source=….“ вместо „Provider=msdaora;Data source=…“,.
Или другой вариант:
с ODBC вместо
Driver={Microsoft ODBC for Oracle};Server=myServerAddress;Uid=myUsername;Pwd=myPassword;
используйте DSN=mySourceName;UID=;PWD=; (сначала здесь необходимо добавить имя источника данных (DSN) системы к источнику данных ODBC).
Для использования интерфейса ADO на машинах с 64-битной операционной системой Windows следует также обратить внимание на следующее:
- Установите 32-битного клиента, а также сконфигурируйте клиента (с помощью Oracle Net, SQLPLUS, Oracle Odbc), если на компьютере работает сервер Oracle. Необходимо выполнить установку (успешного выполнения проверки не достаточно для администратора Odbc!).
- Обратите внимание, что при указании пути к каталогу Oracle Inventory нельзя использовать «;» (запятая). Найдите «Oracle\Inventory» в реестре и измените путь. Также измените путь в файловой системе.
- Вам необходимо выполнить администрирование 32-битного клиента с помощью c:\Windows\SysWOW64\odbcad32.exe. Администратору ODBC на панели управления известны только 64-битные драйверы.
ВНИМАНИЕ!
Если вы запустите не того администратора, то без проблем сможете сконфигурировать и проверить имя источника данных 64-битного драйвера. Однако программа «КАСКАД Цифра» не может установить соединение с ним, так как для него требуется 32-битный драйвер.
Сообщения об ошибках
В данном разделе содержатся все сообщения об ошибках, которые могут произойти при выполнении процессов в интерфейсе ADOпри работе с Windows.
В зависимости от среды разработки, а также механизма, используемого для определения состояния ошибки, коды возврата отображаются в одной из двух форм:
- 0x80004005 (шестнадцатеричная)
- -2147467259 (длинная)
Это одни и те же значения, но в разной форме. В данном случае это значения ошибок, которые могут указывать на то, что ни OLE DB, ни ее базовый поставщик данных не могут четко установить источник возникновения ошибки.
Часто встречаемые коды возврата, получаемые от OLE
Данный список составлен на основе файла Winerror.h, который поставляется вместе с Win32 SDK:
Коды возврата без знака | Шестнадцатеричные коды возврата со знаком | Описание |
0x80000001 | -2147483647 | Не реализовано |
0x80000002 | -2147483646 | Выход за пределы памяти |
0x80000003 | -2147483645 | Один или более аргументов недействительны |
0x80000004 | -2147483644 | Данный интерфейс не поддерживается |
0x80000005 | -2147483643 | Недействительный указатель |
0x80000006 | -2147483642 | Неправильная обработка |
0x80000007 | -2147483641 | Операция прервана |
0x80000008 | -2147483640 | Неопределенная ошибка |
0x80000009 | -2147483639 | Ошибка из-за запрета общего доступа |
0x8000000A | -2147483638 | Данные, необходимые для выполнения данной операции, пока не доступны. |
0x80004001 | -2147467263 | Не реализовано |
0x80004002 | -2147467262 | Данный интерфейс не поддерживается |
0x80004003 | -2147467261 | Недействительный указатель |
0x80004004 | -2147467260 | Операция прервана |
0x80004005 | -2147467259 | Неопределенная ошибка |
0x80004006 | -2147467258 | Сбой локального ЗУ потока |
0x80004007 | -2147467257 | Получить сбой распределителя совместно используемой памяти |
0x80004008 | -2147467256 | Получить сбой распределителя памяти |
0x80004009 | -2147467255 | Невозможно инициализировать класс кэш-памяти |
0x8000400A | -2147467254 | Невозможно инициализировать службы RPC (удаленного вызова процедур) |
0x8000400B | -2147467253 | Не удается осуществить управление каналом локального ЗУ потока |
0x8000400C | -2147467252 | Не удается распределить управление каналом локального ЗУ потока |
0x8000400D | -2147467251 | Распределитель памяти, предоставленный пользователем, является неприемлемым. |
0x8000400E | -2147467250 | Взаимное исключение службы OLE уже существует |
0x8000400F | -2147467249 | Сопоставление файлов службы OLE уже существует |
0x80004010 | -2147467248 | Невозможно сопоставить вид файла для службы OLE |
0x80004011 | -2147467247 | Сбой при попытке запуска службы OLE |
0x80004012 | -2147467246 | Была произведена попытка вызвать CoInitialize второй раз при одиночном потоке |
0x80004013 | -2147467245 | Нужно было провести удаленную активацию, но она не была разрешена |
0x80004014 | -2147467244 | Нужно было провести удаленную активацию, но предоставлленное имя сервера былонедействительным |
0x80004015 | -2147467243 | Класс сконфигурирован для работы в качестве идентификатора безопасности, отличного от вызывающей программы |
0x80004017 | -2147467241 | Необходимо задать RunAs в виде <имя домена>/<имя пользователя> или просто <имя пользователя> |
0x80004018 | -2147467240 | Обслуживающий процесс не может быть запущен. Возможно, имя пути указано неверно. |
0x80004019 | -2147467239 | Обслуживающий процесс не может быть запущен по причине сконфигурированного идентификатора. Возможно, имя пути указано неверно или оно недоступно. |
0x8000401A | -2147467238 | Обслуживающий процесс не может быть запущен, потому что сконфигурированный идентификатор неверный. Проверьте имя пользователя и пароль. |
0x8000401B | -2147467237 | Клиент не имеет разрешения на запуск данного сервера. |
0x8000401C | -2147467236 | Служба, обеспечивающая данный сервер, не может быть запущена. |
0x8000401D | -2147467235 | Данный компьютер не смог связаться с компьютером, обеспечивающим сервер. |
0x8000401E | -2147467234 | Сервер не отвечал с момента запуска. |
0x8000401F | -2147467233 | Информация по регистрации для данного сервера является несоответствующей или неполной. |
0x80004020 | -2147467232 | Информация по регистрации для данного интерфейса является несоответствующей или неполной. |
0x80004021 | -2147467231 | Неудавшаяся операция не поддерживается. |
0x8000FFFF | -2147418113 | Катастрофический отказ |
0x80070005 | -2147024891 | Ошибка из-за запрета общего доступа |
0x80070006 | -2147024890 | Неправильная обработка |
0x8007000E | -2147024882 | Выход за пределы памяти |
0x80070057 | -2147024809 | Один или более аргументов недействительны |
Коды возврата из OLE DB для отладки
Данный список составлен на основе файла Oledberr.h, который поставляется вместе с OLE-DB SDK:
Кодывозврата без знака | Шестнадцатеричные коды возврата со знаком | Описание |
0x80040E00 | -2147217920 | Недействительное средство доступа |
0x80040E01 | -2147217919 | Создание другой строки приведет к превышению общего числа активных строк, поддерживаемых набором строк |
0x80040E02 | -2147217918 | Невозможно сделать запись с помощью средства доступа, предназначенного только для чтения |
0x80040E03 | -2147217917 | Заданные значения нарушают логическую структуру данных |
0x80040E04 | -2147217916 | Неправильная обработка строки |
0x80040E05 | -2147217915 | Объект был открытым |
0x80040E06 | -2147217914 | Недействительный раздел |
0x80040E07 | -2147217913 | Буквенное значение в команде нельзя конвертировать в правильный тип, но не по причине переполнения данными |
0x80040E08 | -2147217912 | Недействительная информация о связывании |
0x80040E09 | -2147217911 | Доступ не разрешен |
0x80040E0A | -2147217910 | Указанный столбец не содержит закладок или разделов |
0x80040E0B | -2147217909 | Некоторые ограничения затрат отклонены |
0x80040E0C | -2147217908 | Не установлена команда для объекта команды |
0x80040E0D | -2147217907 | Невозможно найти план запроса в рамках заданного ограничения затрат |
0x80040E0E | -2147217906 | Недействительная закладка |
0x80040E0F | -2147217905 | Недействительный режим блокировки |
0x80040E10 | -2147217904 | Не задано значение для одного или более требуемых параметров |
0x80040E11 | -2147217903 | Недействительный идентификатор столбца |
0x80040E12 | -2147217902 | Недействительный коэффициент |
0x80040E13 | -2147217901 | Недействительное значение |
0x80040E14 | -2147217900 | В команде содержалась одна или более ошибок |
0x80040E15 | -2147217899 | Невозможно отменить выполнение команды |
0x80040E16 | -2147217898 | Поставщик не поддерживает указанный диалект |
0x80040E17 | -2147217897 | Источник данных с указанным именем уже существует |
0x80040E18 | -2147217896 | Набор строк был надстроен над каналом оперативных данных и его нельзя перезапустить |
0x80040E19 | -2147217895 | В текущем диапазоне невозможно найти ключ, соответствующий описанным характеристикам |
0x80040E1A | -2147217894 | Принадлежность данной иерархической структуры закреплена за поставщиком данных |
0x80040E1B | -2147217893 | Поставщик данных не может определить идентификатор для вновь вставленных строк |
0x80040E1C | -2147217892 | Ни для каких поддерживаемых задач не указаны весовые коэффициенты, отличные от нуля, поэтому задача была отклонена |
0x80040E1D | -2147217891 | Запрашиваемый вид преобразования не поддерживается |
0x80040E1E | -2147217890 | lRowsOffset выполнит перевод в любой конец набора строк, вне зависимости от указанного значения cRows; значение cRowsObtained равно 0 |
0x80040E1F | -2147217889 | Информация была потребована по запросу, а запрос не был установлен |
0x80040E20 | -2147217888 | Поставщик выполнял вызов метода из IRowsetNotify, который находится у потребителя и в NT |
0x80040E21 | -2147217887 | Возникли ошибки |
0x80040E22 | -2147217886 | Указано отличное от нуля регулирующее значение IUnknown, при этом создаваемый объект не поддерживает агрегирования. |
0x80040E23 | -2147217885 | Заданное значение HROW, которое относится к строке с фиксированным или программируемым удалением |
0x80040E24 | -2147217884 | Набор строк не поддерживает обратный вызов |
0x80040E25 | -2147217883 | Необходимо сбросить все значения HROW перед тем, как получить новые |
0x80040E26 | -2147217882 | Один из указанных для хранения флажков не поддерживается |
0x80040E28 | -2147217880 | Указанный флажок состояния не является ни DBCOLUMNSTATUS_OK, ни DBCOLUMNSTATUS_ISNULL |
0x80040E29 | -2147217879 | Набор строк не прокручивается обратно |
0x80040E2A | -2147217878 | Неправильная обработка области |
0x80040E2B | -2147217877 | Указанный набор строк не прилегал или не перекрывал строки в указанной области наблюдения |
0x80040E2C | -2147217876 | Был указан переход от ALL* к MOVE* или EXTEND* |
0x80040E2D | -2147217875 | Указанная область не является подходящей подобластью области, определенной с помощью обработки заданной области наблюдения |
0x80040E2E | -2147217874 | Поставщик не поддерживает команды со сложными выражениями |
0x80040E2F | -2147217873 | Указанное значение нарушает правила соблюдения целостности для столбца или таблицы |
0x80040E30 | -2147217872 | Заданное имя типа не опознано |
0x80040E31 | -2147217871 | Выполнение прервано, так как было достигнут предельное значение ресурса; ни один из результатов не возвращен |
0x80040E32 | -2147217870 | Невозможно клонировать объект команды, если ее иерархическая структура команд содержит набор или наборы строк |
0x80040E33 | -2147217869 | Невозможно представить текущую иерархическую структуру в виде текста |
0x80040E34 | -2147217868 | Указанный указатель уже существует |
0x80040E35 | -2147217867 | Указанный указатель не существует |
0x80040E36 | -2147217866 | Указанный указатель уже использовался |
0x80040E37 | -2147217865 | Указанная таблица не существует |
0x80040E38 | -2147217864 | В наборе строк использовался оптимистичный параллелизм, при этом с момента последнего считывания изменилось значение столбца |
0x80040E39 | -2147217863 | Во время копирования были обнаружены ошибки |
0x80040E3A | -2147217862 | Указанная степень точности недействительна |
0x80040E3B | -2147217861 | Указанный масштаб недействителен |
0x80040E3C | -2147217860 | Недействительный идентификатор таблицы |
0x80040E3D | -2147217859 | Указанный тип недействителен |
0x80040E3E | -2147217858 | Идентификатор столбца встречался более одного раза в процессе указания |
0x80040E3F | -2147217857 | Указанная таблица уже существует |
0x80040E40 | -2147217856 | Указанная таблица уже использовалась |
0x80040E41 | -2147217855 | Указанный идентификатор территории не поддерживался |
0x80040E42 | -2147217854 | Указанный номер записи недействителен |
0x80040E43 | -2147217853 | Хотя закладка была создана правильно, невозможно найти строку, которая бы ей соответствовала |
0x80040E44 | -2147217852 | Значение свойства недействительно |
0x80040E45 | -2147217851 | Набор строк не разделен на разделы |
0x80040E46 | -2147217850 | Недействительное средство доступа |
0x80040E47 | -2147217849 | Недействительные флажки для хранения |
0x80040E48 | -2147217848 | Средства доступа по ссылке не поддерживаются данным поставщиком |
0x80040E49 | -2147217847 | Средства доступа с нулевым значением не поддерживаются данным поставщиком |
0x80040E4A | -2147217846 | Команда не подготовлена |
0x80040E4B | -2147217845 | Указанное средство доступа не являлось средством доступа по параметрам |
0x80040E4C | -2147217844 | Заданное средство доступа предназначено только для записи |
0x80040E4D | -2147217843 | Сбой при авторизации |
0x80040E4E | -2147217842 | Изменение было отменено при уведомлении; колонки остались без изменений |
0x80040E4F | -2147217841 | В наборе строк только один раздел, который не был выпущен |
0x80040E50 | -2147217840 | Неправильная обработка источника |
0x80040E51 | -2147217839 | Поставщик не может получить информацию о параметрах, при этом не было никакого вызова SetParameterInfo |
0x80040E52 | -2147217838 | Объект источника данных уже прошел инициализацию |
0x80040E53 | -2147217837 | Поставщик не поддерживает данный метод |
0x80040E54 | -2147217836 | Количество строк, в которых в данный момент производятся изменения, превысило установленное предельное значение |
0x80040E55 | -2147217835 | Указанный столбец не существует |
0x80040E56 | -2147217834 | В данный момент производятся изменения в строке с отсчетом ссылок от нуля |
0x80040E57 | -2147217833 | Буквенное значение в команде вышло за пределы диапазона типа для соответствующего столбца |
0x80040E58 | -2147217832 | Предоставленное значение HRESULT недействительно |
0x80040E59 | -2147217831 | Предоставленное значение LookupID недействительно |
0x80040E5A | -2147217830 | Предоставленное значение DynamicErrorID недействительно |
0x80040E5B | -2147217829 | Невозможно получить видимые данные для вновь вставленной строки, которая еще не обновлена |
0x80040E5C | -2147217828 | Недействительный флажок для преобразования |
0x80040E5D | -2147217827 | Заданное имя параметра не опознано |
0x80040E5E | -2147217826 | Несколько объектов хранилищ невозможно открыть одновременно |
0x00040EC0 | 265920 | Выборка требуемого числа строк приведет к превышению общего числа активных строк, поддерживаемых набором строк |
0x00040EC1 | 265921 | Один или более типов столбцов являются несовместимыми; во время копирования произойдут ошибки, связанные с преобразованием |
0x00040EC2 | 265922 | Информация о типе параметра подменяется вызывающей программой |
0x00040EC3 | 265923 | Пропущенная закладка для удаленной строки или строки, которая сюда не входит |
0x00040EC4 | 265924 | Обнаружены ошибки при проверке правильности иерархической структуры |
0x00040EC5 | 265925 | Больше наборов строк нет |
0x00040EC6 | 265926 | Достигнуто начало или конец набора строк или раздела |
0x00040EC7 | 265927 | Поставщик повторно выполнил команду |
0x00040EC8 | 265928 | Буфер переменных данных заполнен полностью |
0x00040EC9 | 265929 | Больше результатов нет |
0x00040ECA | 265930 | Сервер не может отключить или снизить степень защищенности блокировки до завершения транзакции |
0x00040ECB | 265931 | Указанный весовой коэффициент не поддерживался или превышал поддерживаемое предельное значение, при этом для него было задано значение 0 или поддерживаемое предельное значение |
0x00040ECD | 265933 | Диалект языка входных данных проигнорирован, а текст был возвращен в другом диалекте |
0x00040ECE | 265934 | Потребитель не заинтересован в получении в дальнейшем вызовов с уведомлением для данного этапа |
0x00040ECF | 265935 | По этой причине потребитель не заинтересован в получении в дальнейшем вызовов с уведомлением |
0x00040ED1 | 265937 | Чтобы снова перейти к началу набора строк, поставщик должен был заново выполнить запрос; вне зависимости от того, был ли изменен порядок столбцов, были ли они добавлены или удалены из набора строк |
0x00040ED2 | 265938 | Данный метод дает некоторые ошибки; ошибки были возвращены в массив ошибок |
0x00040ED3 | 265939 | Неправильная обработка строки |
0x00040ED4 | 265940 | Заданное значение HROW, которое относится к строке с фиксированным удалением |
0x00040ED5 | 265941 | Поставщик не смог проследить все изменения; клиент должен заново вызвать данные, связанные с областью наблюдения, с помощью другого метода |
0x00040ED6 | 265942 | Выполнение приостановлено из-за достижения предельного значения ресурса; результаты, полученные до настоящего момента, возвращены, но возобновить выполнение невозможно |
0x00040ED8 | 265944 | Степень защищенности блокировки стала выше указанного значения |
0x00040ED9 | 265945 | Одно или более свойств было изменено с разрешения поставщика |
0x00040EDA | 265946 | Возникли ошибки |
0x00040EDB | 265947 | Указанный параметр был недействителен |
0x00040EDC | 265948 | Обновление данной строки привело к обновлению не менее одной строки в источнике данных |