🎯

GitHub ActionsでSQL Server LocalDBを設定する方法

2025/02/13に公開

解法

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を利用する方法として、以下の選択肢を検討しました:

  1. Docker コンテナの使用

    • Windows環境ではLinuxコンテナとの互換性の問題がある
    • 設定が複雑になる可能性がある
  2. SQL Server Express LocalDB

    • Visual Studio Build Toolsの一部として提供
    • Windows認証が利用可能
    • 軽量で設定が容易
  3. フルバージョンのSQL Server Express

    • インストールに時間がかかる
    • CI環境では過剰なリソースを消費する

これらの中から、LocalDBを選択した理由は:

  • CI環境に適した軽量さ
  • インストールと設定の容易さ
  • Windows認証によるセキュリティの簡素化

インストール方法の詳細

Visual Studio Build Toolsを使用したインストールでは:

  1. Build Toolsインストーラーをダウンロード
  2. 必要なコンポーネントを指定
  3. サイレントインストールを実行

これにより、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