このガイドでは、Database Migration Service の分散可用性グループ(DAG)を使用して、セルフマネージド SQL Server Enterprise Edition インスタンスから Cloud SQL for SQL Server Enterprise Edition に、プライベート ネットワーク接続経由でデータベースを移行する方法について説明します。
DAG 移行では、Database Migration Service は、最初のフルロード(FULL_DUMP フェーズ)と継続的なトランザクション ログ レプリケーション(変更データ キャプチャ - CDC - フェーズ)の両方を、移行元の可用性グループと移行先の Cloud SQL for SQL Server 可用性グループ間のネットワーク経由で直接ストリーミングします。DAG 移行のアーキテクチャ、前提条件、制限事項の詳細については、分散可用性グループ(DAG)の移行についてをご覧ください。Cloud Storage に保存されているバックアップ ファイルを使用して移行するには、SQL Server データベースを Cloud SQL for SQL Server に移行するをご覧ください。
分散可用性グループの移行を行うには、次の大まかなタスクを完了します。
- 移行先の Cloud SQL for SQL Server インスタンスを作成して準備します。
- 移行元の SQL Server インスタンスと可用性グループを準備します。
- 双方向のプライベート ネットワーク接続を確立し、リンクサーバーを構成します。
- 接続プロファイルを作成して移行ジョブを実行します。
- 移行をモニタリングして検証する。
- 移行をプロモート、フェイルバック、または完了します。
費用
Cloud SQL への同種移行の場合、Database Migration Service は追加料金なしで提供されます。ただし、標準の Cloud SQL とネットワークの料金が適用されます。使用料金を概算するには、料金計算ツールを使用します。
始める前に
- ソース データベースと宛先データベースが、分散可用性グループの移行に関するすべての前提条件と制限事項を満たしていることを確認します(Enterprise Edition の実行、デフォルトのデータ ディレクトリへのデータファイルの保存、データベース所有者として
saを使用しないなど)。分散可用性グループ(DAG)の移行についてをご覧ください。 - 移行先の Google Cloud リージョンを選択します。Database Migration Service は完全にリージョンに依存するプロダクトです。移行に関連するすべてのエンティティ(移行元と移行先の接続プロファイル、移行ジョブ、移行先の Cloud SQL for SQL Server インスタンス)は、同じリージョンに存在する必要があります。
- Google Cloud コンソールのプロジェクト セレクタ ページで、 Google Cloud プロジェクトを選択または作成します。
- Database Migration Service、Compute Engine、Cloud SQL Admin API を有効にします。
必要なロール
Google Cloud プロジェクトで次の IAM ロールが付与されていることを確認します。
- 移行を実行するユーザー アカウント:
- データベース移行管理者(
roles/datamigration.admin) - Cloud SQL 編集者(
roles/cloudsql.editor)
- データベース移行管理者(
- Database Migration Service サービス アカウント(
service-<var>PROJECT_NUMBER</var>@gcp-sa-datamigration.):- Database Migration Service エージェント(
roles/datamigration.serviceAgent) - Cloud SQL 編集者(
roles/cloudsql.editor) - Cloud SQL Studio ユーザー(
roles/cloudsql.studioUser)
- Database Migration Service エージェント(
ロールの付与の詳細については、アクセスの管理をご覧ください。
移行先の Cloud SQL for SQL Server インスタンスを作成して準備する
このステップでは、移行先の Cloud SQL for SQL Server Enterprise エディション インスタンスを作成し、リンクサーバーに必要なデータベース フラグを有効にします。
- 移行先の Cloud SQL for SQL Server インスタンスを作成します。作成手順の詳細については、Cloud SQL for SQL Server インスタンスを作成するをご覧ください。インスタンスが、分散可用性グループの移行に関する次の要件を満たしていることを確認します。
- [Enterprise Edition](バージョン 2017、2019、2022、2025)を選択します。
- ソース SQL Server インスタンスと移行先 Cloud SQL for SQL Server インスタンスの接続方法に合わせて、プライベート ネットワーキングを構成します。Virtual Private Cloud ピアリングを介してインスタンスを接続する場合は、
プライベート サービス アクセスを有効にします。インバウンド Private Service Connect エンドポイントとアウトバウンド Private Service Connect ネットワーク アタッチメントを使用してインスタンスを接続する場合は、
Private Service Connect を使用します。
同じ宛先の Cloud SQL for SQL Server インスタンスで、プライベート サービス アクセスと Private Service Connect の両方を有効にしないでください。Cloud SQL for SQL Server は、両方が有効になっている場合、リンクサーバーをサポートしません。ネットワーキングの設定の詳細については、双方向のプライベート ネットワーク接続を確立するをご覧ください。
- DAG 移行ジョブを完了して削除するまで、ポイントインタイム リカバリ(PITR)を無効にして、リードレプリカを追加しないでください。
- ソース データベースが Windows Active Directory ログインによって所有されている場合は、移行前にソース データベースの所有者を SQL ログインに変更するか、移行先の Cloud SQL for SQL Server インスタンスを Active Directory に参加させて、移行ジョブの開始時に Database Migration Service が移行先インスタンスに対応する Windows ログインを自動的に作成できるようにします。手順については、Cloud SQL for SQL Server 用に Managed Microsoft AD を構成するをご覧ください。
- 移行先の Cloud SQL for SQL Server インスタンスで
cloudsql enable linked serversデータベース フラグを有効にします(onに設定)。フラグの設定手順については、リンクサーバーを管理するとデータベース フラグを構成するをご覧ください。このフラグは、このガイドの後半で移行先の Cloud SQL for SQL Server インスタンスでリンクサーバーを作成して検証するときに必要になります。
移行元の SQL Server インスタンスを準備する
このステップでは、移行元の SQL Server インスタンスで Always On 可用性グループを有効にし、データベース ミラーリング エンドポイントと証明書を作成します。また、Database Migration Service 専用の SQL ログインを作成し、移行元の可用性グループを準備します。
Always On 可用性グループを有効にする
ソース SQL Server インスタンスで Always On 可用性グループ機能が有効になっていることを確認します。
- Windows の場合は、Microsoft のドキュメントの Always On 可用性グループを有効または無効にするをご覧ください。
- Linux の場合は、Microsoft のドキュメントで Linux で高可用性を実現するために SQL Server Always On 可用性グループを構成するをご覧ください。
データベース ミラーリング エンドポイントと証明書を作成する
SQL Server では、分散可用性グループが TCP DATABASE_MIRRORING(DBM)エンドポイント(デフォルト ポート 5022)を介してインスタンス間でデータとトランザクション ログをストリーミングします。セルフマネージド SQL Server インスタンスと移行先の Cloud SQL for SQL Server インスタンスはスタンドアロン インスタンスであるため、DBM エンドポイントを介して信頼を確立するには、証明書ベースの相互認証と AES 暗号化が必要です。
証明書を作成し、ソース SQL Server インスタンスの DATABASE_MIRRORING エンドポイントにバインドするだけで済みます。移行先の Cloud SQL for SQL Server インスタンスで証明書ファイルを手動でエクスポートしたり、証明書を作成したりする必要はありません。
- 移行ジョブを開始すると、Database Migration Service は、移行先の Cloud SQL for SQL Server インスタンスに
DATABASE_MIRRORINGエンドポイントと証明書を自動的に構成し、リンクサーバーを使用して両方のインスタンス間で公開鍵を交換します。 - カットオーバーの完了後に移行ジョブを削除すると、Database Migration Service はインポートされた証明書を両方のインスタンスから自動的に削除します。
ソース SQL Server インスタンスに、証明書で認証された DATABASE_MIRRORING エンドポイントがまだない場合は、作成します。
- SQL クライアント(
sqlcmdユーティリティなど)を使用してソース インスタンスに接続します。 - 次の T-SQL コマンドを実行して、データベース マスターキー、証明書、選択した
DBMポート(デフォルトは5022)をリッスンするDATABASE_MIRRORINGエンドポイントを作成します。USE [master]; GO IF NOT EXISTS (SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101) BEGIN CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MASTER_KEY_PASSWORD'; END GO CREATE CERTIFICATE [SOURCE_CERT_NAME] WITH SUBJECT = 'AlwaysOn AG Certificate', EXPIRY_DATE = 'CERT_EXPIRY_DATE'; GO CREATE ENDPOINT [HADR_ENDPOINT_NAME] STATE = STARTED AS TCP (LISTENER_PORT = SOURCE_DBM_PORT_NUMBER) FOR DATABASE_MIRRORING ( ROLE = ALL, AUTHENTICATION = CERTIFICATE [SOURCE_CERT_NAME], ENCRYPTION = REQUIRED ALGORITHM AES ); GO
次のように置き換えます。
MASTER_KEY_PASSWORDは、データベース マスター鍵を暗号化するパスワードに置き換えます。SOURCE_CERT_NAMEは、ソースのデータベース ミラーリング証明書の名前(例:dbmCertificate)に置き換えます。CERT_EXPIRY_DATEは、証明書の有効期限(YYYYMMDD形式)に置き換えます。HADR_ENDPOINT_NAMEは、データベース ミラーリング エンドポイントの名前に置き換えます。SOURCE_DBM_PORT_NUMBERは、データベース ミラーリング トラフィックの TCP ポート番号(デフォルトは5022)に置き換えます。
専用の Database Migration Service のログインと権限を作成する
Database Migration Service は、ソース接続プロファイルで指定した専用の SQL ログインを使用して、リンクサーバー経由でソース SQL Server インスタンスに接続します。このログインを構成するには、sysadmin サーバーロールを付与するか、gcp_dms_db ヘルパー データベースを使用して最小権限を構成します。
sysadmin ロールを付与する
セキュリティ ポリシーで移行ログインに sysadmin サーバーロールを付与できる場合は、次の T-SQL コマンドを実行します。
USE [master]; GO CREATE LOGIN [SOURCE_USERNAME] WITH PASSWORD = 'SOURCE_PASSWORD'; CREATE USER [SOURCE_USER] FOR LOGIN [SOURCE_USERNAME]; ALTER SERVER ROLE [sysadmin] ADD MEMBER [SOURCE_USERNAME]; GRANT CONNECT ON ENDPOINT::[HADR_ENDPOINT_NAME] TO [SOURCE_USERNAME]; GO
次のように置き換えます。
SOURCE_USERNAMEは、Database Migration Service がソース インスタンスへの接続に使用する SQL ログイン名(cloud_dms_loginなど)に置き換えます。SOURCE_PASSWORDは、SOURCE_USERNAMEログインのパスワードに置き換えます。SOURCE_USERは、SOURCE_USERNAMEにマッピングされたデータベース ユーザー名(cloud_dms_userなど)に置き換えます。HADR_ENDPOINT_NAMEは、データベース ミラーリング エンドポイントの名前(Hadr_endpointなど)に置き換えます。
最小権限(gcp_dms_db)
セキュリティ ポリシーで移行ログインに sysadmin を付与することが禁止されている場合は、専用の gcp_dms_db ヘルパー データベース(TRUSTWORTHY ON を持つ sa が所有)を作成し、3 つの Database Migration Service ラッパー ストアド プロシージャを作成して、移行ログインにきめ細かい権限を付与します。
USE [master]; GO CREATE DATABASE [gcp_dms_db]; GO ALTER AUTHORIZATION ON DATABASE::[gcp_dms_db] TO [sa]; ALTER DATABASE [gcp_dms_db] SET TRUSTWORTHY ON; GO USE [gcp_dms_db]; GO CREATE OR ALTER PROCEDURE dbo.gcp_dms_set_dag_commit_mode @dag_name NVARCHAR(128), @source_ag NVARCHAR(128), @dest_ag NVARCHAR(128), @commit_mode NVARCHAR(30) WITH EXECUTE AS 'dbo' AS BEGIN SET NOCOUNT ON; IF @commit_mode NOT IN ('SYNCHRONOUS_COMMIT', 'ASYNCHRONOUS_COMMIT') BEGIN RAISERROR('Invalid commit mode. Must be SYNCHRONOUS_COMMIT or ASYNCHRONOUS_COMMIT.', 16, 1); RETURN; END DECLARE @sql NVARCHAR(MAX); SET @sql = N'USE master; ALTER AVAILABILITY GROUP ' + QUOTENAME(@dag_name) + N' MODIFY AVAILABILITY GROUP ON ' + QUOTENAME(@source_ag, '''') + N' WITH (AVAILABILITY_MODE = ' + @commit_mode + N'), ' + QUOTENAME(@dest_ag, '''') + N' WITH (AVAILABILITY_MODE = ' + @commit_mode + N');'; EXECUTE sp_executesql @sql; END; GO CREATE OR ALTER PROCEDURE dbo.gcp_dms_set_dag_secondary @dag_name NVARCHAR(128) WITH EXECUTE AS 'dbo' AS BEGIN SET NOCOUNT ON; DECLARE @sql NVARCHAR(MAX); SET @sql = N'USE master; ALTER AVAILABILITY GROUP ' + QUOTENAME(@dag_name) + N' SET (ROLE = SECONDARY);'; EXECUTE sp_executesql @sql; END; GO CREATE OR ALTER PROCEDURE dbo.gcp_dms_failover_dag @dag_name NVARCHAR(128) WITH EXECUTE AS 'dbo' AS BEGIN SET NOCOUNT ON; DECLARE @sql NVARCHAR(MAX); SET @sql = N'USE master; ALTER AVAILABILITY GROUP ' + QUOTENAME(@dag_name) + N' FORCE_FAILOVER_ALLOW_DATA_LOSS;'; EXECUTE sp_executesql @sql; END; GO USE [master]; GO CREATE LOGIN [SOURCE_USERNAME] WITH PASSWORD = 'SOURCE_PASSWORD'; CREATE USER [SOURCE_USER] FOR LOGIN [SOURCE_USERNAME]; GRANT VIEW SERVER STATE TO [SOURCE_USERNAME]; -- Note: Run GRANT VIEW SERVER PERFORMANCE STATE on SQL Server 2022 and later: GRANT VIEW SERVER PERFORMANCE STATE TO [SOURCE_USERNAME]; GRANT VIEW ANY DEFINITION TO [SOURCE_USERNAME]; GRANT ALTER ANY AVAILABILITY GROUP TO [SOURCE_USERNAME]; GRANT CONNECT ON ENDPOINT::[HADR_ENDPOINT_NAME] TO [SOURCE_USERNAME]; GRANT CREATE CERTIFICATE TO [SOURCE_USER]; GO USE [gcp_dms_db]; GO CREATE USER [SOURCE_USER] FOR LOGIN [SOURCE_USERNAME]; GRANT EXECUTE ON dbo.gcp_dms_set_dag_commit_mode TO [SOURCE_USER]; GRANT EXECUTE ON dbo.gcp_dms_set_dag_secondary TO [SOURCE_USER]; GRANT EXECUTE ON dbo.gcp_dms_failover_dag TO [SOURCE_USER]; GO -- Repeat the following block for EACH user database in your source Availability Group: USE [DATABASE_NAME]; GO CREATE USER [SOURCE_USER] FOR LOGIN [SOURCE_USERNAME]; ALTER ROLE [db_backupoperator] ADD MEMBER [SOURCE_USER]; GO
次のように置き換えます。
SOURCE_USERNAMEは、Database Migration Service がソース インスタンスへの接続に使用する SQL ログイン名(cloud_dms_loginなど)に置き換えます。SOURCE_PASSWORDは、SOURCE_USERNAMEログインのパスワードに置き換えます。SOURCE_USERは、SOURCE_USERNAMEにマッピングされたデータベース ユーザー名(cloud_dms_userなど)に置き換えます。HADR_ENDPOINT_NAMEは、データベース ミラーリング エンドポイントの名前(Hadr_endpointなど)に置き換えます。DATABASE_NAMEは、可用性グループ内の各ソース データベースの名前に置き換えます。移行された各データベースにdb_backupoperatorを付与することは、Database Migration Service のプリフライト検証で必要です。これにより、プロモーション中にCHECKPOINTを使用してトランザクション ログをフラッシュできます。
ソース データベースと可用性グループを準備する
既存の Always On 可用性グループからデータベースを移行することも、新しいスタンドアロン可用性グループ(CLUSTER_TYPE = NONE)を作成することもできます。続行する前に、次の要件を確認してください。
- 可用性グループ内のすべてのデータベースは、
FULL復旧モデルを使用し、saが所有せず、データファイル(.mdfと.ndf)をデフォルトのデータ ディレクトリに保存します。 - 既存の可用性グループを再利用する場合は、データベース ミラーリング エンドポイントがポート
5022(または選択した DBM ポート)に構成されていること、レプリカでSECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)が有効になっていること(プロモーションによって DAG ロールが切り替えられた後も、セカンダリ データベースが標準の接続文字列で読み取り可能な状態を維持するため)、移行ログインにCONNECT ON ENDPOINTが設定されていることを確認します。移行元の可用性グループに複数のレプリカがあり、可用性グループ リスナーが構成されている場合は、リンクサーバーと移行元の接続プロファイルを構成するときに、リスナー IP アドレスを<var>SOURCE_HOST_IP_ADDRESS</var>として使用します。これにより、移行元の可用性グループでフェイルオーバーが発生した場合に移行を再開できます。
データベースを準備して新しいスタンドアロン可用性グループ(CLUSTER_TYPE = NONE)を作成するには、次の T-SQL コマンドを実行します。
USE [master]; GO ALTER DATABASE [DATABASE_NAME] SET RECOVERY FULL; GO -- If the database is owned by 'sa', change the owner to another login: ALTER AUTHORIZATION ON DATABASE::[DATABASE_NAME] TO [DB_OWNER_LOGIN]; GO -- Initialize the local SQL Server transaction log chain for the Availability Group: BACKUP DATABASE [DATABASE_NAME] TO DISK = 'NUL'; GO CREATE AVAILABILITY GROUP [SOURCE_AVAILABILITY_GROUP_NAME] WITH (CLUSTER_TYPE = NONE) FOR REPLICA ON N'SOURCE_SERVER_NAME' WITH ( ENDPOINT_URL = N'TCP://localhost:SOURCE_DBM_PORT_NUMBER', FAILOVER_MODE = MANUAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, SEEDING_MODE = MANUAL, PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE), SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL) ); GO ALTER AVAILABILITY GROUP [SOURCE_AVAILABILITY_GROUP_NAME] ADD DATABASE [DATABASE_NAME]; GO
次のように置き換えます。
DATABASE_NAMEは、可用性グループに含めるデータベースの名前に置き換えます。DB_OWNER_LOGINは、データベースを所有するsa以外のログインに置き換えます。SOURCE_AVAILABILITY_GROUP_NAMEは、ソース可用性グループの名前(source_agなど)に置き換えます。SOURCE_SERVER_NAMEは、移行元の SQL Server インスタンスのサーバー名(SELECT @@SERVERNAMEによって返される値と一致)に置き換えます。SOURCE_DBM_PORT_NUMBERは、データベース ミラーリング エンドポイントの TCP ポート番号(デフォルトは5022)に置き換えます。
双方向のプライベート ネットワーク接続を確立する
DAG 移行の場合、Database Migration Service は内部 Google Cloud API を介して移行先の Cloud SQL for SQL Server インスタンスと通信し、移行先の Cloud SQL for SQL Server インスタンスのリンクサーバーを介して移行元の SQL Server インスタンスでオーケストレーション クエリを実行し、プライベート ネットワークを介して 2 つのインスタンス間でデータを直接ストリーミングします。この移行では、Virtual Private Cloud ネットワークを介して、ソース SQL Server ホストと移行先の Cloud SQL for SQL Server インスタンスの間に双方向のプライベート IP 接続を直接確立する必要があります。移行元インスタンスと移行先インスタンス間のパブリック IP 接続はサポートされていません。
必要なポートと IP アドレス
ネットワーク構成では、次の 2 つの TCP ポートで、移行元の SQL Server インスタンスと移行先の Cloud SQL for SQL Server インスタンス間のトラフィックを許可する必要があります。
| ポート | 方向 | 目的 |
|---|---|---|
SQL Server データベース ポート(デフォルトは 1433) |
移行先の Cloud SQL for SQL Server インスタンスから移行元の SQL Server インスタンス | 移行先の Cloud SQL for SQL Server インスタンスのリンクサーバーが、移行元インスタンスで事前検証、証明書交換、DAG オーケストレーション クエリを実行するために使用します。 |
データベース ミラーリング(DBM)ポート(デフォルトは 5022) |
移行元の SQL Server インスタンスと移行先の Cloud SQL for SQL Server インスタンス間の双方向 | 移行元と移行先の可用性グループが、FULL_DUMP 中の最初の完全読み込み、CDC 中の継続的なデータベース変更、FAILBACK 中のリバース レプリケーションをストリーミングするために使用します。 |
このガイドの後半でリンクサーバーと接続プロファイルを構成するときに、次の 2 つのプライベート IP アドレスを指定します。
SOURCE_HOST_IP_ADDRESS(リンクサーバーの@datasrcパラメータとソース接続プロファイルの--hostフラグで使用)は、移行先の Cloud SQL for SQL Server インスタンスから到達可能なソース SQL Server ホストのプライベート IP アドレス(または、マルチレプリカ ソース可用性グループ用に構成されている場合は、ソース可用性グループでフェイルオーバーが発生した場合に移行を再開できるように、可用性グループ リスナーの IP アドレスが推奨されます)です。DESTINATION_HOST_IP_ADDRESS(宛先接続プロファイルの--hostフラグで使用)は、ソース SQL Server ホストから到達可能な宛先 Cloud SQL for SQL Server インスタンス(またはその Private Service Connect エンドポイントの IP アドレス)のプライベート IP アドレスです。
プライベート ネットワーキング方法を構成する
移行先の Cloud SQL for SQL Server インスタンスで有効にしたネットワーキング方法(プライベート サービス アクセスまたは Private Service Connect)のネットワーク ルーティング構成を完了します。
プライベート サービス アクセス
プライベート サービス アクセスは、Virtual Private Cloud ネットワークを、移行先 Cloud SQL for SQL Server インスタンスをホストする Google マネージド サービス プロデューサーの Virtual Private Cloud ネットワークとピアリングします。
- Virtual Private Cloud ネットワークに、割り当てられた内部 IPv4 アドレス範囲と、宛先の Cloud SQL for SQL Server インスタンスに対して有効になっているプライベート接続(
servicenetworking-googleapis-comへの Virtual Private Cloud ピアリング)があることを確認します。手順については、Cloud SQL for SQL Server のプライベート IP を構成するをご覧ください。 - ホストされている場所に基づいて、移行元の SQL Server ホストへのルーティングを構成します。
- ソース インスタンスが同じ Virtual Private Cloud ネットワーク内の Compute Engine 仮想マシンで実行されている場合、追加のルーティングは必要ありません。仮想マシンと Cloud SQL for SQL Server インスタンスは、Virtual Private Cloud ピアリング接続を介して、互いのプライベート IP アドレスに直接アクセスできます。
- 移行元インスタンスがオンプレミス、別のクラウド プロバイダ、または別の Virtual Private Cloud ネットワークで実行されている場合は、次の手順を完了して、推移的なピアリング境界を越えてルートが交換されるようにします。
- Cloud VPN または Cloud Interconnect を使用して、外部ネットワークを Virtual Private Cloud ネットワークに接続します。手順については、外部ソースから Cloud SQL インスタンスにアクセスするをご覧ください。
- Cloud Router で、Cloud SQL for SQL Server に割り振られた IP アドレス範囲をソース ネットワークにアドバタイズします。手順については、カスタム IP 範囲のアドバタイズをご覧ください。
- Virtual Private Cloud ネットワークの
servicenetworking-googleapis-comピアリング接続を更新して、カスタムルートのエクスポートを有効にします。これにより、Cloud SQL for SQL Server インスタンスがソース ネットワークへのルートを学習します。手順については、ピアリング接続を更新するをご覧ください。
- 移行用のプライベート IP アドレスを記録します。
- ソース SQL Server ホストの内部 IP アドレスを
SOURCE_HOST_IP_ADDRESSとして使用します。 - 移行先の Cloud SQL for SQL Server インスタンスに割り当てられたプライベート IP アドレス(インスタンスの [概要] ページに表示)を
DESTINATION_HOST_IP_ADDRESSとして使用します。
- ソース SQL Server ホストの内部 IP アドレスを
Private Service Connect
プライベート サービス アクセスの代わりに Private Service Connect を使用する場合は、インバウンド Private Service Connect エンドポイント(ソース インスタンスがポート 5022 で Cloud SQL for SQL Server に接続できるようにする)とアウトバウンド Private Service Connect インターフェース(Cloud SQL for SQL Server がポート 1433 と 5022 でソース インスタンスへのリンクサーバーと DAG 接続を開始できるようにする)の両方を構成する必要があります。
- 移行先の Cloud SQL for SQL Server インスタンスで Private Service Connect が有効になっており(プライベート IP なし)、許可されたコンシューマー プロジェクトが指定されていることを確認します。手順については、Private Service Connect を構成するをご覧ください。
- ソース SQL Server ホストから移行先の Cloud SQL for SQL Server インスタンスへのインバウンド接続を許可するには、Virtual Private Cloud サブネットに内部 IP アドレスを予約し、Cloud SQL for SQL Server インスタンスのサービス アタッチメントをターゲットとする Private Service Connect エンドポイント(転送ルール)を作成します。手順については、Private Service Connect エンドポイントを作成するをご覧ください。
- 移行先の Cloud SQL for SQL Server インスタンスから移行元の SQL Server ホストへのアウトバウンド接続を許可するには(リンクサーバーとアウトバウンド DAG 接続に必要)、移行元ホストにルーティングできるサブネットに Virtual Private Cloud ネットワーク アタッチメントを作成し、移行先の Cloud SQL for SQL Server インスタンスで Private Service Connect のアウトバウンド接続を構成します。手順については、ネットワーク アタッチメントを作成して管理すると Private Service Connect のアウトバウンド接続を構成するをご覧ください。
- 移行用のプライベート IP アドレスを記録します。
- ソース SQL Server ホストのプライベート IP アドレスを
SOURCE_HOST_IP_ADDRESSとして使用します。 - Virtual Private Cloud ネットワーク内の Private Service Connect エンドポイント(転送ルール)の内部 IP アドレスを
DESTINATION_HOST_IP_ADDRESSとして使用します。
- ソース SQL Server ホストのプライベート IP アドレスを
Virtual Private Cloud とソースホストのファイアウォール ルールを構成する
- Virtual Private Cloud ネットワークで、ソース SQL Server IP アドレス(
SOURCE_HOST_IP_ADDRESS)と宛先 Cloud SQL for SQL Server IP 範囲(または Private Service Connect エンドポイントとネットワーク アタッチメント サブネット)の間の TCP トラフィックを、データベース ポート(デフォルトは1433)とデータベース ミラーリング ポート(デフォルトは5022)の両方で許可する上り(内向き)と下り(外向き)のファイアウォール ルールを作成します。ファイアウォール ルールの作成の詳細については、ファイアウォール ルールを作成するをご覧ください。 - 移行元の SQL Server マシンで、次のネットワークとホストのファイアウォール設定を確認します。
- SQL Server 構成マネージャー(Linux の場合は
mssql-conf)で TCP/IP が有効になっており、インスタンスが静的 TCP ポート(デフォルトは1433)をリッスンしている。 - オペレーティング システムのファイアウォール(Windows Defender ファイアウォール、Linux
iptables、firewalldなど)が、データベース ポート(デフォルトは1433)とデータベース ミラーリング ポート(デフォルトは5022)の両方でインバウンド TCP 接続を許可し、ポート5022でDESTINATION_HOST_IP_ADDRESSへのアウトバウンド TCP 接続を許可している。
- SQL Server 構成マネージャー(Linux の場合は
Cloud SQL 接続テストでネットワーク到達性を確認する
リンクサーバーを構成する前に、 Google Cloud コンソールの Cloud SQL for SQL Server インスタンスの [接続] > [接続テスト] タブから 3 つの接続テストを実行することをおすすめします。接続テストの実行方法については、接続テストを管理するをご覧ください。
- ポート
1433でアウトバウンド リンクサーバー接続をテストするには、[送信元] を [現在の Cloud SQL インスタンス]、[宛先] をSOURCE_HOST_IP_ADDRESS、[宛先ポート] を1433(またはカスタム データベース ポート)に設定します。 - ポート
5022でアウトバウンド データベース ミラーリング接続をテストするには、[送信元] を [現在の Cloud SQL インスタンス]、[宛先] をSOURCE_HOST_IP_ADDRESS、[宛先ポート] を5022(またはカスタムDBMポート)に設定します。 - ポート
5022でインバウンド データベース ミラーリング接続をテストするには、[送信元] をSOURCE_HOST_IP_ADDRESS、[宛先] を [現在の Cloud SQL インスタンス](Private Service Connect を使用する場合はDESTINATION_HOST_IP_ADDRESS)、[宛先ポート] を5022(またはカスタムDBMポート)に設定します。
移行先の Cloud SQL for SQL Server インスタンスでリンクサーバーを作成して確認する
ネットワーク接続が確立されたら、移行先の Cloud SQL for SQL Server インスタンスに接続し、移行元の SQL Server インスタンスを指すリンクサーバーを作成します。
- SQL クライアントを使用して Cloud SQL インスタンスに接続します。次の方法を使用できます。
sqlcmdクライアント。この方法を使用してインスタンスのプライベート IP に接続できますが、Compute Engine 仮想マシンの作成が必要になる場合があります。gcloud sql connectコマンド。このコマンドは、パブリック IP アドレスが有効になっている Cloud SQL インスタンスでのみ機能します。
sqlserverユーザーとしてログインし、移行先の Cloud SQL for SQL Server バージョンに対して次の T-SQL コマンドを実行して、移行元の SQL Server インスタンスを指すリンクサーバーを作成し、@locallogin = N'sqlserver'を移行元の移行ログインにマッピングし、rpc outを有効にして、OPENQUERYで接続をテストします(Cloud SQL のリンクサーバー オプションの詳細については、リンクサーバーを管理するをご覧ください)。Cloud SQL for SQL Server 2017、2019、2022
USE [master]; GO EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct = N'', @provider = N'SQLNCLI', @datasrc = N'SOURCE_HOST_IP_ADDRESS,SOURCE_PORT_NUMBER'; GO EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'LINKED_SERVER_NAME', @useself = N'False', @locallogin = N'sqlserver', @rmtuser = N'SOURCE_USERNAME', @rmtpassword = N'SOURCE_PASSWORD'; GO EXEC master.dbo.sp_serveroption @server = N'LINKED_SERVER_NAME', @optname = N'rpc out', @optvalue = N'TRUE'; GO SELECT * FROM OPENQUERY([LINKED_SERVER_NAME], 'SELECT @@VERSION AS SourceServerVersion'); GO
Cloud SQL for SQL Server 2025
USE [master]; GO EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct = N'', @provider = N'MSOLEDBSQL19', @datasrc = N'SOURCE_HOST_IP_ADDRESS,SOURCE_PORT_NUMBER', @provstr = N'Encrypt=Optional;TrustServerCertificate=Yes;Authentication=SqlPassword;UID=Placeholder;'; GO EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'LINKED_SERVER_NAME', @useself = N'False', @locallogin = N'sqlserver', @rmtuser = N'SOURCE_USERNAME', @rmtpassword = N'SOURCE_PASSWORD'; GO EXEC master.dbo.sp_serveroption @server = N'LINKED_SERVER_NAME', @optname = N'rpc out', @optvalue = N'TRUE'; GO SELECT * FROM OPENQUERY([LINKED_SERVER_NAME], 'SELECT @@VERSION AS SourceServerVersion'); GO
次のように置き換えます。
LINKED_SERVER_NAMEは、Cloud SQL for SQL Server のリンクサーバーの名前(source_sql_linked_serverなど)に置き換えます。SOURCE_HOST_IP_ADDRESSは、ソース SQL Server インスタンスのプライベート IP アドレス(マルチレプリカ ソース可用性グループ用に構成されている場合は、可用性グループ リスナーの IP アドレス)に置き換えます。SOURCE_PORT_NUMBERは、ソース SQL Server データベース エンジンが接続を受け入れるポート番号に置き換えます(デフォルトは1433)。SOURCE_USERNAMEは、専用の Database Migration Service ログインと権限を作成するで移行元インスタンスに作成した専用の SQL ログイン名に置き換えます。SOURCE_PASSWORDは、SOURCE_USERNAMEログインのパスワードに置き換えます。
接続プロファイルを作成して移行ジョブを実行する
Google Cloud CLI を使用して、移行元と移行先の接続プロファイルを作成し、継続的な DAG 移行ジョブを作成して、移行構成を検証し、移行ジョブを開始します。
-
ソース接続プロファイルを作成します。
gcloud database-migration connection-profiles create sqlserverコマンドを実行します(クリックして展開)。gcloud database-migration connection-profiles create sqlserverこのサンプルでは、オプションの
--no-asyncフラグを使用して、すべてのオペレーションが同期的に実行されるようにしています。そのため、一部のコマンドは完了するまでに時間がかかることがあります。--no-asyncフラグをスキップして、コマンドを非同期で実行できます。その場合は、gcloud database-migration operations describeコマンドを使用して、オペレーションが成功したかどうかを確認する必要があります。gcloud database-migration connection-profiles create sqlserver SOURCE_CONNECTION_PROFILE_ID \ --no-async \ --display-name=SOURCE_CONNECTION_PROFILE_NAME \ --region=REGION \ --role=SOURCE \ --host=SOURCE_HOST_IP_ADDRESS \ --port=SOURCE_PORT_NUMBER \ --dbm-port=SOURCE_DBM_PORT_NUMBER \ --username=SOURCE_USERNAME \ --password=SOURCE_PASSWORD
次のように置き換えます。
SOURCE_CONNECTION_PROFILE_IDは、移行元接続プロファイルの機械で読み取り可能な ID(sqlserver-dag-source-profileなど)に置き換えます。SOURCE_CONNECTION_PROFILE_NAMEは、ソース接続プロファイルの人が読める名前に置き換えます。この値は、 Google Cloud コンソールの Database Migration Service に表示されます。REGIONは、接続プロファイルを保存するリージョンの ID(us-central1など)に置き換えます。SOURCE_HOST_IP_ADDRESSは、ソース SQL Server インスタンスのプライベート IP アドレス(マルチレプリカ ソース可用性グループ用に構成されている場合は、可用性グループ リスナーの IP アドレス)に置き換えます。SOURCE_PORT_NUMBERは、ソース SQL Server データベース エンジンが接続を受け入れるポート番号に置き換えます(デフォルトは1433)。SOURCE_DBM_PORT_NUMBERは、ソース データベース ミラーリング エンドポイントの TCP ポート番号(デフォルトは5022)に置き換えます。SOURCE_USERNAMEは、専用の Database Migration Service ログインと権限を作成するで移行元インスタンスに作成した専用の SQL ログイン名に置き換えます。SOURCE_PASSWORDは、SOURCE_USERNAMEログインのパスワードに置き換えます。
-
宛先接続プロファイルを作成します。
gcloud database-migration connection-profiles create sqlserverコマンドを実行します(クリックして展開)。gcloud database-migration connection-profiles create sqlserverこのサンプルでは、オプションの
--no-asyncフラグを使用して、すべてのオペレーションが同期的に実行されるようにしています。そのため、一部のコマンドは完了するまでに時間がかかることがあります。--no-asyncフラグをスキップして、コマンドを非同期で実行できます。その場合は、gcloud database-migration operations describeコマンドを使用して、オペレーションが成功したかどうかを確認する必要があります。gcloud database-migration connection-profiles create sqlserver DESTINATION_CONNECTION_PROFILE_ID \ --no-async \ --display-name=DESTINATION_CONNECTION_PROFILE_NAME \ --region=REGION \ --role=DESTINATION \ --cloudsql-instance=CLOUDSQL_INSTANCE_ID \ --host=DESTINATION_HOST_IP_ADDRESS \ --port=DESTINATION_PORT_NUMBER \ --dbm-port=DESTINATION_DBM_PORT_NUMBER \ --username=sqlserver \ --password=CLOUD_SQL_DB_USER_PASSWORD
次のように置き換えます。
DESTINATION_CONNECTION_PROFILE_ID: 宛先接続プロファイルの機械可読識別子(sqlserver-dag-dest-profileなど)。DESTINATION_CONNECTION_PROFILE_NAMEは、移行先接続プロファイルの人が読める名前に置き換えます。この値は、 Google Cloud コンソールの Database Migration Service に表示されます。REGIONは、接続プロファイルを保存するリージョンの識別子に置き換えます。CLOUDSQL_INSTANCE_IDは、移行先の Cloud SQL for SQL Server インスタンスの名前に置き換えます。DESTINATION_HOST_IP_ADDRESSは、移行元の SQL Server インスタンスから到達可能な移行先の Cloud SQL for SQL Server インスタンスのプライベート IP アドレス(または Private Service Connect エンドポイントの IP アドレス)に置き換えます。DESTINATION_PORT_NUMBERは、移行先の Cloud SQL for SQL Server インスタンスのデータベース ポート番号(1433)に置き換えます。DESTINATION_DBM_PORT_NUMBERは、移行先の Cloud SQL for SQL Server インスタンスのデータベース ミラーリング ポート番号(5022)に置き換えます。CLOUD_SQL_DB_USER_PASSWORDは、移行先の Cloud SQL for SQL Server インスタンスのsqlserverユーザーのパスワードに置き換えます(--usernameはsqlserverに設定する必要があります)。
-
継続的な DAG 移行ジョブを作成します。
gcloud database-migration migration-jobs createコマンドを実行します(クリックして展開)。gcloud database-migration migration-jobs createこのサンプルでは、オプションの
--no-asyncフラグを使用して、すべてのオペレーションが同期的に実行されるようにしています。そのため、一部のコマンドは完了するまでに時間がかかることがあります。--no-asyncフラグをスキップして、コマンドを非同期で実行できます。その場合は、gcloud database-migration operations describeコマンドを使用して、オペレーションが成功したかどうかを確認する必要があります。gcloud database-migration migration-jobs create MIGRATION_JOB_ID \ --no-async \ --display-name=MIGRATION_JOB_NAME \ --region=REGION \ --type=CONTINUOUS \ --source=SOURCE_CONNECTION_PROFILE_ID \ --destination=DESTINATION_CONNECTION_PROFILE_ID \ --sqlserver-dag-source-ag=SOURCE_AVAILABILITY_GROUP_NAME \ --sqlserver-dag-linked-server=LINKED_SERVER_NAME
次のように置き換えます。
MIGRATION_JOB_IDは、移行ジョブの機械で読み取り可能な識別子(例:sqlserver-dag-job)に置き換えます。MIGRATION_JOB_NAMEは、移行ジョブの人が読める形式の名前に置き換えます。この値は Google Cloud コンソールに表示されます。REGIONは、移行ジョブを作成するリージョンの ID に置き換えます。SOURCE_CONNECTION_PROFILE_IDは、移行元接続プロファイルの ID に置き換えます。DESTINATION_CONNECTION_PROFILE_IDは、宛先接続プロファイルの ID に置き換えます。SOURCE_AVAILABILITY_GROUP_NAMEは、移行元の SQL Server インスタンスの可用性グループの名前に置き換えます。LINKED_SERVER_NAMEは、移行先の Cloud SQL for SQL Server インスタンスでリンクサーバーを作成して確認するで移行先の Cloud SQL for SQL Server インスタンスに構成したリンクサーバーの名前に置き換えます。
-
移行ジョブの構成を確認します。
DAG 移行ジョブを開始する前に、verifyを実行して、双方向ネットワーク接続、リンクサーバー RPC アクセス、gcp_dms_db権限(最小権限を使用している場合)、移行元データベースの所有者(saが所有するデータベースがないことを確認)、デフォルトのデータファイル パスを検証する必要があります。gcloud database-migration migration-jobs verifyコマンドを実行します(クリックして展開)。gcloud database-migration migration-jobs verifygcloud database-migration migration-jobs verify MIGRATION_JOB_ID \ --region=REGION
次のように置き換えます。
MIGRATION_JOB_IDは、移行ジョブの ID に置き換えます。REGIONは、移行ジョブが保存されているリージョンの ID に置き換えます。
検証オペレーションのステータスを確認するには、
gcloud database-migration operations describeコマンドを実行します。 -
移行ジョブを開始します。
検証が成功したら、gcloud database-migration migration-jobs startコマンドを実行します(クリックして展開)。gcloud database-migration migration-jobs startgcloud database-migration migration-jobs start MIGRATION_JOB_ID \ --region=REGION
次のように置き換えます。
MIGRATION_JOB_IDは、移行ジョブの ID に置き換えます。REGIONは、移行ジョブが保存されているリージョンの ID に置き換えます。
移行をモニタリングして検証する
DAG 移行ジョブの実行中に、 Google Cloud コンソールで進行状況をモニタリングし、CDC 中に読み取り専用モードで移行先データベースをクエリして、アクティブなレプリケーションを管理できます。
Google Cloud コンソールで進行状況をモニタリングする
実行中の DAG 移行ジョブは、他の Database Migration Service 移行ジョブと同様に、 Google Cloud コンソールの [移行ジョブの詳細] ページでモニタリングできます。
- 移行ジョブの詳細ページの [データベース] テーブルで、リアルタイム フェーズ(初期フルロード中の
Full dump、継続的なレプリケーション中のCDC、データベース レベルのエラー メッセージ)と、可用性グループ内の各データベースの復元ラグを確認します。 - [モニタリング] タブで、[復元ラグ](
datamigration.googleapis.com/migration_job/max_replica_sec_lag。分散可用性グループのレプリケーション ラグをデータベースごとに秒単位で報告します)グラフを表示します。
モニタリング指標とジョブの状態の詳細については、移行ジョブの指標と移行ジョブのステータス コードをご覧ください。
CDC 中に読み取り専用モードで移行されたデータベースを確認する
バックアップ ベースの移行(移行先のデータベースはプロモートされるまで RESTORING 状態のまま)とは異なり、分散型可用性グループの移行では、移行先の Cloud SQL for SQL Server データベースが CDC フェーズに入るとすぐに、読み取り専用モードでクエリを実行できます。
ソース インスタンスの SQL ログインが所有するデータベースごとに、Database Migration Service は、移行先の Cloud SQL for SQL Server インスタンスに、gcp_dms_、6 文字の識別子、ソース所有者名(例: gcp_dms_a1b2c3_myowner)を接頭辞として付加したログインを自動的に作成します。プロモーション前にそのログインでデータベースをクエリするには、移行先の Cloud SQL for SQL Server インスタンスに sqlserver として接続し、sys.server_principals で生成されたログイン名を見つけて、パスワードをリセットします。
SELECT name FROM sys.server_principals WHERE name LIKE 'gcp_dms_%'; GO ALTER LOGIN [GENERATED_DMS_OWNER_LOGIN] WITH PASSWORD = 'NEW_OWNER_PASSWORD'; GO
次のように置き換えます。
GENERATED_DMS_OWNER_LOGINは、クエリによって返された生成されたデータベース オーナーのログイン名に置き換えます。NEW_OWNER_PASSWORDは、ログイン用の新しいパスワードに置き換えます。
移行されたオブジェクトとデータの検証の詳細については、移行を検証するをご覧ください。
アクティブな DAG 移行ジョブを管理する(省略可)
移行ジョブが CDC フェーズで実行されている間、次の管理オペレーションを実行できます。
ALTER AVAILABILITY GROUP ... ADD DATABASEまたはALTER AVAILABILITY GROUP ... REMOVE DATABASEを実行して、移行元 SQL Server インスタンスの移行元可用性グループにデータベースを追加または削除します。Database Migration Service は、次のポーリング サイクルで変更を自動的に検出し、移行先の Cloud SQL for SQL Server インスタンスを更新します。gcloud database-migration migration-jobs stopを実行して、データ レプリケーションを一時的に停止します。DAG 移行ジョブの停止は、定義された短い期間にのみ使用してください。レプリケーションが停止している間もトランザクション ログに更新が蓄積され、トランザクション ログディスクがいっぱいになる可能性があるためです。停止状態から、gcloud database-migration migration-jobs resumeを実行してデータ レプリケーションを再開するか、gcloud database-migration migration-jobs deleteを実行して移行を完了し、必要なクリーンアップを実行できます。gcloud database-migration migration-jobs restartを実行して、失敗した移行ジョブを再開します。DAG 移行ジョブを再開すると、移行先の Cloud SQL for SQL Server インスタンスで移行されたデータベースが削除され、分散可用性グループが再作成され、ネットワーク経由で最初のフルロードが再実行されます。
移行をプロモート、フェイルバック、または完了する
アプリケーションを Cloud SQL for SQL Server に切り替える準備ができたら、移行ジョブをプロモートします。DAG 移行でジョブをプロモートすると、Cloud SQL for SQL Server が読み取り / 書き込みプライマリに切り替わり、移行ジョブが FAILBACK フェーズ(Google Cloud CLI と API レスポンスでは PHASE_FAILBACK)に移行します。このフェーズでは、ソース SQL Server インスタンスへのリバース レプリケーションがアクティブになります。
- ソース SQL Server データベースへのアプリケーションの書き込みを停止し、 Google Cloud コンソールの [復元ラグ] 指標をチェックして、レプリケーション ラグがゼロに達したことを確認します。
-
移行ジョブをプロモートして Cloud SQL にカットオーバーします。
gcloud database-migration migration-jobs promoteコマンドを実行します(クリックして展開)。gcloud database-migration migration-jobs promotegcloud database-migration migration-jobs promote MIGRATION_JOB_ID \ --region=REGION
次のように置き換えます。
MIGRATION_JOB_IDは、移行ジョブの ID に置き換えます。REGIONは、移行ジョブが保存されているリージョンの ID に置き換えます。
プロモート中に、Database Migration Service は次のアクションを実行します。
- 分散可用性グループを同期 commit に設定し、すべてのソース データベースで
CHECKPOINTを発行します。すべてのトランザクションがデータ損失なしで同期されるのを待機し、可用性グループのロールを反転して、移行先の Cloud SQL for SQL Server インスタンスが読み取り / 書き込みのプライマリになり、元のソース SQL Server インスタンスがセカンダリになります。 - 移行ジョブを
Running状態に維持し、サブ状態をFAILBACKフェーズ(Google Cloud CLI と API レスポンスではPHASE_FAILBACK)に移行します。これにより、移行先の Cloud SQL for SQL Server から移行元の SQL Server インスタンスに新しい書き込みが継続的に複製されます。
プロモートが完了したら、アプリケーションを新しい Cloud SQL for SQL Server インスタンスに接続します。
-
(省略可)ソース SQL Server インスタンスにフェイルバックする。
移行ジョブがFAILBACKフェーズにあるときに、アプリケーションを Cloud SQL for SQL Server に切り替えた後に問題が発生した場合は、Cloud SQL for SQL Server でのアプリケーションの書き込みを停止し、--failbackフラグを指定してgcloud database-migration migration-jobs promoteコマンドを実行することで、データ損失なしでカットオーバーを元に戻すことができます(クリックして展開)。gcloud database-migration migration-jobs promote --failbackgcloud database-migration migration-jobs promote MIGRATION_JOB_ID \ --region=REGION \ --failback
次のように置き換えます。
MIGRATION_JOB_IDは、移行ジョブの ID に置き換えます。REGIONは、移行ジョブが保存されているリージョンの ID に置き換えます。
FAILBACKフェーズ中に--failbackフラグを指定してpromoteを実行すると、Cloud SQL for SQL Server に書き込まれたすべての変更が同期され、レプリケーションの方向が再度切り替わります。これにより、元のソース SQL Server 可用性グループが読み取り / 書き込みプライマリになり、Cloud SQL for SQL Server がセカンダリになり、移行ジョブがCDCフェーズに戻ります。--failbackは、移行ジョブがFAILBACKフェーズにある場合にのみ有効です。FAILBACKフェーズ中に--failbackを指定せずにpromoteを実行する(またはCDCフェーズ中に--failbackを渡す)と、検証がFAILED_PRECONDITIONエラーで失敗し、移行ジョブは実行されたままになります。 -
(省略可)移行ジョブを削除する前にデータ レプリケーションを停止します。
移行ジョブを完全に削除する前にデータ レプリケーションを停止する場合は、gcloud database-migration migration-jobs stopコマンドを実行します(クリックして展開)。gcloud database-migration migration-jobs stopgcloud database-migration migration-jobs stop MIGRATION_JOB_ID \ --region=REGION
次のように置き換えます。
MIGRATION_JOB_IDは、移行ジョブの ID に置き換えます。REGIONは、移行ジョブが保存されているリージョンの ID に置き換えます。
-
移行を完了して移行ジョブを削除します。
アプリケーションが新しい Cloud SQL for SQL Server 移行先インスタンスで完全に動作していることを確認し、移行元 SQL Server インスタンスへのリバース レプリケーションが不要になったら、移行ジョブを(Running状態またはStopped状態から)削除して移行を完了し、必要なクリーンアップを実行します。gcloud database-migration migration-jobs deleteコマンドを実行します(クリックして展開)。gcloud database-migration migration-jobs deleteこのコマンドは、完了するために入力が必要なインタラクティブな確認プロンプトを返します。 オプションの
--quietフラグを使用すると、確認プロンプトをスキップできます。gcloud database-migration migration-jobs delete MIGRATION_JOB_ID \ --region=REGION
次のように置き換えます。
MIGRATION_JOB_IDは、移行ジョブの ID に置き換えます。REGIONは、移行ジョブが保存されているリージョンの ID に置き換えます。
移行ジョブを削除すると、移行が完了し、アクティブなリバース レプリケーションが停止します。また、両方のインスタンスで分散可用性グループとデータベース ミラーリングの証明書が削除され、DAG レプリケーション中に制限されている Cloud SQL for SQL Server の機能(ポイントインタイム リカバリ(PITR)やリードレプリカなど)を有効にできます。
移行ジョブを削除した後、必要に応じて、移行先の Cloud SQL for SQL Server インスタンスで
cloud sql enable dag supportデータベース フラグを無効にするか削除し、Cloud SQL for SQL Server インスタンス(EXEC master.dbo.sp_dropserver @server = N'LINKED_SERVER_NAME', @droplogins = 'droplogins';)でリンクサーバーを削除し、移行元の SQL Server インスタンスでgcp_dms_dbヘルパー データベースと移行ログインを削除します。