Россия, Омск |
Использование интеграции с DB2 для улучшения приложения ITSO Electronics
2.4.2 Реализация доступа к интегрированным данным DB2 в приложении ITSO Electronics
После завершения настройки интеграции на сервере DB2 мы можем получать доступ к интегрированным данным путем создания интегрированных Query Views в нашем приложении ITSO Electronics. Чтобы создать интегрированный Query View в приложении ITSO Electronics, выполните следующие действия.
- Откройте базу данных ITSO Electronics Sales в Lotus Domino Designer и выберите пункт меню Create => View. Откроется окно Create View (Создать представление) ( рис. 2.30). В поле "Имя" введите HR Employees ; под таким именем будет значиться ваш новый интегрированный Query View ; после чего установите переключатель Selection conditions в положение By SQL Query. Введите строку запроса SQL и щелкните по кнопке Save and Customize (Сохранить и настроить), чтобы настроить представление и добавить новые столбцы.
- Добавьте новые столбцы, в которых будут отображены Employee No (порядковый номер), First name и Last Name из интегрированной таблицы Employee ( рис. 2.31). Для каждого столбца определите соответствующее имя столбца из интегрированной таблицы в виде формулы значения столбца.
- После сохранения представления и добавления представления в Outline выберите интегрированный Query View HR Employees в клиенте Lotus Notes, чтобы отобразить информацию из таблицы HR Employees, как показано на рис. 2.32.
2.5 Вопросы при интеграции Lotus Domino и DB2
При интеграции Lotus Domino и DB2 следует иметь в виду, что:
- Хотя базы данных Lotus Domino хранятся на сервере DB2, списки контроля доступа ( ACL ) все равно продолжают поддерживаться, как и поля Readers и Authors.
- Когда вы сохраняете NSF в DB2, Lotus Domino создает и управляет набором таблиц, необходимых для поддержки ваших данных NSF, но вы не можете получить доступ к этим таблицам напрямую. Данные доступны лишь после определения DB2 Access View.
- Зашифрованные данные могут храниться в базе данных, основанной на DB2, но они недоступны в DB2 Access View.
- В Lotus Notes и Domino 7 при обращении к данным Notes на SQL через DB2 Access View защита на уровне пользователя всегда осуществляет проверку пользователя, обращающегося к этим данным, причем проверка осуществляется по связке имени пользователя Notes и имени пользователя DB2.
- Если вы обращаетесь к DB2 Access View вне Notes/Domino на языке SQL, по умолчанию связка имени пользователя Notes и имени DB2 также используется.
- Если вы не хотите использовать привязку вне Notes, можно управлять доступом к DB2 Access View с помощью механизма DB2 GRANT, добавив приведенный ниже параметр к файлу NOTES.INI на сервере DB2 Access:0 – отключает доступ по анонимной учетной записи;
Allow_Anonymous_Access_From_DB2=значение
1 – включает доступ по анонимной учетной записи через механизм DB2 GRANT.
Когда параметры файла NOTES.INI активированы, будет осуществляться анонимный доступ к Lotus Notes всякий раз, когда имя пользователя DB2 не связано с именем пользователя Lotus Notes.
Замечание Хотя активирование анонимного доступа и позволяет избавиться от привязки имен, Domino все же продолжает управлять доступом к DB2 Access View. Чтобы включить поддержку анонимного доступа, сервер Lotus Domino должен разрешить анонимный доступ и уровень доступа по умолчанию к базе данных ( NSF ), связанной с DB2 Access View. - Если вы попробуете посмотреть на DB2 Access View в DB2 Control Center, а ваша учетная запись DB2 не позволяет получать доступ в DB2 Access View в Lotus Domino, то вы получите следующее сообщение об ошибке:
"com.ibm.db.DataException: A database manager error occurred.: [IBM][CLI Driver][DB2/NT] SQL0443N Routine "ISREADER3" (specific name "") has returned an error SQLSTATE with diagnostic text "14512 : No matching Notes user found for DB2 user and anony". SQLSTATE=04004
Дополнительную информацию по безопасности и интеграции DB2 можно получить в Lotus Domino 7 Designer Help в разделе DB2 Access View security по адресу: http://www.lotus.com/ldd/doc/domino_notes/7.0/help7_designer.nsf
В этом разделе мы рассмотрели только те аспекты безопасности, которые связаны с интеграцией DB2 и Domino. Для получения более полного обзора по безопасности в Lotus Domino вы можете обратиться к готовящемуся к выходу руководству Security Considerations in Notes and Domino 7, REDP-4104.
2.6 Поиск и устранение неисправностей при интеграции DB2 и Lotus Domino
В этом разделе дается несколько советов по устранению проблем, связанных с интеграцией с DB2. Для получения дополнительных сведений перейдите к разделу DB2 Integration and Troubleshooting в справке Lotus Domino 7 Designer.
Если при интеграции Domino и DB2 возникают какие-либо проблемы, первое, что необходимо сделать, – проверить конфигурацию сервера DB2 Access. Инструмент DB2 Access Test тестирует все поля параметров сервера DB2 Access, начиная с серверного документа и заканчивая всеми параметрами сервера DB2 Access из файла NOTES.INI. Если все поля и параметры верны, этот инструмент приступает к проверке соединения между сервером DB2 Access и выбранным сервером Lotus Domino, проверяет, все ли функции и свойства присутствуют, определяет, корректен ли документ Connection на сервере DB2 Access, после чего пробует открыть директорию Domino на сервере DB2 Access. Если DB2 Access Test обнаруживает какие-либо проблемы, информация о неполадке возвращается в консоль сервера Lotus Domino или же в клиент Lotus Domino Administrator. Для того чтобы воспользоваться инструментом DB2 Access Test, сделайте следующее:
- В Lotus Domino Administrator перейдите к закладке Configuration (Конфигурация).
- Щелкните по кнопке Connections (Соединения). Выберите документ DB2 Access Server Connection.
- В панели Tools (Сервис) выберите DB2 Server => Test DB2 Access (Сервер DB2 Проверить доступ к DB2).
На рис. 2.33 показан результат работы инструмента DB2 Access Test.
2.6.1 Список контроля доступа (ACL), необходимый для DB2 Access Views
Если при использовании DB2 Access Views пользователи столкнутся с проблемой получения доступа к вашей базе данных Lotus Notes с поддержкой DB2, убедитесь в том, что элемент ACL для каждого пользователя идентичен первому элементу в поле User name в документе Person пользователя, хранящемся в директории Domino на сервере Domino.
2.6.2 Ошибки, возникающие при открытии Query View
Обычно, когда вы получаете сообщение об ошибке при открытии Query View, лучше всего взглянуть на серверную консоль на сервере Lotus Domino. Сообщения об ошибке, появляющиеся на серверной консоли, обычно напрямую указывают на источник той или иной проблемы.
В приведенном ниже списке представлены самые распространенные сообщения об ошибках и некоторая информация о них.
-
DB2-Authorization Violation (Нарушение авторизации DB2).
Хотя сообщение об ошибке выглядит именно так, данная проблема никак не связана с безопасностью. Такую информацию можно увидеть на серверной консоли:
-
Failed when DB2 was collecting column info. DB2-Authorization violation.: 42S02 - [IBM][CLI Driver][DB2/NT] SQL0204N "SALES.SALESDAV" is an undefined name. SQLSTATE=42704 - *LOCAL.DB2.051103024144 (Ошибка DB2 при сборе информации о столбцах. Нарушение авторизации DB2.: 42S02 - [IBM][CLI Driver][DB2/NT] SQL0204N "SALES.SALESDAV" не определенное имя. SQLSTATE=42704 - *LOCAL.DB2.051103024144 ).
Существует три возможные причины появления этого сообщения об ошибке:
- схема DB2 Sales в данном примере не существует;
- доступ DB2 SALESDAV в этом примере не существует;
- DB2 Access View не заполнен.
-
Failed when DB2 was collecting column info. DB2-Authorization violation.: 42S22 - [IBM][CLI Driver][DB2/NT] SQL0206N "C.CUSTOMERNAM" is not valid in the context where it is used. SQLSTATE=42703 - *LOCAL.DB2.051103024144 (Ошибка DB2 при сборе информации о столбцах. Нарушение авторизации DB2.: 42S22 - [IBM][CLI Driver][DB2/NT] SQL0206N "C.CUSTOMERNAM" не верен в контексте, в котором он использован SQLSTATE=42703 - *LOCAL.DB2.051103024144 ).
Одной из причин появления такой ошибки является то, что столбец, к которому был применен запрос, не существует в DB2 Access View; в этом примере таким столбцом является CUSTOMERNAM.
-
Failed when DB2 was collecting column info. DB2-Authorization violation.: 42S02 - [IBM][CLI Driver][DB2/NT] SQL0204N "SALES.SALESDAV" is an undefined name. SQLSTATE=42704 - *LOCAL.DB2.051103024144 (Ошибка DB2 при сборе информации о столбцах. Нарушение авторизации DB2.: 42S02 - [IBM][CLI Driver][DB2/NT] SQL0204N "SALES.SALESDAV" не определенное имя. SQLSTATE=42704 - *LOCAL.DB2.051103024144 ).
-
DB2-Dynamic SQL Error (Ошибка SQL в динамической DB2).
Это сообщение об ошибке указывает на синтаксическую ошибку в SQL-выражении. Посмотрите на серверную консоль и проверьте SQL-выражение:
Failed when DB2 was collecting column info. DB2-Dynamic SQL error.: 42601 - [IBM][CLI Driver][DB2/NT] SQL0104N An unexpected token "FROMSALES2" was found following "SELECT *". Expected tokens may include: "<from>". SQLSTATE=42601 - G921557D. GD04.0088C6170623 (Ошибка DB2 при сборе информации о столбцах. Ошибка SQL в динамической DB2.: 42601 - [IBM][CLI Driver][DB2/NT] SQL0104N неожиданный символ "FROMSALES2" нашел следующее: SELECT *". Expected tokens may include: "<from>". SQLSTATE=42601 - G921557D.GD04.0088C6170623 ).
В этом примере в команде было пропущено место между FROM и SALES2.
-
Opening View: The given query cannot generate a result set and therefore has not been executed (Открытие представления: сделанный запрос не может сгенерировать набор результатов и, следовательно, не может быть выполнен).
Из соображений безопасности SQL-выражения в Query View были ограничены до выражений, которые возвращают наборы результатов. Команды Update и Insert не работают, когда используются для выборки. Например, если вы хотите выполнить в качестве первой команды SELECT и допустили ошибку при наборе SQL-выражения, такую как написание команды SELCT вместо SELECT, это может вызвать ошибку.
-
This function is not implemented on this version of the server (Эта функция неприменима для этой версии сервера).
Вероятнее всего, вы пытаетесь открыть Query View на локальной реплике или на системе, в которой не включена поддержка DB2.
-
Failed when DB2 was fetching a note. DB2-External function exception.: 38503 - [IBM][CLI Driver][DB2/NT] SQL0430N User defined function "DOMINO.ISREADER3" (specific name "SQL051024022301200") has abnormally terminated. SQLSTATE = 38503 - *LOCAL.DB2.051028175704 (Ошибка DB2 при выборке записи. DB2-внешнее исключение функции.: 38503 - [IBM][CLI Driver][DB2/NT] SQL0430N. Функция "DOMINO.ISREADER3" (собственное имя "SQL051024022301200" ), определенная пользователем, была аварийно завершена. SQLSTATE=38503 - *LOCAL. DB2.051028175704 ).
Одна из возможных причин появления данной ошибки заключается в существовании более ранней версии Lotus Notes и Domino на данной системе. Для решения данной проблемы достаточно будет просто удалить более раннюю версию или переименовать папку.
2.6.3 Данные, которые могут оказаться полезными при поиске истинных источников проблем
Часто оказывается полезным собрать информацию, касающуюся диагностики. Это поможет вам, вашим коллегам или персоналу IBM найти источники проблемы.
- Точная информация о программных компонентах, которые вы используете:
- операционная система;
- сервер DB2;
- клиент Runtime;
- Lotus Notes и Domino;
- Сервер DB2 Access.
- Информация об используемых патчах и локализациях.
- Снимки экранов со всеми сообщениями об ошибках.
- В случае нарушения работы одного из перечисленных ниже компонентов будет создан файл NSD с информацией о диагностике:
- клиент Lotus Notes;
- сервер Lotus Domino;
- сервер DB2 Access.
- Вся доступная информация из журнала.
- Дизайн базы данных.
- Пошаговое описание действий, совершенных до того, как появилась проблема.
- Файл NOTES.INI с сервера Lotus Domino и с сервера DB2 Access.