Compute Engine で SQL Server データベースを作成する
ラボ
1時間
universal_currency_alt
クレジット: 5
show_chart
中級
info
このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。
概要
このラボでは、プライベート ネットワークに SQL Server データベース サーバーをプロビジョニングします。次に、そのサーバーの管理に使用できる Windows マシンをパブリック ネットワークに作成します。また、データベースへの接続に使用できる Linux クライアントをパブリック ネットワークに作成します。最後に、プライベート ネットワークからのみ SQL Server データベースへのアクセスを許可するファイアウォール ルールを設定します。
目標
このラボでは、次のタスクの実行方法について学びます。
- クライアント VM とサーバー VM を作成する。
- データベース サーバーを管理する。
- クライアントからデータベースに接続する。
設定と要件
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
-
シークレット ウィンドウを使用して Google Skills にログインします。
-
ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。
-
準備ができたら、[ラボを開始] をクリックします。
-
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud コンソールにログインする際に使用します。
-
[Google コンソールを開く] をクリックします。
-
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーや料金が発生します。
-
利用規約に同意し、再設定用のリソースページをスキップします。
タスク 1. クライアント VM とサーバー VM を作成する
-
新しいウェブブラウザ ウィンドウを開き、Google Cloud コンソール(console.cloud.google.com)に移動します。
-
プロジェクト セレクタを使用して、
名前が「qwiklabs-gcp」で始まる最初のプロジェクトを選択します。
-
ナビゲーション メニュー(
)で、[Cloud の概要] をクリックします。
-
[プロジェクト情報] セクションで、プロジェクト ID を見つけてコピーし、テキスト ファイルに貼り付けます。(後で使用します。)
![[プロジェクト情報] ペイン内でハイライト表示されているプロジェクト ID](https://cdn.qwiklabs.com/AP9wcXr6t4Os7M8WhD8i5uz3GhAEKE5Jxc8Ct7ocuAs%3D)
- コンソールの右上にある [Cloud Shell をアクティブにする] アイコン(
)をクリックします。
Cloud Shell ターミナルがウィンドウの下部のペインに表示されます。
- 次のコマンドを入力して、前のラボの完成版を含む GitHub リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/training-data-analyst
- 次のフォルダに移動します。
cd ~/training-data-analyst/courses/db-migration/terraform-sql-server-on-gce/
-
ls と入力すると、このフォルダに前のラボで作成した Terraform ファイルがあることがわかります。
-
[エディタを開く] をクリックし、プロンプトが表示されたら [新しいウィンドウで開く] をクリックします。
-
training-data-analyst/courses/db-migration/terraform-sql-server-on-gce/ フォルダに移動し、terraform.tfvars ファイルを開きます。
-
project_id 変数を実際のプロジェクトの ID に置き換えます。
-
さらに、リージョンを [] に変更し、ゾーンを [] に変更します。
-
プライベート ネットワークに SQL Server マシンを作成します。vm-sql-server-windows.tf という名前のファイルを追加し、次の Terraform コードを貼り付けます。
# プライベート VPC に Windows SQL Server を作成する
resource "google_compute_instance" "sql-server-windows" {
name = "sql-server-windows-${random_id.instance_id.hex}"
machine_type = "e2-standard-2"
zone = var.gcp_zone_1
tags = ["allow-rdp", "allow-sql"]
boot_disk {
initialize_params {
image = "windows-sql-cloud/sql-2017-express-windows-2016-dc-v20200414"
}
}
network_interface {
network = google_compute_network.private-vpc.name
subnetwork = google_compute_subnetwork.private-subnet_1.name
# access_config { } - 外部 IP を使用しない場合は access_config を削除する
}
}
output "sql-server-windows" {
value = google_compute_instance.sql-server-windows.name
}
output "sql-server-windows-external-ip" {
value = "NONE"
}
output "tsql-server-windows-internal-ip" {
value = google_compute_instance.sql-server-windows.network_interface.0.network_ip
}
- SQL Server の管理に使用できる Windows マシンをパブリック ネットワークに作成します。vm-windows-admin.tf という名前のファイルを追加し、次の Terraform コードを貼り付けます。
# VM Windows Admin を作成する
resource "google_compute_instance" "windows-admin" {
name = "windows-admin-${random_id.instance_id.hex}"
machine_type = "e2-standard-2"
zone = var.gcp_zone_1
tags = ["allow-rdp"]
boot_disk {
initialize_params {
image = "windows-cloud/windows-server-2016-dc-v20200424"
}
}
network_interface {
network = google_compute_network.public-vpc.name
subnetwork = google_compute_subnetwork.public-subnet_1.name
access_config { }
}
}
output "windows-admin-name" {
value = google_compute_instance.windows-admin.name
}
output "windows-admin-external-ip" {
value = google_compute_instance.windows-admin.network_interface.0.access_config.0.nat_ip
}
output "windows-admin-internal-ip" {
value = google_compute_instance.windows-admin.network_interface.0.network_ip
}
注: このサーバーはパブリック ネットワークにあるため、RDP で接続できます。その後、プライベート ネットワーク内の SQL Server に RDP でアクセスして管理します。
- もう 1 台のマシンを作成します。これは SQL Server への接続に使用できる Linux クライアントです。vm-sql-client.tf という名前の別のファイルを追加し、次の Terraform コードを追加します。
# VM SQL クライアントを作成する
resource "google_compute_instance" "sql-client" {
name = "sql-client-${random_id.instance_id.hex}"
machine_type = "e2-micro"
zone = var.gcp_zone_1
tags = ["allow-ssh"]
boot_disk {
initialize_params {
image = "ubuntu-os-cloud/ubuntu-1604-xenial-v20200429"
}
}
metadata_startup_script = "sudo apt-get update;"
network_interface {
network = google_compute_network.public-vpc.name
subnetwork = google_compute_subnetwork.public-subnet_1.name
access_config { }
}
}
output "sql-client-name" {
value = google_compute_instance.sql-client.name
}
output "sql-client-external-ip" {
value = google_compute_instance.sql-client.network_interface.0.access_config.0.nat_ip
}
output "sql-client-internal-ip" {
value = google_compute_instance.sql-client.network_interface.0.network_ip
}
注: これは、SQL Server クライアント ソフトウェアをインストールし、SQL Server データベースへの接続をテストするために使用する Ubuntu Linux マシンです。
- プライベート ネットワークから SQL Server への通信を許可するファイアウォール ルールを作成します。vpc-firewall-rules-private.tf ファイルを開き、次のファイアウォール ルールを末尾に追加します。
# パブリック サブネットからの SQL のみを許可する
resource "google_compute_firewall" "private-allow-sql" {
name = "${google_compute_network.private-vpc.name}-allow-sql"
network = google_compute_network.private-vpc.name
allow {
protocol = "tcp"
ports = ["1433"]
}
source_ranges = [
"${var.subnet_cidr_public}"
]
target_tags = ["allow-sql"]
}
- Terraform を初期化してプランを作成するには、Cloud Shell ターミナルに戻り、次のコマンドを入力します。
terraform init
terraform plan
- リソースを作成するには、次のコマンドを実行します。
terraform apply -auto-approve
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
クライアント VM とサーバー VM を作成する
タスク 2. データベース サーバーを管理する
-
Terraform プロセスが完了したら、ナビゲーション メニュー(
)で [Compute Engine] をクリックします。
-
複数のマシンが一覧表示されるので、ユーザー名とパスワードを記録しておきます。そのためには、パソコンでテキスト エディタを開き、次のテンプレートを貼り付けます。
Windows 管理者 RDP ログイン
ユーザー名:
パスワード:
SQL Server RDP ログイン
内部 IP:
ユーザー名:
パスワード:
SQL Server ユーザー
ユーザー名:
パスワード:
-
windows-admin- マシンを見つけて、[RDP] ボタンのプルダウン矢印をクリックし、[Windows パスワードを設定] を選択します。
-
ユーザー名を任意の名前に変更し、[設定] をクリックしてパスワードを生成します。
-
パスワードをクリップボードにコピーし、作成したテキスト ファイルにユーザー名とパスワードを記録します。
-
同様に、sql-server-windows- という名前のマシンのユーザー名とパスワードを生成します。必ず、ユーザー名とパスワードをテキスト ファイルに記録してください。また、SQL Server マシンの内部 IP アドレスを見つけて、テキスト ファイルに記録します。
-
Windows 管理マシンに RDP でログインします。
-
Windows の [スタート] メニューで、[リモート デスクトップ] ショートカットを選択します。サーバー マネージャーのダッシュボードを閉じます。
-
SQL Server の内部 IP アドレスを入力し、[接続] をクリックします。次に、記録したユーザー名とパスワードでログインします。
[はい] をクリックすると、SQL Server マシンにログインできます。このマシンでサーバー マネージャーのダッシュボードを閉じます。
- SQL Server のユーザー ログインを作成するには、[スタート] メニューをクリックして「ssms」と入力し、Microsoft SQL Server Management Studio のショートカットを選択します。
Management Studio が起動すると、ローカル サーバー名がすでに入力されているはずです。
-
[接続] をクリックしてログインします。
-
オブジェクト エクスプローラで、一番上の [サーバー] を右クリックし、[プロパティ] を選択します。
-
[セキュリティ] タブをクリックし、[SQL Server と Windows の認証モード] を選択します。
-
[OK] をクリックしてメッセージを読み、[OK] をクリックして閉じます。
-
SQL Server を再起動するには、オブジェクト エクスプローラで SQL Server をもう一度右クリックし、[再起動] を選択します。プロンプトが表示されたら同意し、サーバーが再起動するまで数秒待ちます。場合によっては、再起動されたことを確認するため、[更新] ボタンをクリックする必要があります。
-
オブジェクト エクスプローラで、[セキュリティ] をダブルクリックし、[ログイン] をダブルクリックして展開します。
-
[ログイン] を右クリックし、[新しいログイン] を選択します。
- [ログイン名] テキスト ボックスにユーザー名を指定します。
- [SQL Server 認証] を選択します。
- パスワードを設定し、[パスワード ポリシーを適用する] をオフにします。
- [OK] をクリックしてログインを作成します。
-
先ほど作成した SQL Server ユーザーのユーザー名とパスワードをテキスト ファイルに記録します。
-
SQL Server マシンへのリモート デスクトップ セッションと、Windows 管理マシンへの RDP 接続を閉じます。
タスク 3. クライアントからデータベースに接続する
-
Google Cloud コンソールに戻り、Compute Engine サービスを開きます。
-
sql-client- マシンの横にある [SSH] をクリックします。
-
このマシンに SQL Server クライアント ソフトウェアをインストールし、作成したばかりのログインをテストします。SSH 接続が確立されたら、次のコマンドを入力します。
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev
注: プロンプトが表示されるたびに [はい] を選択します。
- 次のコマンドを入力し、SQL クライアントをパスに含めます。
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
クライアントからデータベースに接続する
- マシンの IP アドレスと作成した SQL Server ユーザー名を使用して、次のコマンドを入力し、プロンプトが表示されたらパスワードを入力します。
sqlcmd -S 10.2.2.3,1433 -U username
エラーが表示されなければ、クライアントのログインは成功しています。この時点ではデータベースがないため、他に行う作業はありませんが、完全なソリューションが用意されています。データベース サーバーは、一般公開されていない安全なネットワークにあります。データベースの管理に使用できる Windows マシンがパブリック ネットワークにあり、SQL Server ポート経由でデータベースにアクセスできるクライアント マシンがあります。
-
「quit」と入力して sqlcmd を終了し、SSH セッションを閉じます。
-
Cloud Shell ターミナルに戻り、次のコマンドを入力して、ラボで作成したものをすべて削除します。
terraform destroy -auto-approve
これで完了です。プライベート ネットワークに SQL Server マシンをプロビジョニングしました。次に、データベース サーバーの管理に使用する Windows マシンをパブリック ネットワークに作成しました。また、データベースへの接続に使用する Linux クライアントをパブリック ネットワークに作成しました。最後に、プライベート ネットワークからのみ SQL Server データベースへのアクセスを許可するファイアウォール ルールを設定しました。
ラボを終了する
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Skills から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
- 星 1 つ = 非常に不満
- 星 2 つ = 不満
- 星 3 つ = どちらともいえない
- 星 4 つ = 満足
- 星 5 つ = 非常に満足
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2026 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。