適用対象:SQL Server - Linux
Windows Subsystem for Linux (WSL) は Windows の機能であり、仮想マシンやデュアル ブートを必要とせずに、Windows マシン上で Linux 環境を直接実行できます。 WSL は、Windows と Linux の両方を同時に使用する開発者向けに、シームレスで生産性の高いエクスペリエンスを提供します。 詳細については、「Linux 用 Windows サブシステムとは」を参照してください。
WSL 上の SQL Server は開発専用です
WSL 2 上の SQL Server は開発のみを目的としており、運用環境のワークロードではサポート されていません 。 実行する SQL Server のバージョンについては、サポート されているいずれかのプラットフォーム で WSL 環境で SQL Server を実行することをお勧めします。
サポート関連の問題については、 Microsoft からサポートを受けることができます。
WSL 2 で SQL Server を始める
WSL 2 での SQL Server の使用を開始するには、次の 2 つの方法があります。
systemd
サービスとして SQL Server をインストールします。これは、systemctl
コマンドを使用して管理できます。 WSL でsystemd
を有効にしてください。 詳細については、「 systemd を有効にする方法」を参照してください。WSL に SQL Server コンテナーをデプロイします。 このオプションでは、Docker や Podman などの Linux コンテナー エンジンを WSL にインストールし、SQL Server コンテナーをデプロイする必要があります。
[前提条件]
WSL 2 をインストールします。 Windows 10 バージョン 2004 以降 (ビルド 19041 以降) または Windows 11 を実行していることを確認します。 WSL をインストールするには、管理者モードで PowerShell または Windows コマンド プロンプトを開き、次のコマンドを実行します。
wsl --install
詳細な手順については、「 WSL を使用して Windows に Linux をインストールする方法」を参照してください。 開発用の WSL 環境の設定については、 WSL 開発環境のセットアップを参照してください。
WSL に SQL Server をインストールする
このセクションでは、WSL で Linux ディストリビューションを設定する手順と、その Linux ディストリビューションに SQL Server をインストールする方法について説明します。
Linux ディストリビューションの選択
次のコマンドを使用して、WSL にインストールできるすべての有効なディストリビューションを一覧表示できます。
wsl -l -o
出力は次の例のようになります。
The following is a list of valid distributions that can be installed.
Install using 'wsl.exe --install <Distro>'.
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
Ubuntu-24.04 Ubuntu 24.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
openSUSE-Leap-15.6 openSUSE Leap 15.6
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6
openSUSE-Tumbleweed openSUSE Tumbleweed
このクイック スタートでは、Ubuntu 22.04 をインストールし、そのディストリビューションに SQL Server 2022 をインストールします。
Ubuntu 22.04 をインストールするには、次のコマンドを実行します。 UNIX ユーザー アカウントとパスワードを書き留めます。 この例では、ユーザー名として wsluser
を使用します。
wsl --install -d Ubuntu-22.04
次の例のような出力が表示されます。 最後に、Ubuntu 22.04 bash シェルにログインしていることを示すはずです。
Installing: Ubuntu 22.04 LTS
Ubuntu 22.04 LTS has been installed.
Launching Ubuntu 22.04 LTS...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: wsluser
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2 x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Tue Dec 3 00:32:14 IST 2024
System load: 0.33 Processes: 32
Usage of /: 0.1% of 1006.85GB Users logged in: 0
Memory usage: 2% IPv4 address for eth0: 10.18.123.249
Swap usage: 0%
This message is shown once a day. To disable it please create the
/home/wsluser/.hushlogin file.
SQL Server をインストールする
Ubuntu 22.04 bash シェルにログインしたら、「 クイック スタート: SQL Server をインストールし、Ubuntu にデータベースを作成して SQL Server 2022 をインストールする」で説明されている手順に従うことができます。
SQL Server コマンド ライン ツールもインストールする必要があります。
IP アドレスを取得する
SQL Server Management Studio (SSMS) を使用して接続する IP アドレスを識別するには、次のように ifconfig
コマンドを実行します。
ifconfig
次の例のような出力が表示されます。
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.19.50.241 netmask 255.255.240.0 broadcast 10.19.63.255
inet6 fe80::215:5dff:fe76:c05d prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:76:c0:5d txqueuelen 1000 (Ethernet)
RX packets 2146 bytes 1452448 (1.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1905 bytes 345288 (345.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 2039 bytes 4144340 (4.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2039 bytes 4144340 (4.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
WSL に SQL Server コンテナーをデプロイする
WSL にコンテナーをデプロイするには、まず、Docker などの Linux コンテナー エンジンをインストールする必要があります。 詳細については、「 WSL での Docker リモート コンテナーの概要」を参照してください。 Docker エンジンをインストールしたら、次のように SQL Server コンテナー イメージをデプロイします。
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
-e "MSSQL_PID=Developer" -e "MSSQL_AGENT_ENABLED=true" \
-p 14333:1433 --name sqlcontainerwsl --hostname sqlcontainerwsl \
-d mcr.microsoft.com/mssql/server:2022-latest
注
パスワードは SQL Server の既定のパスワード ポリシーに従う必要があります。 既定では、パスワードの長さは少なくとも 8 文字で、大文字、小文字、10 進数の数字、記号の 4 種類のうち 3 種類を含んでいる必要があります。 パスワードには最大 128 文字まで使用できます。 パスワードはできるだけ長く、複雑にします。
SQL Server コンテナー用 WSL を使用して永続ストレージを追加する
「ホスト ディレクトリをデータ ボリュームとしてマウントする」の説明に従 って、データ ボリュームを作成できます。
たとえば、次のコマンドを実行して、sql_volume
にある /var/opt/mssql/
というボリュームを設定します。
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
-e "MSSQL_PID=Developer" -e "MSSQL_AGENT_ENABLED=true" \
-p 14333:1433 --name sqlcontainerwsl --hostname sqlcontainerwsl \
-v sql_volume:/var/opt/mssql/ \
-d mcr.microsoft.com/mssql/server:2022-latest
wsl --terminate
コマンドを実行しても、データは失われません。 WSL をもう一度起動し、 docker run
コマンドを実行して sql_volume
ボリュームを使用してデプロイすると、すべてのデータはそのまま残ります。
永続化されたボリュームを削除する場合は、ボリュームを使用するコンテナーが停止および削除されていることを確認し、次のコマンドを実行します。
docker volume rm sql_volume
注釈
クラスタリング スタックに依存するビジネス継続性機能を除き、開発目的で SQL Server on Linux でサポートされるほとんどの機能を構成できる必要があります。 Pacemaker や HPE Serviceguard などのこれらの機能は、WSL ではサポートされていません。
SQL Server on Linux でサポートされていない機能の完全な一覧については、Sql Server 2022 on Linux のエディションとサポートされている機能を参照してください。
ローカル接続
次の手順では、sqlcmdを使用して新しいSQL Serverインスタンスにローカル接続します。
注意事項
パスワードは SQL Server の既定のパスワード ポリシーに従う必要があります。 既定では、パスワードの長さは少なくとも 8 文字で、大文字、小文字、10 進数の数字、記号の 4 種類のうち 3 種類を含んでいる必要があります。 パスワードには最大 128 文字まで使用できます。 パスワードはできるだけ長く、複雑にします。
sqlcmd にSQL Server名 (
-S
)、ユーザー名 (-U
)、およびパスワード (-P
) のパラメーターを指定して実行します。 このチュートリアルでは、ローカルに接続するため、サーバー名はlocalhost
です。 ユーザー名はsa
で、パスワードはセットアップ時にsa
アカウントに指定したものです。sqlcmd -S localhost -U sa -P '<password>'
注
sqlcmd の新しいバージョンは、既定でセキュリティで保護されています。 接続の暗号化の詳細については、Windows 用「sqlcmd ユーティリティ 」および Linux および macOS 用「sqlcmdを使用した接続」をご覧ください。 接続が成功しない場合は、
-No
オプションを sqlcmd に追加して、暗号化が必須ではなくオプションであることを指定できます。コマンド ラインでパスワードを省略すると、入力を求められます。
後でリモート接続する場合は、
-S
パラメーターとしてコンピューター名またはIP アドレスを指定し、ファイアウォールでポート 1433 が開いていることを確認してください。成功すると、sqlcmd コマンド プロンプト
1>
が表示されます。接続エラーが発生した場合は、まずエラー メッセージから問題を診断します。 次に、接続のトラブルシューティングに関する推奨事項を確認します。
データの作成とクエリ
以下のセクションでは、sqlcmdを使用して新しいデータベースを作成し、データを追加して簡単なクエリを実行します。
Transact-SQL ステートメントおよびクエリの作成の詳細については、「チュートリアル: TRANSACT-SQL ステートメントを作成する」を参照してください。
新しいデータベースの作成
次の手順では、TestDB
という名前の新しいデータベースを作成します。
sqlcmd のコマンド プロンプトに次の Transact-SQL コマンドを貼り付け、テスト データベースを作成します。
CREATE DATABASE TestDB;
次の行に、サーバー上のすべてのデータベースの名前を返すクエリを記述します。
SELECT Name FROM sys.databases;
前の 2 つのコマンドは、すぐには実行されません。 前のコマンドを実行するには、新しい行に「
GO
」と入力する必要があります。GO
データの挿入
次に、新しいテーブル dbo.Inventory
を作成し、2 つの新しい行を挿入します。
sqlcmd のコマンド プロンプトで、コンテキストを新しい
TestDB
データベースに切り替えます。USE TestDB;
dbo.Inventory
という名前の新しいテーブルを作成します。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
」と入力して前のコマンドを実行します。GO
データの選択
ここで、dbo.Inventory
テーブルからデータを返すクエリを実行します。
sqlcmd のコマンド プロンプトで、数量が 152 より大きい
dbo.Inventory
テーブルから行を返すクエリを入力します。SELECT * FROM dbo.Inventory WHERE quantity > 152;
次のコマンドを実行します。
GO
sqlcmd コマンド プロンプトの終了
sqlcmd セッションを終了するには、「QUIT
」と入力します。
QUIT
パフォーマンスのベスト プラクティス
SQL Server on Linuxをインストールしたら、運用シナリオでのパフォーマンスの向上に、Linux とSQL Serverの構成のベスト プラクティスを確認してください。 詳細については、「パフォーマンスのベスト プラクティスと SQL Server on Linux の構成ガイドライン」を参照してください。
クロスプラットフォーム データツール
SQL Server の管理には、sqlcmd 以外に次のクロスプラットフォーム ツールを使用できます。
道具 | 説明 |
---|---|
Azure Data Studio | クロスプラットフォームの GUI データベース管理ユーティリティ。 |
Visual Studio Code | Transact-SQL ステートメントを mssql 拡張機能を使用して実行するクロスプラットフォーム GUI コードエディター。 |
PowerShellCore | コマンドレットを使用する、クロスプラットフォームの自動化および構成ツール。 |
mssql-cli | Transact-SQL コマンドを実行するクロスプラットフォーム コマンドライン インターフェイス。 |
Windows からの接続
Windows 上の SQL Serverツールは、あらゆるリモートSQL Serverインスタンスへの接続と同じ方法で Linux 上の SQL Serverインスタンスに接続します。
Linux コンピューターに接続できる Windows コンピューターがある場合は、sqlcmdを実行する Windows コマンド プロンプトから、このトピックと同じ手順を試してみてください。
localhost
ではなくターゲットの Linux コンピューター名またはIP アドレスを使用する必要があります。また、SQL Server マシンで TCP ポート 1433 が開いていることを確かめます。 Windows からの接続に問題がある場合は、接続のトラブルシューティングに関する推奨事項を参照してください。
Windows で実行し、Linux 上の SQL Serverに接続するその他のツールについては、以下を参照してください。
その他の展開シナリオ
他のインストール シナリオについては、次のリソースを参照してください。
- アップグレード:Linux 上の SQL Serverのアップグレード方法および既存のインストールについて説明する
- Uninstall:Linux 上の SQL Serverをアンインストールする
- 無人インストール:プロンプトを表示せずにインストールするスクリプトを作成する方法を説明する
- オフライン インストール:オフライン インストール パッケージを手動でダウンロードする方法を説明する
よく寄せられる質問に対する回答については、「SQL Server on Linux に関する FAQ」を参照してください。
関連コンテンツ
SQL ドキュメントへの投稿
SQL コンテンツを自分で編集できることはご存じですか。 これにより、ドキュメントが改善されるだけでなく、ページの共同作成者としてもクレジットされます。
詳細については、 Microsoft Learn ドキュメントの編集を参照してください。