3.3.4 Подключение к Microsoft SQL Server из отчета BIRT
Подключение к Microsoft SQL Server из отчетов BIRT теоретически должно выглядеть так же, как и подключение к PostgreSQL, за исключением другого файла драйвера и другой строки подключения. Но реальность, как иногда бывает, оказывается сложнее ожиданий.
Во-первых, драйверов в формате JDBC для подключения к SQL Server много:
- драйверы от Microsoft (mssql-jdbc-<версия>.jar), которые качаются с Microsoft;
- драйверы проекта JTDS (jtds-<версия>.jar), общие для подключения к SQL Server и Sybase. Скачиваются с http://jtds.sourceforge.net/;
- драйверы sqljdbc (sqljdbc-<версия>.jar), которые живут в репозитарии Maven и которые можно считать приложением к Eclipse.
Для применения аутентификации Windows при подключении к SQL Server драйверы Microsoft требуют еще файл sqljdbc_auth.dll, который должен быть помещен в папку, доступную по PATH, например, C:\Windows\System32, а драйвер JTDS — размещения в такой же папке файла ntlmauth.dll. В общем, все непросто, и форумы полны вопросов, как заставить тот или иной драйвер работать.
В этом разделе будет приведен способ, который работает точно. Возможно, есть и другие рабочие способы, но этот проверен автором, много раз им использовался и сбоев пока не давал.
Первое, что нужно сделать — скачать из репозитария Maven драйвер sqljdbc. Например, это можно сделать со страницы
https://mvnrepository.com/artifact/com.microsoft.sqlserver/sqljdbc4/4.0
Скачанный файл sqljdbc4-4.0.jar для порядка поместим в какую-нибудь папку. В моем случае это будет папка D:\BIRT\SQLServerJdbcDriver.
Дальше все делается так же, как и при создании источника данных для PostgreSQL:
- В окне Data Explorer запускаем создание нового источника данных (см. рис. 3.3.4-1):
Рис. 3.3.4.1 Начало создания источника данных для подключения к SQL Server в отчете BIRT
2. На первом экране мастера оставляем переключатель в положении Create from a data source type, выбираем JDBC Database Connection for Query Builder и в поле Data Source Name прописываем имя создаваемого источника данных (в моем случае —SQLServerDevHR01 — см. рис. 3.3.4.2). Мимоходом заметим, что если вам потребуется подключиться из отчета к хранимой процедуре на SQL Server, тип подключения JDBC Database Connection for Query Builder не подойдет: нужно будет использовать JDBC Data Source.
Рис. 3.3.4.2 Выбор типа источника данных для подключения к SQL Server
3. На следующем экране выбираем SQL Server (см. рис. 3.3.4.3)
Рис. 3.3.4-3 Выбор профиля подключения для SQL Server в отчете BIRT
4. На следующем экране нажимаем на кнопку New Driver Definition (см. рис. 3.3.4-4)
Рис. 3.3.4-4 Создание нового определения драйвера для подключения к SQL Server в отчете BIRT
5. В открывшемся окне на вкладке Name/Type выбираем драйвер Microsoft SQL Server 2008 JDBC Driver (см. рис. 3.3.4-5).
Внимание! Этот тип драйвера нужно использовать и для подключения к SQL Server 2012, и SQL Server 2014, и SQL Server 2016. Если вы выберете более логичный тип драйвера Microsoft SQL Server 2012 JDBC Driver или Microsoft SQL Server 2014 JDBC Driver, ничего работать не будет.
Можно заодно в поле Driver Name ввести другое название для драйвера, более подходящее.
Рис. 3.3.4.5 Выбор шаблона драйвера для подключения к SQL Server
6. На вкладке JAR List (см. рис. 3.3.4.6) удалите при помощи кнопки Remove JAR/Zip предлагаемый по умолчанию драйвер и при помощи кнопки Add JAR/Zip добавьте свежескачанный с репозитария Maven файл sqljdbc4-4.0.jar.
Рис. 3.3.4.7 Выбор JAR-файла при создании определения драйвера SQL Server в BIRT
7. На вкладке Properties (см. рис. 3.3.4.8) настройте параметры подключения.
Рис. 3.3.4.8 Настройка определения драйвера для подключения SQL Server в отчете BIRT
-
Connection URL — это строка подключения по JDBC. В нашем примере она выглядит как jdbc:sqlserver://SQLServerDev01:1433;databaseName=HR01, где SQLServerDev01 — это имя сервера, где работает SQL Server (оно должно разрешаться в IP-адрес), 1433 — порт, на котором работает SQL Server, HR01 — наименование базы данных, к которой мы подключаемся;
-
Database Name — еще раз дублируем наименовании базы данных;
-
Driver Class — наименование класса драйвера, лучше оставить значение по умолчанию;
-
User ID и Password — как понятно из названия, это имя пользователя и пароль для подключения к SQL Server. Сейчас мы настраиваем параметры для подключения с типом аутентификации SQL Server, но скоро мастер предложит нам выбрать тип аутентификации (и можно будет выбрать аутентификацию Windows).
8. Нажимаем на кнопку ОК и возвращаемся в окно Specify a Driver and Connection Details, которое теперь выглядит совсем по другому (см. рис. 3.3.4.9).
Рис. 3.3.4.9 Итоговое окно настройки свойств Data Source для подключения к SQL Server в BIRT
Обратим внимание:
- на флажок Use integrated authentification (Использовать интегрированную аутентификацию), то есть аутентификацию Windows, которая используется для SQL Server во многих организациях;
- на флажок Save password (Сохранить пароль). Если у пользователей нет пароля для подключения к SQL Server (а отчет им нужен), придется его использовать;
- на кнопку Test Connection (Проверить подключение). Рекомендуется нажать на нее и убедиться, что выдается сообщение Ping Succeded.
В общем, главное при настройке подключения — скачать правильный драйвер JDBC и подходящий к нему тип драйвера BIRT. Вариант sqljdbc4-4.0.jar с Maven плюс тип драйвера Microsoft SQL Server 2008 JDBC Driver отлично работает и для подключений к SQL Server 2012, и к SQL Server 2016.