Где я могу получить высококачественную информацию о базах данных ODBC и Access? - PullRequest
1 голос
/ 02 января 2012

Где я могу получить высококачественную информацию о ODBC и базах данных Access?

В течение многих лет я работал над различными проектами, используя ODBC из MFC / C ++ / Java.

В настоящее время у меня естьпроект в C ++ / MFC, который использует настроенный уровень MFC для динамического взаимодействия с ODBC DSN, подключенным к файлу базы данных Access 2000.

Обычно это работает.

Однако обычно я получаю предупреждения, такие каккак:

СУБД: ACCESS Версия: 04.00.0000 Диспетчер драйверов ODBC Версия: 03.80.0000 Необязательная функция не реализована Состояние: S1C00, Собственный: 106, Источник: [Microsoft] [Драйвер ODBC Microsoft Access]

Предупреждение. Драйвер не поддерживает запрошенный параллелизм.Необязательная функция не реализована. Состояние: S1C00, родной: 106, происхождение: [Microsoft] [драйвер ODBC Microsoft Access]

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

Общее предупреждение Невозможно открыть раздел реестра 'Временный (энергозависимый) Jet DSN для процесса 0x18fc Поток 0xc0 DBC 0x8c4cfc Jet'.Состояние: 01000, Собственный: 1, Происхождение: [Microsoft] [Драйвер ODBC для Microsoft Access]

СУБД: Версия ACCESS: 04.00.0000 Версия диспетчера драйверов ODBC: 03.80.0000 Выполнение SQL: создать представление SPEC как выберите CALNAMETEST, CARDNUMBER, CARTONSTYLE в качестве CARTON, CCAL в виде FLUTE, CORRDIR, CUSTOMERID, DESCRIPTION в качестве DESCRIPTIO, DESIGNER, DESIGNNUM, JOINTSIZE, JOINTTYPE, PANEL_D в качестве DEPTH, PANEL_L в качестве LENGTH, ПУЛШЕЛДЖУЛ, ДЖЕЛС, ПАНСЕЛД ДЖЕЛС, ДЖЕЛЗ, ПАНСЕЛЬкак SIZEX, SHEETUY как SIZEY, SHEETX как GROSSX, SHEETY как GROSSY из «Проектов», где DESIGNNUM не равен нулю
Предупреждение: сбой ODBC при наличии информации, сбой драйвера SQLSetConnectAttr Состояние: IM006, собственный: 0, источник: [Microsoft] [ODBC Driver Manager]

Общее предупреждение Невозможно открыть раздел реестра 'Временный (энергозависимый) Jet DSN для процесса 0x18fc Поток 0xc0 DBC 0x8c4cfc Jet'.Состояние: 01000, Родной: 1, Происхождение: [Microsoft] [Драйвер ODBC Microsoft Access]

Для первой части относительно предупреждений, касающихся необязательной функции, не реализовано и состояние параллелизма не реализовано (возможно, то же самое)основная проблема), я понятия не имею, какую функцию параллелизма даже запрашивает мое программное обеспечение?Какие состояния параллелизма уместны?Как попросить «правильного»?Существует ли таблица для версий Windows и соответствующего состояния параллелизма для запроса?

Для второй части, касающейся конкретного сбоя при создании представления из-за сбоя при открытии раздела реестра: да ?!Кому не удается открыть какой раздел реестра?

Я нашел некоторую информацию, касающуюся необходимости предоставления полных разрешений IUSR для "временной папки Windows NT".Это звучит как ужасная проблема для настольного приложения, которой нужно заниматься.Каким образом настольному приложению, использующему ODBC DSN, необходимо заботиться о правах пользователя при манипулировании файлом базы данных, который существует в пути, доступном для чтения / записи для пользователя?Какие дополнительные разрешения необходимы, чтобы пользователь мог выполнить этот SQL?А поскольку пользователь уже может добавлять и удалять столбцы и строки в существующих таблицах в базе данных, что еще нужно сделать?

Этот код используется для работы под XP.Поэтому я должен предположить, что Vista и / или Win 7 добавили некоторую защиту, которая теперь блокирует эту функциональность.

Меня интересует:

  1. Канонический справочный материал от Microsoft, который фактически документирует ихразличные интерфейсы ODBC Access, опции, версии, проблемы с хостами и т. д.
  2. Конкретная информация относительно предупреждений о параллелизме.
  3. Конкретная информация о явных сбоях разрешений при попытке создать представление вдоступ 2000 дБм.
  4. Предложения по модернизации вышеперечисленного, без полного ремонта или замены технологии. то есть я бы с радостью обновил файл Access до 2003 или 2007 или любого другого, или, возможно, переключил бы серверную часть на SQL Server Lite, но я не могу оправдать переход с ODBC на какое-нибудь промежуточное программное обеспечение для замены (это просто не стоит времени и риска). 1045 *

Спасибо за любые идеи или помощь, которую вы можете предложить.

Ответы [ 2 ]

1 голос
/ 03 января 2012

у нас есть приложение, которое динамически использует базы данных доступа ODBC.

  1. У Microsoft есть хорошая документация о odbc http://msdn.microsoft.com/en-us/library/s9ds2ktb(v=vs.80).aspxВам также следует взглянуть на документацию CRecordset и CDatabase http://msdn.microsoft.com/en-us/library/1hkkwdf0(v=vs.80).aspx
    http://msdn.microsoft.com/en-us/library/2dhc1abk(v=VS.80).aspx

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

-

RecordsetToUse.Open(CRecordset::dynaset, "SQL Statement or NULL to use the DefaultSQL", CRecordset::skipDeletedRecords);

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

RecordsetToUse.Open(CRecordset::forwardOnly, "SQL Statement or NULL to use the DefaultSQL", CRecordset::readOnly);

3.Для проблемы Create View кажется, что ODBC не поддерживает создание представлений ... С другой стороны, я думаю, что вы могли бы использовать ADODB (http://www.codeproject.com/KB/database/adoclasses.aspx) для этого

)
1 голос
/ 02 января 2012

Да, миграция удаленных клиентов может быть проблемой. Одна из причин, почему я абсолютно пытаюсь избежать доступа любой ценой. Я сделал это одним из двух способов. 1) Используйте WebEx (или какую-либо другую программу онлайн-совещаний), чтобы получить контроль над удаленным компьютером, чтобы убедиться, что миграция идет по мере необходимости. 2) Создайте в новом коде проверку, чтобы проверить, была ли перенесена база данных. Если новая БД (SQL Server) отображается как не найденная, приложение запускает инструмент миграции. Однако это означает создание и совершенствование утилиты миграции и сценариев для автоматизации миграции, поскольку многие вещи могут пойти не так.

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

Я действительно надеюсь, что это поможет.

...