Непредвиденная ошибка драйвера внешней базы данных 12034

Logo
MurCode

  • Форумы
  • Поиск
  • О проекте

GAV27

Дата: 28.01.2011 06:54:11

Добрый день! Имеется программа, у которой 2 режима работы: локальный (в виде папки с данными, если правильно понял Paradox) и сетевой (в виде БД SQL Server). Раньше работали с локальной версией….Сейчас зачем то понадобилось использовать сетевую, и стоит задача переноса данных. БД небольшая, таблиц мало.
Опишу файлики бд paradox:
DDocs.db Ddocs.px
Rubs_doc.db Rubs_doc.xg0 Rubs_doc.yg0
Sub_doc.db Sub_doc.xg0 Sub_doc.yg0
Dtext.db Dtext.xg0 Dtext.yg0 Dtext.mb
Jout.db Jout.px
People.db People.px

В общем пытаюсь импортировать данные в SQL. С помощью DTS выбираю сначала Paradox 5 и указываю папку. Он определяет все 6 таблиц. Но импорт завершается успешно только для 3 таблиц — Ddocs, Jout, People. Для всех остальных сообщение:
Error Source: Microsoft Jet Database Engine
Error Description: Непредвиденная ошибка драйвера внешней базы данных (12034)
Context: Error calling OpenRowset on the provider

Если это имеет значение, то в папке есть 2 файлика: paradox.lck, pdoxusrs.lck

И в общем не переносит. Подскажите, может быть я что-то неправильно делаю, как исправить ошибку и перенести данные со всех таблиц.
Спасибо за внимание!

kDnZP

Дата: 28.01.2011 08:56:51

GAV27, а попробуйте оставить при импорте только файлы *.db (все остальное *.px, *.xg0, *.yg0 убрать). Т.к. по сути это индексы и ссылочная целостность, и они у Парадокса имели свойство периодически рушиться… Ну и попробуйте импорт через ODBC-источники, как вариант, создав linked server.

Glory

Дата: 28.01.2011 11:36:36

GAV27
Он определяет все 6 таблиц. Но импорт завершается успешно только для 3 таблиц — Ddocs, Jout, People. Для всех остальных сообщение:
Error Source: Microsoft Jet Database Engine
Error Description: Непредвиденная ошибка драйвера внешней базы данных (12034)
Context: Error calling OpenRowset on the provider

А типы полей в этих остальных таблицах совместимы с типами MSSQL ?

GAV27

Дата: 28.01.2011 14:51:29

