SQL Server VM インスタンスの作成


Microsoft SQL Server は、Windows Server およびいくつかの Linux ディストリビューションで動作するデータベース システムです。Compute Engine では、SQL Server をアプリケーションのバックエンドの一部として、あるいは柔軟な開発、テスト環境として使用できるほか、バックアップや障害復旧のためにオンプレミス環境に追加することもできます。

Compute Engine には、Microsoft SQL Server が Windows Server にプリインストールされたイメージが用意されています。これらの SQL Server イメージを使用する場合、Windows Server と SQL Server の両方のライセンスが Compute Engine によって管理され、毎月の請求書にそれらの費用が含まれます。SQL Server を含む VM を作成し、必要に応じて大規模なマルチノード構成にスケールアウトします。

Compute Engine は、保存時の自動冗長化機能と自動暗号化機能を備えた耐久性の高い永続ディスクにデータを保存します。これらの永続ディスクを使用して SQL Server のデータを保存すれば、データの耐久性やセキュリティについて心配する必要がなくなります。さらにパフォーマンスが必要な場合は、ローカル SSD をキャッシュとして備えた VM を作成することで、SQL Server クエリの IOPS とパフォーマンスを強化できます。

SQL Server を実行する Compute Engine 仮想マシン(VM)インスタンスは、次の方法で作成できます。

SQL Server がプリインストールされている使用可能なイメージの完全なリストについては、オペレーティング システムの詳細をご覧ください。

SQL Server イメージのマシンタイプ要件

SQL Server Standard

SQL Server Standard は、すべてのマシンタイプの VM で実行できます。ただし、共有コア マシンタイプでは、最適なパフォーマンスが得られません。SQL Server Standard を実行するためには、1 つ以上の vCPU を持つ VM を使用することをおすすめします。

SQL Server Enterprise

SQL Server Enterprise を実行する VM には、4 つ以上の vCPU が必要です。最適なパフォーマンスを得るには、SQL Server Enterprise をメモリ容量が大きい VM で実行することをおすすめします。ワークロードに応じて、8 つ以上の vCPU を持つハイメモリ マシンタイプを使用してください。こうしたマシンタイプでは、Compute Engine で使用可能な vCPU それぞれに対するメモリ比率が最大化されるため、SQL Server Enterprise VM に最も適しています。

また、Compute Engine で SQL Server Enterprise を使用して SQL Server の可用性グループを作成することもできます。

デフォルトのコンポーネント

SQL Server イメージにはいくつかのコンポーネントがデフォルトで組み込まれています。デフォルトのコンポーネントは選択した SQL Server のエディションによって異なります。

お使いのバージョンの SQL Server に含まれるデフォルトのコンポーネントについて詳しくは、SQL Server 2019 のエディションとサポートされている機能をご覧ください。

SQL Server コンポーネントの変更については、SQL Server の VM への機能の追加をご覧ください。

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      詳細については Set up authentication for a local development environment をご覧ください。

      REST

      このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

SQL Server インスタンスの作成

SQL Server インスタンスを作成するには、必要なバージョンの SQL Server のイメージ ファミリーを指定します。SQL Server イメージ ファミリーの一覧については、オペレーティング システムの詳細をご覧ください。

最適なパフォーマンスを得るには、データベース サーバー プラットフォームでより多くの仮想 CPU とメモリ容量を備えたマシンタイプが必要です。SQL Server インスタンスを実行するときは、2 つ以上の vCPU と 4 GB 以上のメモリを備えたマシンタイプを使用することをおすすめします。カスタム マシンタイプを使用することで、ワークロードのパフォーマンス要件に合った SQL Server インスタンスを構成できます。また、アプリケーションのパフォーマンスを向上させるために、より大きな永続ディスクと、さらに高速な SSD 永続ディスクを使用することもできます。

加えて、VM が存在する VPC ネットワークやサブネット上の SQL Server のトラフィックを許可するように、特定のファイアウォール ルールを設定する必要があります。詳しくは、SQL Server のベスト プラクティスをご覧ください。

Console

SQL Server インスタンスを作成するには、次の手順を行います。

  1. Google Cloud Console で、[インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

  2. VM の詳細を指定します。

  3. [ブートディスク] セクションで [変更] をクリックし、次の操作を行います。

    1. [公開イメージ] タブで、[OS] リストをクリックし、[SQL Server on Windows Server] を選択します。
    2. [バージョン] フィールドで、バージョンを選択します。
    3. [ブートディスクの種類] リストで、ブートディスクの種類を選択します。
    4. [サイズ(GB)] フィールドにブートディスクのサイズを設定します。
    5. (省略可)ブートディスクの詳細設定を変更するには、[詳細設定を表示] をクリックし、設定を指定します。
    6. ブートディスクの構成を保存するには、[選択] をクリックします。
  4. [作成] をクリックします。

VM を作成した後は、VM 上の SQL Server へのアクセスを許可するファイアウォール ルールを作成します。SQL Server のデフォルト ポートは 1433 です。

  1. Google Cloud コンソールで [ファイアウォール ルール] ページに移動します。

    [ファイアウォール ルール] に移動

  2. ページの上部にある [ファイアウォール ルールを作成] をクリックして、ファイアウォール ルールの作成を開始します。

  3. このファイアウォールルールの詳細を指定します。

    • [名前] フィールドに、ファイアウォール ルールの名前を指定します。
    • [ネットワーク] フィールドで、SQL Server インスタンスが配置されている VPC ネットワークを選択します。
    • [トラフィックの方向] で [上り] をオンにします。
    • [ターゲット] フィールドで、ファイアウォール ルールのターゲット(すべてのインスタンス、指定されたターゲットタグ、サービス アカウント)を選択します。たとえば、[ネットワーク上のすべてのインスタンス] オプションを選択できます。SQL Server インスタンスにタグまたはサービス アカウントを構成した場合は、ファイアウォール ルールを特定のタグまたはサービス アカウントに制限できます。
    • [ソースフィルタ] フィールドで、このポートへのアクセスを許可する IP の範囲を選択します。上り(内向き)ルールでは、送信元 IPv4 範囲、送信元 IPv6 範囲、送信元タグ、サービス アカウントを選択できます。[ソースフィルタ] の後のフィールドを使用して、選択したソースに関する追加情報を指定します。
    • [プロトコルとポート] セクションで、[指定したプロトコルとポート] を選択し、SQL Server が使用するポートを入力します。この例では、[TCP] を選択し、デフォルト ポートである 1433 を入力します。
  4. [作成] をクリックしてファイアウォール ルールを作成した後、ポート 1433 での SQL Server インスタンスへのアクセスを許可します。

VM にさらにファイアウォール ルールを追加する必要がある場合は、ファイアウォール ルールのドキュメントをご覧ください。

gcloud

compute images list コマンドを使用して、使用可能な SQL Server イメージのリストを表示します。

gcloud compute images list --project windows-sql-cloud --no-standard-images

compute instances create コマンドを使用して新しい VM を作成し、Windows Server または SQL Server 公開イメージのいずれかのイメージ ファミリーを指定します。

gcloud compute instances create VM_NAME \
    --image-project windows-sql-cloud \
    --image-family IMAGE_FAMILY \
    --machine-type MACHINE_TYPE \
    --boot-disk-size BOOT_DISK_SIZE \
    --boot-disk-type BOOT_DISK_TYPE

次のように置き換えます。

VM を作成した後は、VM 上の SQL Server へのアクセスを許可するファイアウォール ルールを作成します。SQL Server のデフォルト ポートは 1433 です。

gcloud compute firewall-rules create sql-server-1433 \
    --description "Allow SQL Server access from all sources on port 1433." \
    --allow tcp:1433 --network NETWORK

ここで、NETWORK は VM が配置されている VPC ネットワークの名前です。

VM にさらにファイアウォール ルールを追加する必要がある場合は、ファイアウォール ルールのドキュメントをご覧ください。

Terraform

SQL Server VM インスタンスを作成するには、google_compute_instance リソースを使用します。

resource "google_compute_instance" "sqlserver_vm" {
  provider = google-beta
  name     = "sqlserver-vm"
  boot_disk {
    auto_delete = true
    device_name = "persistent-disk-0"
    initialize_params {
      image = "windows-sql-cloud/sql-std-2019-win-2022"
      size  = 50
      type  = "pd-balanced"
    }
    mode = "READ_WRITE"
  }
  machine_type = "n1-standard-4"
  zone         = "europe-west1-b"
  network_interface {
    access_config {
      network_tier = "PREMIUM"
    }
    network    = google_compute_network.default.id
    stack_type = "IPV4_ONLY"
    subnetwork = google_compute_subnetwork.default.id
  }
}

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

REST

API で VM を作成するには、VM 作成リクエストに initializeParams プロパティを含め、Windows イメージを指定します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

instance = {
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [{
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
         "diskName": "DISK_NAME",
         "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY",
         "diskSizeGb": "BOOT_DISK_SIZE",
         "diskType": "BOOT_DISK_TYPE",
       }
    }],
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT"
     }],
    "network": "global/networks/default"
  }],
  "serviceAccounts": [{
       "email": DEFAULT_SERVICE_EMAIL,
       "scopes": DEFAULT_SCOPES
  }]
}

