Установка и настройка DB2 под Windows для работы с 1С:Предприятием 8.1
Краткое содержание:
Установка и настройка DB2 под Windows для работы с 1С:Предприятием 8.1 Начните установку с запуска файла setup.exe. В открывшейся панели запуска установки DB2 перейдите на закладку «Установить продукт» и для установки DB2 нажмите «Установить новый».
В открывшейся панели запуска установки DB 2 перейдите на закладку «Установить продукт» и для установки DB 2 нажмите «Установить новый».
Дождитесь появления приглашающего окна мастера установки и нажмите «далее».
Далее необходимо принять лицензионное соглашение.
Выбирайте пользовательский тип установки для управления устанавливаемыми компонентами. У Вас будет возможность убедиться, что процесс установки прост.
Уточните, что вы выполняете только установку.
Если вы сомневаетесь, какие компоненты надо установить, то можно установить все компоненты. Но основными для работы 1С:Предприятие будут разделы «поддержка сервера» и «поддержка клиента».
Следует отметить, что имеется возможность выбора одного или нескольких языков пользовательских интерфейсов.
Имя экземпляра DB 2 оставьте по умолчанию.
Далее укажите использование справки по DB 2 на сайте IBM .
Укажите учетную запись Windows , которая будет использована для службы DB 2.
Параметры подключения можно оставить по умолчанию.
Включите пункт «подготовка каталога инструментов DB 2».
Администрирование уведомлений по почте можно отложить «на потом».
Для защиты от несанкционированного доступа включайте защиту данных средствами операционной системы.
Следующее окно показывает выбранные настройки и кнопка «Установить» выполняет установку DB 2.
Завершение установки обозначается соответствующим диалоговым окном.
Первым делом после установки сконфигурируйте параметр DB 2_ WORKLOAD .
Для этого откройте Пуск-Все программы- IBM DB 2- DB 2 COPY 1(по умолчанию)-Инструменты командной строки- командное окно.
Выполните следующие команды:
db 2 stop
db 2 set DB 2_ WORKLOAD =1 C
db 2 start
Чтобы корректно отображался русский шрифт, используйте шрифты как на рисунке.
Учтите, что если кластер серверов не расположен на сервере СУБД, то на нем также должна быть установлена клиентская часть СУБД. Если вы забудете это сделать, то при работе с 1С:Предприятия 8.1 c IBM DB2 может возникать ошибка.
Необходимо разместить учетную запись USR 1 CV 8 в группе DB 2 ADMINS .
При создании информационной базы в 1С:Предприятие 8.1 необходимо выбрать в качестве типа СУБД — IBM DB2.
Имя базы данных в IBM DB2 должно содержать только английские буквы и цифры и не должно быть длиннее 8 символов.
В качестве имени сервера баз данных необходимо указать имя компьютера, а если на нем имеются экземпляры сервера баз данных, отличные от установленного по умолчанию, то и имя установленного экземпляра IBM DB2, заданное при его установке через «/». Например, computer/db2name.
Не используйте IP -адресацию для сервера СУБД IBM DB2.
Длина имени пользователя базы данных не должна превышать 8 символов.
В остальном, администрирование работы 1С:Предприятия 8.1 с IBM DB2 не отличается от работы с другими СУБД.
DB2 .Net Способы подключения к базе данных
Цель данной статьи: показать основные способы взаимодействия .Net приложений с СУБД IBM DB2.
DB2 – система управления реляционными базами данных, разработанная компанией IBM. Кстати, язык SQL был разработан именно IBM, правда, первым в коммерческих целях первым его стал использовать Oracle.
Для работы с IBM DB2 на машине должен быть установлен клиент, либо серверная часть DB2. Есть отличная бесплатная версия DB2 Express-C, у которой нет ограничений на размер баз данных (привет, Microsoft!).
Мы рассмотрим два способа подключения к DB2 .Net в Visual Studio:
- через IBM Data Server Provider for .NET (библиотека IBM.Data.DB2.dll);
- через OleDb Provider for .NET (драйвер IBMDADB2).
1. DB2 .Net через библиотеку IBM.Data.DB2.dll
Я поставил этот способ работы с базой в .Net приложениях на первое место только потому, что его официально рекомендует компания IBM.
Внутри IBM.Data.DB2.dll реализован драйвер для .Net приложений, поддерживающий интерфейс ADO.NET. IBM Data Server Provider обеспечивает высокопроизводительный, безопасный доступ к базам данных IBM.
Покажем использование данного способа на конкретном примере. Получим список идентификаторов из таблицы MYTABLE схемы DBUSER. У нас должна быть создана база данных MYBASE, пользователь db2admin с паролем db2admin должен иметь права на чтение таблицы MYTABLE.
Добавим в проект сборку C:\Program Files\IBM\SQLLIB\BIN\netf20\IBM.Data.DB2.dll (название каталога netf20 может отличаться в зависимости от версии DB2).
Вот пример работы с базой DB2 с помощью IBM.Data.DB2.dll на языке C#:
Примечание: при работе данным провайдером был замечен очень неприятный баг: приложение, написанное с использованием IBM.Data.DB2.dll версии 8.2, не работает под DB2 версии 9.7, и наоборот. Т.е. нельзя использовать одну и ту же библиотеку IBM.Data.DB2.dll для разных версий DB2.
2. DB2 .Net через OleDb провайдер
OLE DB. NET поставщик данных использует DB2 OLE DB Driver, который прописывается в строке подключения к базе данных, как IBMDADB2. На официальном сайте IBM написано, что этот поставщик данных не протестирован, и что пользователям рекомендуется использовать IBM Data Server Provider for .NET, т.е. библиотеку IBM.Data.DB2.dll.
Однако, из-за вышеописанной «особенности» IBM.Data.DB2.dll, я предпочитаю именно этот способ подключения. К тому же не нужно дополнительно ничего подключать к проекту, используется стандартный OLE DB провайдер из сборки System.Data.OleDb.
Приведу пример работы с OLE DB провайдером для той же задачи: получить список идентификаторов из таблицы MYTABLE схемы DBUSER. Обратите внимание: в строке подключения явно указывается драйвер IBMDADB2:
Заключение
Мы рассмотрели два способа работы с DB2 .Net в Visual Studio:
- через библиотеку IBM.Data.DB2.dll;
- через OleDb драйвер IBMDADB2.
Повторюсь, IBM Data Server Provider for .NET (библиотека IBM.Data.DB2.dll) крайне чувствителен к версии DB2. Например, если проект собирался с использованием библиотеки v8.2, то он не будет работать с IBM DB2 v9.7, и наоборот. Если вы предусматриваете в дальнейшем переход на более позднюю версию DB2, то лучше подключаться к базе через OLE DB провайдер.
Да, еще один принципиальный момент: приложение .Net не работает в x64-среде с IBM DB2 версии 8.2, просто IBM такую конфигурацию не поддерживает; Если нужно работать в x64 среде, придется ставить DB2 v.9.7 и выше.
Введение в IBM DB2
По работе пришлось в течение некоторого времени разбираться с СУБД IBM DB2. Т.к. система коммерческая, то в интернете не так много информации на русском языке, поэтому решил описать некоторые особенности работы этой СУБД.
Точка входа
Начнем со входной точки в СУБД. В SQL SERVER конечной точкой является экземпляр (instance), в котором конечно могут быть отдельные базы данных, но конфигурация и модель безопасности единая для всего экземпляра. В DB2 же точка входа выглядит так — экземпляр (который соответствует конкретному порту) — база данных. При этом конфигурация есть и для целиком экземпляра, и для отдельной базы данных.
Посмотреть конфигурацию экземпляра можно либо с помощью db2-команды:
get database manager configuration
Database Manager Configuration
Node type = Enterprise Server Edition with local and remote clients
Database manager configuration release level = 0x0b00
CPU speed (millisec/instruction) (CPUSPEED) = 2.912790e-07
Communications bandwidth (MB/sec) (COMM_BANDWIDTH) = 1.000000e+02
Max number of concurrently active databases (NUMDB) = 8
Federated Database System Support (FEDERATED) = YES
Transaction processor monitor name (TP_MON_NAME) =
Default charge-back account (DFT_ACCOUNT_STR) =
Java Development Kit installation path (JDK_PATH) = /home/db2inst1/sqllib/java/jdk32
Diagnostic error capture level (DIAGLEVEL) = 3
Notify Level (NOTIFYLEVEL) = 3
Diagnostic data directory path (DIAGPATH) = /home/db2inst1/sqllib/db2dump
Default database monitor switches
Buffer pool (DFT_MON_BUFPOOL) = OFF
Где будут указаны параметры, их значение и расшифровка. Возможен также сокращенный вариант:
Либо с помощью запроса:
select name, value from sysibmadm.dbmcfg
Из важных параметров можно отметить:
- тип аутентификации (AUTHENTICATION)
- путь по умолчанию для создания новых БД (DFTDBPATH)
- обнаружение сервера по сети (DISCOVER)
Посмотреть настройки конкретной базы можно так:
connect to sample (sample — имя бд)
get database manager configuration
Либо примерно таким же запросом, как и ранее:
select name, value from sysibmadm.dbcfg
Аутентификация
Большим отличием DB2 от других СУБД является модель аутентификации. Здесь нет внутренних пользователей, как в SQL Server или MySQL. Вся аутентификация производится внешними по отношению к СУБД средствами (динамически подгружаемыми плагинами) — средствами операционной системы либо внешними плагинами (Kerberos,GSS API). Тип аутентификации задается в параметре AUTHENTICATION конфигурации менеджера БД. По умолчанию выставлено значение SERVER — имя пользователя и пароль передается в открытом виде и данная пара проверяется на правильность средствами операционной системы. Если имя пользователя и пароль верны, то проверяется наличие привилегии CONNECT у пользователя или групп, в которые он входит (в т.ч. специальная группа PUBLIC, куда входят все авторизованные пользователи). Данные привилегии можно посмотреть в таблице SYSCAT.DBAUTH:
select GRANTEE from SYSCAT.DBAUTH where CONNECTAUTH = ‘Y’
Большой ошибкой при настройке является включение типа аутентификации CLIENT. В этом случае DB2 доверяет проведение аутентификации подключаемому клиенту и если у PUBLIC есть привилегия CONNECT, то любой пользователь сможет подключиться к БД и получит доступ ко всем данным, которые есть у PUBLIC. Имя пользователя при этом берется из операционной системы. То есть если мы подключаемся через Data Studio пользователем Administrator, то будут предоставлены все привилегии, которые есть у данного пользователя. И в этом случае нет разницы, с какого компьютера был произведен доступ. Данный тип аутентификации рекомендуется включать только тогда, когда есть защищенный канал между сервером и клиентом, и другие клиенты не смогут подключиться к СУБД.
Авторизация
Привилегии уровня конкретного экземпляра прописываются в конфигурации менеджера БД. Это следующие привилегии:
- SYSADM
- SYSCTRL
- SYSMAINT
- SYSMON
Задаются данные привилегии с помощью указания группы, куда будет входить пользователь. В dbmcfg это соответственно параметры SYSADM_GROUP, SYSCTRL_GROUP, SYSMAINT_GROUP и SYSMON_GROUP.
Далее есть привилегии конкретной базы данных. Это такие привилегии, как доступ к базе данных (CONNECTAUTH), создание таблиц (CREATETABAUTH), создание подпрограмм (EXTERNALROUTINEAUTH) и тд. Данные привилегии можно просмотреть в представлении SYSCAT.DBAUTH
И наконец привилегии доступа к конкретным данным — таблицам, подпрограммам и тд. Здесь все довольно тривиально, но тоже с некоторыми особенностями.
Привилегии доступа к таблицам можно просмотреть в представлении SYSCAT.TABAUTH. Тип выданной привилегии хранится в отдельных колонках, в зависимости от самой привилегии (SELECTAUTH,DELETEAUTH и тд). При выдачи привилегии с помощью команды GRANT для привилегий REFERENCES и UPDATE можно также указать имена колонок, на которые будут распространяться данные привилегии. В этом случае информацию об этом можно посмотреть в представлении SYSCAT.COLAUTH
Привилегии подпрограмм (функций, процедур и методов) можно посмотреть в SYSCAT.ROUTINEAUTH. Здесь не совсем все тривиально, в зависимости от полей SPECIFICNAME и TYPENAME привилегии могут быть выданы на все подпрограммы заданной схемы.
Если читателям понравится статья, то готов рассказать по поводу защиты данных в DB2 с помощью Label-Based Access Control