🎯
GitHub ActionsでSQL Server LocalDBを設定する方法
解法
GitHub Actionsの Windows環境でSQL Server LocalDBを設定するには、Visual Studio Build Toolsを使用します。以下のワークフローファイルで実現できます:
name: Build Solution
jobs:
build:
runs-on: windows-latest
steps:
- name: Install SQL Server LocalDB
run: |
# VS Build Toolsインストーラーのダウンロード
Invoke-WebRequest -Uri https://aka.ms/vs/17/release/vs_buildtools.exe -OutFile vs_buildtools.exe
# LocalDBを含むSQL Server開発ツールのインストール
Start-Process -Wait -FilePath .\vs_buildtools.exe -ArgumentList `
"--quiet", `
"--wait", `
"--norestart", `
"--nocache", `
"--installPath", "C:\BuildTools", `
"--add", "Microsoft.VisualStudio.Workload.DataBuildTools", `
"--add", "Microsoft.VisualStudio.Component.SQL.LocalDB.Runtime"
- name: Start LocalDB Instance
run: |
sqllocaldb start MSSQLLocalDB
sqllocaldb info MSSQLLocalDB
- name: Test LocalDB Connection
run: |
$connectionString = "Server=(localdb)\MSSQLLocalDB;Database=master;Integrated Security=True"
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
$command = New-Object System.Data.SqlClient.SqlCommand("SELECT @@VERSION", $connection)
$connection.Open()
$result = $command.ExecuteScalar()
Write-Host "SQL Server Version: $result"
解説
LocalDBのインストール方法の選択
GitHub ActionsでSQL Serverを利用する方法として、以下の選択肢を検討しました:
-
Docker コンテナの使用
- Windows環境ではLinuxコンテナとの互換性の問題がある
- 設定が複雑になる可能性がある
-
SQL Server Express LocalDB
- Visual Studio Build Toolsの一部として提供
- Windows認証が利用可能
- 軽量で設定が容易
-
フルバージョンのSQL Server Express
- インストールに時間がかかる
- CI環境では過剰なリソースを消費する
これらの中から、LocalDBを選択した理由は:
- CI環境に適した軽量さ
- インストールと設定の容易さ
- Windows認証によるセキュリティの簡素化
インストール方法の詳細
Visual Studio Build Toolsを使用したインストールでは:
- Build Toolsインストーラーをダウンロード
- 必要なコンポーネントを指定
- サイレントインストールを実行
これにより、CI環境に必要最小限のコンポーネントのみをインストールできます。
接続のテスト
Windows認証を使用した接続文字列:
Server=(localdb)\MSSQLLocalDB;Database=master;Integrated Security=True
この接続文字列のメリット:
- SAパスワードの管理が不要
- Windows認証による安全な接続
- シンプルな設定
補足情報
- LocalDBはSQL Server Expressの軽量版として位置づけられています
- テスト環境やCI/CD環境に特に適しています
- Visual Studio Build Toolsを使用することで、確実にインストールできます
GitHub ActionsのWindows環境でデータベーステストを行う際は、LocalDBの使用を推奨します。特にWindows認証が使用できる点は、セキュリティ面でも運用面でも大きなメリットとなります。
Discussion