このトピックでは、SQL Server Management Studio (SSMS) を使用して、自己管理型SQL Serverインスタンスまたは別のクラウドにあるSQL ServerインスタンスからApsaraDB RDS for SQL Serverインスタンスにデータを移行する方法について説明します。 このトピックでは、例としてAzure SQL Databaseを使用します。
前提条件
ソースインスタンスのストレージ容量よりも大きいストレージ容量を持つApsaraDB RDS for SQL Serverインスタンスが作成されます。 ApsaraDB RDS for SQL Serverインスタンスは、次の要件を満たしています。
説明ApsaraDB RDS for SQL Serverインスタンスのストレージ容量は、ソースインスタンスのストレージ容量の1.2倍にすることを推奨します。
ApsaraDB RDS For SQL Serverインスタンスの作成方法の詳細については、「ApsaraDB RDS for SQL Serverインスタンスの作成」をご参照ください。 ApsaraDB RDS for SQL Serverインスタンスを使用しているが、インスタンスのストレージ容量がクラウド移行に十分でない場合は、「インスタンス仕様の変更」の手順に従ってストレージ容量を拡張できます。
RDSインスタンスは、RDS Basic Edition、RDS High-availability Edition、またはRDS Cluster Editionを実行します。 RDSインスタンスがRDS High-availability Editionを実行している場合は、インスタンスがSQL Server 2012以降を実行していることを確認してください。
RDSインスタンスは、汎用または専用インスタンスファミリーに属しています。 共有インスタンスファミリーはサポートされていません。
RDSは、サブスクリプションまたは従量課金方法を使用します。 サーバーレスインスタンスはサポートされていません。
RDSインスタンスは仮想プライベートクラウド (VPC) にあります。 RDSインスタンスのネットワークタイプを変更する方法の詳細については、「ネットワークタイプの変更」をご参照ください。
RDSインスタンスの作成時間は、次の要件を満たしています。
RDSインスタンスがRDS High-availability EditionまたはRDS Cluster Editionを実行している場合、インスタンスは2021年1月1日以降に作成されます。
RDSインスタンスがRDS Basic Editionを実行する場合、インスタンスは2022年9月2日以降に作成されます。
説明ApsaraDB RDSコンソールの 基本情報 ページの 実行ステータス セクションで、RDSインスタンスの [作成時刻] パラメーターを表示できます。
SSMSがコンピュータにインストールされています。
説明仮想プライベートクラウド (VPC) に存在し、Windows Serverイメージを実行し、パブリックIPアドレスが割り当てられたElastic Compute Service (ECS) インスタンスを作成できます。 次に、ECSインスタンスにSSMSをインストールできます。 詳細は、「クイックスタート」をご参照ください。
使用上の注意
データの不整合を防ぐには、ソースインスタンスへのデータ書き込みを停止する必要があります。 ソースインスタンスにデータを書き込むことができない期間は、移行するデータの量と実際の操作によって異なります。
データのエクスポート速度は、ソースインスタンスの仕様によって異なります。
準備
インターネット経由でAzure SQL Databaseへのアクセスを有効にします。 ECSインスタンスのパブリックIPアドレスまたはオンプレミスデバイスのIPアドレスがAzureのサービスとリソースにアクセスできるようにファイアウォールを設定します。
説明詳細については、Azureの公式ドキュメントを参照するか、Azureのテクニカルサポートにお問い合わせください。
ソースインスタンスの制約とビューがエクスポートに失敗しないようにしてください。
ApsaraDB RDS for SQL Serverインスタンスにシステム管理者アカウントを作成します。
説明Alibaba Cloudアカウントを使用してRDSインスタンスにアクセスし、システム管理者アカウントを作成します。 システム管理者アカウントの作成方法の詳細については、「システム管理者アカウントの作成」をご参照ください。
ソースデータベースとターゲットデータベースの両方で
SELECT name, compatibility_level FROM sys.databases;
ステートメントを実行して、ターゲットデータベースがソースデータベースと互換性があるかどうかを確認します。 詳細については、次をご参照ください: ALTER DATABASE (Transact-SQL) 互換性レベル。ApsaraDB RDS for SQL Serverインスタンスのホワイトリストを設定して、クライアントがデプロイされているECSインスタンスまたはオンプレミスデバイスがApsaraDB RDS for SQL Serverインスタンスに接続できるようにします。 詳細は、ホワイトリストの構成をご参照ください。
説明内部ネットワークを介してECSインスタンスをRDSインスタンスに接続する場合は、これらのインスタンスが同じ仮想プライベートクラウド (VPC) に存在し、ECSインスタンスのプライベートIPアドレスがRDSインスタンスのIPアドレスホワイトリストに追加されていることを確認します。
オンプレミスデバイスをRDSインスタンスに接続する場合は、オンプレミスデバイスのパブリックIPアドレスがRDSインスタンスのIPアドレスホワイトリストに追加されていることを確認してください。
手順
実際の手順は、SSMSのインストール場所、バージョン、設定など、複数の要因によって異なります。 この例では、SSMS19. 1
を使用して、データをクラウドに移行する方法を説明します。
Azure SQL databaseのソースデータベースへのデータの書き込みを停止します。
データベース内のデータをエクスポートします。
SSMSを使用してデータベースに接続します。
説明詳細については、次をご参照ください: データベースに接続します。
データをエクスポートするページに移動します。
[オブジェクトエクスプローラー] で、[データベース] を展開します。
必要なデータベースを右クリックします。
を選択します。
説明データのエクスポートの詳細については、 データ層アプリケーションのエクスポート。
[次へ] をクリックします。
エクスポートするオブジェクトを選択します。
[エクスポート設定] ページの [設定] タブで、[ローカルディスクに保存] を選択します。
[参照] をクリックし、ファイル保存パスとファイル名を選択します。
[詳細設定] タブで、エクスポートするテーブルを選択します。
説明トリガーやストアドプロシージャなど、他のオブジェクトを選択する必要がある場合は、[オブジェクトエクスプローラー] で必要なデータベースを右クリックし、
を選択します。[次へ] をクリックします。
[終了] をクリックします。
データのエクスポート後、[閉じる] をクリックします。
エクスポートしたデータをApsaraDB RDS for SQL Serverインスタンスにインポートします。
SSMSを使用してApsaraDB RDS for SQL Serverインスタンスに接続します。
SSMSを開きます。
[サーバーに接続] ダイアログボックスで、次のパラメーターを設定します。
パラメーター
説明
サーバータイプ
データベースエンジン を選択します。
サーバー名
ApsaraDB RDS for SQL Serverインスタンスの内部エンドポイントまたはパブリックエンドポイントを入力します。 エンドポイントの取得方法の詳細については、「エンドポイントとポート番号の表示と変更」をご参照ください。
認証
[SQL Server 認証] をクリックします。
ログイン
システム管理者アカウントのユーザー名を入力します。
Password
システム管理者アカウントのパスワードを入力します。
[接続] をクリックします。
[オブジェクトエクスプローラー] で、[データベース] を右クリックします。
[データ層アプリケーションのインポート] を選択します。
[次へ] をクリックします。
[インポート設定] を設定します。
[ローカルディスクからインポート] を選択します。
クリック参照を選択し、. bacpacファイルをAzure SQL Databaseからエクスポートします。
[次へ] をクリックします。
データベース設定を設定します。
[新しいデータベース名] フィールドに、ApsaraDB RDS for SQL Serverインスタンスのデータベース名を入力します。 データベースはソースデータベースに対応します。
重要Azure SQL databaseのデータベースの名前と同じ名前を使用することをお勧めします。 同じ名前を使用しない場合、ワークロードをApsaraDB RDS for SQL Serverインスタンスに切り替えた後、一部の機能が期待どおりに機能しない場合があります。
入力したデータベース名がApsaraDB RDS for SQL Serverインスタンスに存在する場合、データのインポートが失敗するか、データに矛盾が生じる可能性があります。
[SQL Server設定] セクションで、[データファイルパス] および [ログファイルパス] の値をE:\SQLDATA \Dataに変更します。
[次へ] をクリックします。
[終了] をクリックします。
データのインポート後、[閉じる] をクリックします。
データの整合性を確認します。
データがインポートされたら、ソースデータベースとターゲットデータベースで必要なステートメントを実行して、データの一貫性を確認します。 ソースデータベースとターゲットデータベースの結果が同じ場合、データは一貫しています。
データベース内のデータ行数を照会します。 すべての業務テーブルのデータ行の合計が返されます。
重要データ移行中にソーステーブルデータとスナップショットデータが変更されないようにしてください。 それ以外の場合、ソースデータベースのデータ行数とターゲットデータベースのデータ行数が一致しません。
<dbname>; を使用します。SELECT SUM(b.rows) AS 'RowCount' 内部参加としてsysobjectsから sysindexes AS b ON a.id = b.id WHERE (a.type = 'u') AND (b.indid IN (0,1))
データサイズを照会します。 総ストレージ容量に対するデータファイルによって占有されたストレージの割合が返されます。
<dbname>; を使用します。SELEC T a.name [ファイル名] 、キャスト (a.[サイズ] * 1.0/128を10進数 (12,1)) as [指定ファイルサイズ (MB)] , CAST( filepropert y(s.name,'SpaceUsed')/(8*16.0) AS DECIMAL(12,1)) AS [ファイルが占有するストレージ (MB)] , CAST( (filepropert y(s.name,'SpaceUsed')/(8*16.0))/(s.size/(8*16.0))* 100.0 AS DECIMAL(12,1)) AS [総ストレージ容量に対するファイルの占有ストレージの割合] 、CASE WHEN A.growth =0 THEN「固定ファイルサイズ」ELSE「ファイルに割り当てられているストレージが増加する増分」終了 [増加モード] 、ケースWHEN A.growth > 0 AND is_percent_growth = 0 THEN「固定増加」 WHEN A.growth > 0 AND is_percent_growth = 1 THEN '整数パーセントで表される増分' ELSE「固定ファイルサイズ」END AS [増加モード] 、ケースWHEN A.growth > 0 AND is_percent_growth = 0 THEN cast(cast(a.growth * 1.0/128as decimal(12,0)) AS VARCHAR)+ 'MB' WHEN A.growth > 0 AND is_percent_growth = 1 THEN cast(cast(a.growth AS decimal(12,0)) AS VARCHAR)+ '%' ELSE 'Fixed file size 'end AS [Increment (% またはMB)] , a.physical_name AS [ファイルディレクトリ] 、a.type_desc AS [ファイルタイプ] sys.database_filesから INNER JOIN sys.sysfiles AS s ON a.[file_id]=s.fileid LEFT JOIN sys.dm_db_file_space_usage b ON a.[file_id]=b.[file_id] ORDER BY a.[タイプ]
データの整合性検証が完了したら、ワークロードをApsaraDB RDS for SQL Serverインスタンスに切り替えて、機能が期待どおりに実行されるかどうかをテストできます。