Да, совместимы. После удаления файликов xg0, yg0 импорт завершился успешно. Спасибо большое за помощь)

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    CRecordset и Wizzard VC++ 6

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,

      Junior

      *

      Рейтинг (т): 0

      Порождаю класс от CRecordset. Wizzard почему-то не генерит поля таблицы БД. Хотя с двумя другими таблицами все проходит как надо, а все таблицы технически одинаковые, Paradox. В общем, не могу заюзать таблицу. Никто не сталкивался с подобным и что тут можно сделать?


      Rara Avis



      Сообщ.
      #2

      ,

        Junior

        *

        Рейтинг (т): 5

        Я сталкивался с проблемой, что этот Визард неправильно генерирует класс для таблицы ФоксПро. Как выяснилось, ОДБЦ для данной таблицы неправильно возвращает кол-во полей: 63 вместо 6, в итоге конечный класс даже не компилировался. Обошел я это тем, что сам выступил в роли Визарда, т.е. написал нужный класс вручную. У меня тоже все таблицы были одинаковы по структуре, а неправильная генерация зависила от имени файла таблицы…


        cyberSpice



        Сообщ.
        #3

        ,

          Junior

          *

          Рейтинг (т): 0

          Цитата Rara Avis @

          Я сталкивался с проблемой, что этот Визард неправильно генерирует класс для таблицы ФоксПро. Как выяснилось, ОДБЦ для данной таблицы неправильно возвращает кол-во полей: 63 вместо 6, в итоге конечный класс даже не компилировался. Обошел я это тем, что сам выступил в роли Визарда, т.е. написал нужный класс вручную. У меня тоже все таблицы были одинаковы по структуре, а неправильная генерация зависила от имени файла таблицы…

          А класс полностью вручную писать или сегенерить все-таки Визардом и дополнить то, что он сам не сгенерил?


          Rara Avis



          Сообщ.
          #4

          ,

            Junior

            *

            Рейтинг (т): 5

            Да без разницы, только если он не правильно сгенерит, нужно все его косяки подправить нез забыть. У меня, например, были описаны куча несуществующих полей (63 вместо 6) и кол-во полей указано неправильно (там есть переменная-член m_nFields, ее значение выставляется в конструкторе)… А лучше, попробуй переименовать таблицу и повторить операцию генерации класса. У меня эта проблема проявлялась именно из-за имени файла таблицы, насколько я помню, у меня в имени файла было несколько символов подчеркивания (‘_’), идущих подряд. Хотя, у тебя может не та же проблема.


            cyberSpice



            Сообщ.
            #5

            ,

              Junior

              *

              Рейтинг (т): 0

              Не выходит вручную прописать поля. Выдает окно с «Непредвиденная ошибка драйвера внешней базы данных (12034)». Что бы это могло значить. Вроде бы все прописал как это делает визард.


              MAxZ



              Сообщ.
              #6

              ,

                мне вообще не нравится этот подход, хотя у него есть свои плюсы
                имхо лучше самому создать классы для работы с БД и делать это через SQL запросы

                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                0 пользователей:

                • Предыдущая тема
                • C/C++: Базы данных
                • Следующая тема

                Рейтинг@Mail.ru

                [ Script execution time: 0,0626 ]   [ 16 queries used ]   [ Generated: 22.09.23, 05:04 GMT ]  

                Цитата Сообщение от Rastafaryanin
                Посмотреть сообщение

                Жаль, но я так и не понял как перевести базу в новый формат
                А пробовать повсякому нет ни времени ни желания. Разве трудно написать пошаговую инструкцию, чтоб было понятно с первого взгляда?

                я открыл ацесс и вкладка внешние данные у меня неактивна.
                откуда мне знать какие данные нужныё? мне просто надо чтоб программа работала.
                С уважением.

                Попробую .

                1.Устанавливаем программу.,соответственно удалив старую и сохранив от нее шаблоны и базу.
                2.Ставим новую версию.
                3.Заходим в папку Data и открываем в ACCESS файл basemp.mdb.
                4.Далее выбираем Внешние данные—>тип файла Paradox.
                5.Выбираем например service.DB из нашей старой базы и импортируем.
                6.Если он импортировался как service1 удалите чистую service и переименуйте таблицу в service.
                7.Если при импорте выскакивает ошибка..(не помню номер) ,попробуйте удалить из старой базы файлы с расширением *.YG0,и импортировать снова.
                8.После импорта,выбраем таблицу photo и жмем КОНСТРУКТОР и добавляем поле Photo типа (поле обьекта OLE).
                Пункт 8 необязателен ,если вы не сохраняете фотографии.
                9.Закрываем наш basemp.mdb., и запускаем Smp_updater 1.06 он в директории программы.
                10.Выбираем файл basemp.mdb и жмем обновить!
                Все!

                P.s Если у вас сбивается кодировка,выберите еще раз региональные настройки в панели управления Windows.

                Недавно мне пришлось писать программу на C# для конвертации данных из базы Paradox в другую, более современную. Как я выяснил, есть разные способы подключения к базе данных из C#, например, через Microsoft Jet OLE DB, или через Microsoft Paradox Driver, я выбрал второй способ. Строку подключения можно посмотреть на connectionstrings.com После удачного подключения через Microsoft Paradox Driver я пытался получить данные, но столкнулся с ошибкой «Непредвиденная ошибка драйвера внешней базы данных (11265)«.

                При поиске решения проблемы я выяснил несколько важных вещей касательно Paradox в Windows 7 64 bit:

                1. Для 64 разрядной системы нет драйверов для базы Paradox. В этом можно убедиться, зайдя в Панель управления — Администрирование — Источники данных (ODBC) и не увидев там драйверов для Paradox-а. Однако, если зайти в Источники данных (ODBC) через c:\Windows\SysWOW64\odbcad32.exe — то мы сразу увидим там кучу дополнительных драйверов, включая Microsoft Paradox Driver.
                  Таким образом, я пришел к 1-му выводу: приложение должно работать в режиме 32 битного приложения чтобы оно увидело драйвера для Paradox-а. Для этого приложение нужно компилировать с флагом 32BIT, либо установить этот флаг на exe файл, например, с помощью .Net Tools.
                2. Нужно быть внимательным при написании строки подключения Microsoft Paradox Driver. В ней обязательно должен обязательно присутствовать пробел после *.db. Без этого пробела программа не сможет найти драйвер.
                3. После подключения к базе через Microsoft Paradox Driver я попытался выполнить запрос к базе и получил ошибку «Непредвиденная ошибка драйвера внешней базы данных (11265)«. После долгих поисков в интернете я выяснил, что это происходит из-за того, что приложение не может создать в корне диска C: файл PDOXUSRS.NET. Напрашивался вывод, что приложение нужно запускать с администраторскими правами, чтобы она смогла писать в корень системного диска. Однако, как выяснилось, это не обязательно. Можно просто в BDE Administrator указать в Configuration\Drivers\Native\Paradox NET DIR другую папку для сохранения файла.
                4. Так же, необходимо, чтобы у пользователя были права на файл c:\Windows\System32\odbc32.dll (спасибо за помощь Владимиру в комментарии ниже)
                5. В строке подключения никаким образом не указать кодировку базы, т.к. у драйвера нет таких опций. Если база в windows-кодировке, драйвер будет ее упорно выдавать как западноевропейскую 1252. Единственное корректное решение, к которому я пришел — это преобразовывать кодировку, например, так:
                  out_str = Encoding.GetEncoding(1251).GetString(Encoding.GetEncoding(1252).GetBytes(in_str))
                  где in_str — это строка, полученная из базы.

                В интернете встречается большое число различных советов. Большинство из них мне не помогли. Те, что я написал, возможно, для кого-то тоже не подойдут. Но возможно, кому-то я все-таки смог помочь.

                 
                TriNeT
                 
                (2002-03-25 06:36)
                [0]

                Доброго времени суток.

                Опять прошу помощи у всезнающего ALL. Проблема с сабжем состоит в следующем:

                Имеется две базы данных (Paradox) на одном из файловых серверов. Эти базы ведутся своими приложениями. И имеется моя программа, которой необходимо периодически обращаться к этим базам, чтобы считать некоторую информацию. Обращение происходит в режиме read-only.

                В силу определенных обстоятельств мне приходится использовать ADO а не BDE (хотя я на эти обстоятельства вовсе даже не жалуюсь). Так вот, чтобы достучаться до Paradox-таблиц через ADO мне приходится использовать ODBC (по-моему других провайдеров в стандартном комплекте нет, а другими лучше не пользоваться). Создаю системный DSN, связываю его с драйвером Microsoft Paradox Driver, указываю сетевой каталог (насколько я понимаю, это путь к файлу pdoxusrs.net). Остальные параметры, как то — путь к таблицам, определяю в своей программе и динамически формирую ConnectionString в TADOConnection.

                При тестировании на локальной машине, все проходит нормально, устанавливается соединение с базой, данные читаются и все такое. Ну это и понятно, поскольку я и есть единственный юзер для этой базы. Но как только переносишь испытания на реальную сеть, при попытке соединения с базой вываливается exception с номером ошибки 11270 и описанием, информативным, как инструкция по использованию туалетной бумаги: «Непредвиденная ошибка драйвера». Описания этой ошибки найти не смог. Единственное, что я выяснил — точно такая же ошибка выскакивает при использовании любой программы просмотра таблиц БД (в частности, «родной» офисный msqry), причем в DSN я указываю ВСЕ необходимые параметры.

                Из-за этого у меня ощущение, что то-ли я неправильно указываю параметры в DSN, то ли проблема как-то связана с файлом Pdoxusrs.net

                Люди, кто сталкивался с подобным — поделитесь опытом. А кто не сталкивался, может быть подкинете идеюку-другую? Может быть я просто зациклился и не вижу того, что лежит на поверхности. Буду благодарен всем, кто откликнется!


                 
                sniknik
                 
                (2002-03-25 09:08)
                [1]

                Попробуй все же прямую связку без ODBC.

                строка подключения к Paradox вполне стандартна :).

                Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties=Paradox 4.0;Persist Security Info=False

                Выдержка из Хелпа. Номера 11270 не нашол, было бы конкретней но можно еще в MSDN поискать.

                Непредвиденная ошибка драйвера внешней базы данных <номер ошибки>. (Ошибка 3275)

                Драйвер внешней (указанной) базы данных возвращает ошибку. Такие ошибки являются результатом попытки выполнения операции, не поддерживаемой базами данных этого типа.

                т.е. по сути у тебя какаято операция поддерживается локальным драйвером и не поддерживается сетевым.


                 
                TriNeT
                 
                (2002-03-25 10:48)
                [2]

                2 sniknik ©

                Спасибо за то, что откликнулись.

                Попробовал. Введя дословно ту ConnectionString, которая была указана в примере (предварительно естественно заменив пути), при проверке подключения получил, как тот фашист — гранату, следующее сообщение:

                [Ошибка Microsoft Data Link]

                «Сбой проверки подключения из-за ошибки при инициализации поставщика. Невозможно найти устанавливаемый ISAM»

                Проверял даже не на сети, а на локальном варианте.

                Вообще-то я очень удивился, увидев, что вы предлагаете использовать Майкрософтский Jet, который вроде-бы предназначен для доступа к ACCESS»у, в качестве провайдера для Paradox. Но поскольку обратного никто не утверждал, то наверное дело в другом.


                 
                sniknik
                 
                (2002-03-25 11:24)
                [3]

                Не все правильно. просто Jet кроме Access еще кое чего поддерживает смотри в реестре путь.

                HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\ISAM Formats

                а со строкой извини по памяти писал вот рабочая из программы выдернул

                Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Mode=ReadWrite;Extended Properties=Paradox 4.x;Persist Security Info=False

                на самом деле и та будет работать если поставить 4.x вместо 4.0


                 
                TriNeT
                 
                (2002-03-26 08:59)
                [4]

                2 sniknik ©

                Доброго времени суток!

                Проверить удалось пока только в локальном варианте.
                ПОЛУЧИЛОСЬ!!!! Правда если выставлять дополнительно флаг «Share deny none», то вываливается exception с сообщением о невозможности завершить операцию и еще чего-то там. В общем-то я пока не могу оценить, нужен ли мне этот флаг, просто в самом начале столкнулся с такой ситуацией.

                Пока не могу испытать на реальной сети, но думаю сегодня выкрою время и проверю.

                Сорри за сомнения, я честно о таких возможностях Jet»а не знал. А если не секрет, откуда такие знания? ;)

                Огромное спасибо за помощь. О результатах сетевых испытаний напишу позже.


                 
                TriNeT
                 
                (2002-03-27 05:12)
                [5]

                2 sniknik ©

                Хочется витеевато выругаться, но не буду. Оказывается трабл вовсе не в сабже, а в сервере, о технических характеристиках я как-то не догадывался. В общем-то по мощности сервером его нельзя назвать даже с натяжкой. Короче говоря мои обращения к базам на нем почему-то оказываются последней соломинкой на спине верблюда. Перенеся базы и перенастроив линки на другой сервер, все сразу заработало, причем как ODBC, так и тот способ, который вы мне показали.

                В общем сабж снимается, но теперь использую Ваш подход.

                Еще раз спасибо.


                Понравилась статья? Поделить с друзьями:

                Интересное по теме:

              • Непредвиденная ошибка драйвера внешней базы данных 11265
              • Непредвиденная ошибка драйвера внешней базы данных 10019
              • Непредвиденная ошибка гта 5
              • Непредвиденная ошибка валидации пушкинская карта
              • Непредвиденная ошибка windows defender

              • Добавить комментарий

                ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: