Гид по технологиям

Подключение к MS SQL с Linux через Java

• 4 min read • Базы данных • Обновлено 27 Nov 2025
Подключение к MS SQL с Linux через Java
Подключение к MS SQL с Linux через Java

Контекст

Изначальная задача: с Linux-машины подключиться к MS SQL Server. Многие языки (Ruby, Perl, Python) имеют DBI-интерфейсы, но с MS SQL это часто становится сложнее из‑за драйверов и совместимости. На той же машине уже работал JBoss, который соединялся с той же БД — поэтому выбор в сторону Java был логичным.

Решение: подключение из Java к MS SQL

Ниже приведён минимальный пример Java‑программы, которую я собрал из разных примеров и адаптировал под простую цель — проверить соединение.

import java.sql.*;
import java.io.*;
public class testConnection
{
    public static void main(String[] args)
    {
      String userName;
      String userPass;
      userName = args[0];
      userPass = args[1];
    DB db = new DB();
        db.dbConnect(
     "jdbc:jtds:sqlserver://xxx.xxx.xxx.xxx:1433/test",userName,userPass);
    }
}
class DB
{
    public DB() {}
    public void dbConnect(String db_connect_string,
  String db_userid, String db_password)
    {
        try
        {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            Connection conn = DriverManager.getConnection(
    db_connect_string, db_userid, db_password);
            System.out.println("connected");
        }
        catch (Exception e)
        {
            //e.printStackTrace();
            System.out.println("failed");
        }
    }
};

Что требуется на машине

  • Java Runtime Environment (JRE) или JDK — в примере использовалась Java 1.4.2, но подойдёт и более новая версия.
  • JDBC‑драйвер для MS SQL. В примере — jTDS.

Установка драйвера jTDS

Для jTDS (open source) пример установки выглядит так:

wget http://belnet.dl.sourceforge.net/sourceforge/jtds/jtds-1.2-dist.zip  
unzip jtds-1.2-dist.zip  
cp jtds-1.2.jar /usr/lib/java/jre/lib/ext/

После этого можно компилировать и запускать программу:

javac testConnection.java
java testConnection myUsername myPass

Важно: передача пароля как аргумента командной строки может быть видна другим пользователям на системе. Рассмотрите безопасные варианты (stdin, переменные окружения с ограниченным доступом, разделённые конфигурации).

Альтернативы и когда они лучше

  • Microsoft JDBC Driver for SQL Server — официальный драйвер от Microsoft; рекомендуется, если нужна поддержка новых фич SQL Server и официальная поддержка.
  • FreeTDS + JDBC‑bridge (jTDS построен на FreeTDS идеи) — полезно при ограничениях лицензий или при интеграции с unix‑утилитами.
  • ODBC + unixODBC + JDBC-ODBC bridge — подходит, если уже есть отлаженные ODBC-конфигурации.
  • Языковые библиотеки: для Python/Perl/Ruby доступны драйверы (pyodbc, DBI+FreeTDS), но настройка часто сложнее из‑за версий и кодировок.

Выбор зависит от требований к производительности, поддержке TLS, интеграции с пулами соединений (например, в JBoss) и лицензирования.

Отладка и распространённые ошибки

  • “ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver” — драйвер не в classpath или не скопирован в каталог расширений JRE. Проверьте расположение jtds-1.2.jar и права.
  • Порт и адрес — проверьте, доступен ли tcp/1433 и правильно ли указан экземпляр/имя базы; иногда SQL Server использует динамические порты или именованные экземпляры.
  • Аутентификация — MS SQL может требовать Windows Authentication; в этом случае нужна другая схема подключения (NTLM/Kerberos) и соответствующие драйверы/настройки.
  • Кодировка — убедитесь, что клиент и сервер согласованы по набору символов; иногда данные выглядят «кракозябрами».

Безопасность и эксплуатация

  • Не храните пароли в открытом виде в скриптах. Используйте зашифрованный хранилище секретов или системные механизмы управления секретами.
  • Используйте TLS/SSL, если соединение проходит по ненадёжной сети.
  • Ограничьте сетевой доступ к порту MS SQL через firewall.

Чеклист перед развёртыванием

  • JRE/JDK установлен и совместим по версии
  • JDBC‑драйвер доступен в classpath или каталоге расширений
  • Параметры подключения (хост, порт, имя базы) проверены
  • Учетная запись и права БД настроены
  • Механизм безопасного хранения пароля выбран
  • Логи и мониторинг для соединений настроены

Примеры отказов и когда это не сработает

  • Если требуется интеграция с Active Directory через Windows Authentication, простой jTDS может оказаться недостаточным; потребуется официальный драйвер с поддержкой Kerberos/NTLM.
  • Если требуется высокая пропускная способность и оптимизация на уровне сети, может потребоваться туннелирование/пул соединений и профилирование JDBC.

Критерии приёмки

  • Программа успешно подключается и возвращает «connected» в тестовом запуске.
  • Проверено подключение из окружения продовой сети (firewall, NAT).
  • Авторизованный пользователь может выполнить тестовый запрос SELECT.

Краткое резюме

Использование Java и JDBC‑драйвера (jTDS или Microsoft JDBC) — надёжный и практичный способ подключиться к MS SQL с Linux. Важны правильная настройка драйвера, безопасность хранения учётных данных и проверка сетевой доступности.

Примечание: если вы хотите, я могу добавить пример с официальным Microsoft JDBC‑драйвером, конфигурацию для JBoss или шаблон systemd‑сервиса для периодической проверки соединения.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро