0. 前置き
MS SQL Server は LXC で動作しません。(インストールできるけど動かない)
このためインストール先の Linux は実機、または KVM を用意する必要があります。
Linux 版 MS SQL Server (Express を含む) には以下の 2 種類があり、
systemd を偽装した実装は Docker 版だけであり、LXC はどちらにも当てはまらない。
(理由は他にもあるけど一番大きな問題がこれ。いきなりコケるからログも出ない)
RHEL10 に対応する MS SQL Server 2025 は Preview 版として 2025-11-18 から提供されています。
- systemd (pid=1) を必要とする実装
- systemd (pid=1) を必要としない実装 (Docker 版)
公式サポートの時期について ChatGPT と Gemini はともに 2026 年の夏頃という予測を出しました。
本稿は、以下のドキュメントに沿っています。
動作環境: システム要件はここ。
項目 内容 備考 OS (KVM) AlmaLinux release 10.1 (Heliotrope Lion) 本稿記述時の最新版 vCPU 2 - RAM 2.5GB MS SQL Server だけなら 2GB
Linux が動作するために 0.5GB 程度必要ストレージ 20GB OS + MS SQL Server Express なら 6.5GB
データベース等の作業領域として余裕を持たせたIP アドレス 192.168.11.111/24 - 管理者パスワード Password123 管理者 sa 用のパスワード
この文字列をこのまま使わないように
パスワードのルールを参照すること
1. MS SQL Server Express 2025 のインストール
•インストーラをインストールする。
$ su
# curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/10/mssql-server-preview.repo
# dnf install -y mssql-server-selinux
# dnf install -y mssql-server
混雑のせいか、ダウンロードに時間がかかる。(90 分間ぐらい)# ls -ogh /opt/mssql/lib/mssql-conf/mssql-conf.py
…省略… +--------------------------------------------------------------+ 'sudo /opt/mssql/bin/mssql-conf setup' を実行し、 Microsoft SQL Server のセットアップを完了してください +--------------------------------------------------------------+ …省略… 完了しました!
インストーラ本体。• MS SQL Server 本体をインストールする。
-rwxrwxr-x. 1 26K 10月 25 08:43 /opt/mssql/lib/mssql-conf/mssql-conf.py
# /opt/mssql/bin/mssql-conf setup
•起動チェックをする。
SQL Server のエディションを選択します: 1) Evaluation (無料、製品使用権なし、期限 180 日間) 2) Enterprise Developer (無料、製品使用権なし) 3) Standard Developer (無料、製品使用権なし) 4) Express (無料) ← これを選択する 5) Web (有料) 6) Standard (有料) 7) Enterprise (有料) - CPU core utilization restricted to 20 physical/40 hyperthreaded 8) Enterprise Core (有料) - CPU core utilization up to Operating System Maximum 9) 小売販売チャネルを介してライセンスを購入し、入力するプロダクト キーを持っています。 10) Standard (Billed through Azure) - Use pay-as-you-go billing through Azure. 11) Enterprise Core (Billed through Azure) - Use pay-as-you-go billing through Azure. エディションの詳細については、以下を参照してください https://go.microsoft.com/fwlink/?LinkId=2109348&clcid=0x411 このソフトウェアの有料エディションを使用するには、個別のライセンスを以下から取得する必要があります Microsoft ボリューム ライセンス プログラム。 有料エディションを選択することは、 このソフトウェアをインストールおよび実行するための適切な数のライセンスがあることを確認していることになります。 By choosing an edition billed Pay-As-You-Go through Azure, you are verifying that the server and SQL Server will be connected to Azure by installing the management agent and Azure extension for SQL Server. エディションを入力してください(1-10): 4 ⏎ この製品のライセンス条項は /usr/share/doc/mssql-server or downloaded from: https://aka.ms/useterms プライバシーに関する声明は、次の場所で確認できます: https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x411 ライセンス条項に同意しますか? [Yes/No]:y ⏎ SQL Server の言語の選択: (1) English (2) Deutsch (3) Español (4) Français (5) Italiano (6) 日本語 (7) 한국어 (8) Português (9) Руѝѝкий (10) 中文 – 简体 (11) 中文 (繝体) オプション 1-11 を入力: 6 ⏎ SQL Server システム管理者パスワードを入力してください: Password123 ⏎ ← 実際は表示されない SQL Server システム管理者パスワードを確認入力してください: Password123 ⏎ SQL Server を構成しています... ライセンス PID は正常に処理されました。新しいエディションは [Express Edition] です。 …省略… セットアップは正常に完了しました。SQL Server を起動しています。
# systemctl status mssql-server | grep Active:
active が表示されること。# exit
Active: active (running) since Wed 2025-12-10 17:39:41 JST; 3min 45s ago
$
2. ファイアウォールの調整
TDS はポート 1433 が標準。
$ su
# firewall-cmd --zone=public --add-port=1433/tcp --permanent
# firewall-cmd --reload
# firewall-cmd --list-ports
# exitポート 1433 が許可された。
1433/tcp
$ exit
Windows PC から接続してみる。
− □ × >_ Windows PowerShell × + | ∨
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows PS C:\> sqlcmd -S 192.168.11.111,1433 -U sa -P "Password123" -h -1 -Q "SELECT @@VERSION" ⏎ Microsoft SQL Server 2025 (RTM) - 17.0.1000.7 (X64) Oct 21 2025 12:05:57 Copyright (C) 2025 Microsoft Corporation Express Edition (64-bit) on Linux (AlmaLinux 10.1 (Heliotrope Lion)) <X64> (1 行処理されました) PS C:\> exit ⏎
3. コマンドラインツールのインストール
•リポジトリを登録する。(公式: リポジトリは 9 のものを使用する)
Microsoft の案内だと sudo を使用しているが、パスワード入力のプロンプトが表示されなくなるので su してから実施する。
$ su
# curl https://packages.microsoft.com/config/rhel/9/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
•旧 mssql-tools を削除する。
# dnf remove mssql-tools unixODBC-utf16 unixODBC-utf16-devel
インストールされていないのでエラーが表示される。• mssql-tools18 と ODBC 開発者パッケージをインストールする。
引数に一致する結果がありません: mssql-tools 引数に一致する結果がありません: unixODBC-utf16 引数に一致する結果がありません: unixODBC-utf16-devel 削除対象のパッケージはありません。 依存関係が解決しました。 行うべきことはありません。 完了しました!
# dnf install -y mssql-tools18 unixODBC-devel
• アップデートをチェックする。
…省略… The license terms for this product can be downloaded from https://aka.ms/odbc18eula and found in /usr/share/doc/msodbcsql18/LICENSE.txt . By entering 'YES', you indicate that you accept the license terms. Do you accept the license terms? (Enter YES or NO) yes ⏎ ←「y」は不可 インストール中 : msodbcsql18-18.5.1.1-1.x86_64 2/4 …省略… The license terms for this product can be downloaded from http://go.microsoft.com/fwlink/?LinkId=746949 and found in /usr/share/doc/mssql-tools18/LICENSE.txt . By entering 'YES', you indicate that you accept the license terms. Do you accept the license terms? (Enter YES or NO) yes ⏎ ←「y」は不可 インストール中 : mssql-tools18-18.4.1.1-1.x86_64 3/4 …省略… 完了しました!
# dnf check-update
# dnf update mssql-tools18
# exit
$
4. コマンドラインツールの使用準備と確認
•実行パスを設定する。
$ echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
$ source ~/.bash_profile
•接続を確認する。
Microsoft の注意書き ( Note ) に従ってオプション -No を付加する。
$ sqlcmd -S localhost,1433 -U sa -P 'Password123' -No CREATE DATABASE TestDB; SELECT Name FROM sys.databases; GO USE TestDB; CREATE TABLE dbo.Inventory ( id INT, name NVARCHAR (50), quantity INT, PRIMARY KEY (id) ); INSERT INTO dbo.Inventory VALUES (1, 'banana', 150); INSERT INTO dbo.Inventory VALUES (2, 'orange', 154); GO SELECT * FROM dbo.Inventory WHERE quantity > 152; GO QUIT
接続の暗号化オプションについて:
Note sqlcmd の新しいバージョンは、既定でセキュリティで保護されています。
重要 これは、SQL Server 2022 (16.x) 以前のバージョンからの破壊的変更です。
sqlcmd v18.4 は標準で TLS 暗号化と証明書の検証を行う。(v17 から)
証明書が意味を持たない localhost や LAN 接続ではこれらが邪魔になるため、以下いずれかのオプションが必要になる。
オプション TLS 暗号化 証明書の検証 -No なし しない -Nm あり 発行元が不要 -Ns あり 発行元が必要 -C あり しない
環境変数では指定できない。Alias を定義しておくと吉。
$ echo "alias sqlcmd='sqlcmd -No -C'" >> ~/.bash_profile
$ source ~/.bash_profile
おまけ (暗号化を確認する SQL)
$ sqlcmd -S localhost,1433 -U sa -P 'Password123' -Nm -C << EOF SET NOCOUNT ON; SELECT s.session_id, c.encrypt_option FROM sys.dm_exec_sessions AS s INNER JOIN sys.dm_exec_connections AS c ON s.session_id = c.session_id WHERE s.session_id = @@SPID; EOFオプション -Nm -C を指定しているので暗号化は TRUE になる。
session_id encrypt_option ---------- ------------------------------ 67 TRUE
5. GUI から接続
DBeaver 25.3.0 と SSMS 22.1 で接続する。
このデータベース TestDB に SSMS 18.4 から接続すると、なぜかテーブルを閲覧するだけで SSMS が落ちる。
Windows 版 DBeaver 25.3.0 の画面
SSMS 22.1 の画面