次のように置き換えます。

  • PROJECT_ID: プロジェクトの ID。
  • ZONE: このインスタンスのゾーン
  • VM_NAME: 新しい VM の名前
  • MACHINE_TYPE: 使用可能なマシンタイプ
  • IMAGE_PROJECT: Windows Server イメージの windows-cloud か、SQL Server がプリインストールされた Windows Server イメージの windows-sql-cloud
  • IMAGE_FAMILY: Windows Server または SQL Server イメージの公開イメージ ファミリー
  • BOOT_DISK_SIZE: ブートディスクのサイズ(GB)。永続ディスクのサイズが大きいほど、スループットが高くなります
  • BOOT_DISK_TYPE: VM のブートディスクの種類。例: pd-ssd

VM を作成した後は、VM 上の SQL Server へのアクセスを許可するファイアウォール ルールを作成します。SQL Server のデフォルト ポートは 1433 です。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls

{
 "name": "sql-server-1433",
 "network": "global/networks/NETWORK",
 "allowed": [
  {
   "IPProtocol": "tcp",
   "ports": [
    "1433"
   ]
  }
 ]
}

次のように置き換えます。

  • PROJECT_ID: プロジェクトの ID。
  • NETWORK: VM が配置されている VPC ネットワークの名前。

SQL Server インスタンスを作成したら、VM の初期パスワードを設定します。これにより、RDP を介して VM に接続できるようになります。次に、SQL Server Management Studio を実行して、SQL Server インスタンス上のデータベースを管理します。

さらに、次のアイテムを 1 つ以上使用して、SQL Server インストールを拡張することができます。

SQL Server データベースの管理

管理者として SQL Server Management Studio を実行し、SQL Server データベースを構成します。SQL Server Management Studio は、ローカル ワークステーションにダウンロードしてインストールし、それを使用してリモートで VM 上のデータベース エンジンに接続できます。

Management Studio をローカル ワークステーションにインストールできない場合は、RDP を介して VM に接続し、VM 自体で Management Studio を実行します。SQL Server 2012 と SQL Server 2014 は、どちらもデフォルトで SQL Server Management Studio が含まれています。SQL Server 2016 の場合は、SQL Server Management Studio を Microsoft のウェブサイトからダウンロードして VM にインストールします。

デフォルトでは、SQL Server は SQL Server 自体へのリモート アクセスを制御するために、Windows 認証モードを使用します。SQL Server 認証モードを使用する必要がある場合は、認証モードを変更します

SQL Server インスタンス名の手動更新

SQL Server をホストする VM の名前を変更する場合は、SQL Server インスタンス名を更新する必要があります。詳細については、SQL Server のスタンドアロン インスタンスをホストするコンピュータの名前変更をご覧ください。

次のステップ