sql server 2008/2008 r2...

101
SQL Server 2008/2008 R2 からの データベース移行ガイド 本ガイドでは、間もなく延長サポートが終了する SQL Server 2008/2008 R2 で運用しているデータベースを Microsoft Azure に移行する 方法を説明します。 発行日:2019 3 7

Upload: others

Post on 03-Sep-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

SQL Server 2008/2008 R2 からの データベース移行ガイド

本ガイドでは、間もなく延長サポートが終了する SQL Server 2008/2008 R2 で運用しているデータベースを Microsoft Azure に移行する

方法を説明します。

発行日:2019 年 3 月 7 日

はじめに

- 2 -

更新履歴

版数 発行日 更新履歴 第 1 版 2018 年 7 月 6 日 初版発行

第 2 版 2019 年 3 月 7 日 SQL Database Managed Instance、Azure Database Migration Service の機能拡張に伴う更新

本書の取り扱い注意事項

Microsoft は、オンプレミスで稼働する各種データベース製品から Azure への移行についての包括的なガイドラインを「Azure データベース移行ガイド」 で提供しています。本書は、データベース移行ガイドをベースに、SQL Server に作成したデータベースを、Azure クラウド環境 (IaaS、PaaS) に移行する際の具体的な移行手順、および、考慮事項などを補足して説明しています。

なお、本書の内容は、2019 年 3 月時点の Azure クラウド サービスをベースに作成しています。読者が本書を読まれる時点では、Azure ポータルの UI や提供される機能などが変更されている可能性があることをあらかじめご了承ください。

また、Azure サービスの更新情報に関しては、「Azure の更新情報」 を参照してください。

はじめに

- 3 -

目次

更新履歴 .................................................................................................................................................................................................... 2

本書の取り扱い注意事項 .................................................................................................................................................................. 2

目次 ............................................................................................................................................................................................................. 3

1. はじめに .............................................................................................................................................................................................. 6

前提知識 ................................................................................................................................................................................ 7

2. データベースの移行計画 .................................................................................................................................................................. 8

SQL Server の確認事項 .................................................................................................................................................... 8

Azure サービス ..................................................................................................................................................................... 10

Azure 仮想マシン デプロイ時の考慮事項 .................................................................................................................... 11

Azure PaaS サービスが提供するデータベース エンジン機能 ........................................................................................ 14

Azure ハイブリッド特典と予約購入 ................................................................................................................................ 15

PaaS データベース サービスへ移行する場合の Web アプリの修正点 ..................................................................... 16

SQL Server の主要なツールの変遷と入手先 ............................................................................................................... 17

データベース移行のためのツールとサービス ......................................................................................................................... 18

2.8.1 Microsoft Assessment and Planning (MAP) Toolkit を使用したインベントリ収集 ........................................ 20

2.8.2 Microsoft Data Migration Assistant を使用した移行アセスメントの実行 ......................................................... 26

移行元の SQL Server サービス インスタンス構成の確認 .......................................................................................... 30

3. オンプレミスから IaaS へのデータベース移行 ............................................................................................................................. 32

Azure 仮想マシンのデプロイと構成 ................................................................................................................................. 33

3.1.1 Azure 仮想ネットワークの作成 ......................................................................................................................................... 33

3.1.2 データベース サーバーのための Azure 仮想マシンの作成 ........................................................................................ 37

3.1.3 作成したデータベース サーバーへの接続 ....................................................................................................................... 44

3.1.4 Windows Server の日本語化........................................................................................................................................ 46

SQL Server インスタンスの構成 ....................................................................................................................................... 47

3.2.1 サーバー照合順序の変更 ............................................................................................................................................... 47

3.2.2 sa アカウントの無効化 ........................................................................................................................................................ 49

3.2.3 既定の言語の変更 ......................................................................................................................................................... 50

3.2.4 使用しない SQL Server サービスの停止................................................................................................................... 50

はじめに

- 4 -

3.2.5 データ ディスクの追加 ..................................................................................................................................................... 51

3.2.6 既定のデータベース フォルダーの変更 ........................................................................................................................... 55

3.2.7 tempdb データベース ファイルの分散配置 .................................................................................................................... 56

データベースの移行................................................................................................................................................................ 57

3.3.1 オンプレミスに対するサイト間接続がある場合 ............................................................................................................ 58

3.3.2 オンプレミスに対するサイト間接続がない場合 ........................................................................................................... 60

3.3.3 移行対象のデータベース バックアップを Blob コンテナーにアップロード ................................................................. 60

3.3.4 共有アクセス署名 (SAS) トークンの生成 .................................................................................................................. 61

3.3.5 Azure Blob ストレージから URL 指定でのデータベース復元 ..................................................................................... 61

3.3.6 データベース移行後の作業 ............................................................................................................................................. 62

インスタンス レベル オブジェクトの移行 ........................................................................................................................... 63

3.4.1 スクリプト生成機能によるログインの移行 ................................................................................................................... 64

4. Azure SQL Database へのデータベース移行 ........................................................................................................................... 66

論理サーバーの作成 ............................................................................................................................................................. 66

セキュリティの構成 ................................................................................................................................................................ 69

4.2.1 ファイアウォール規則と仮想ネットワーク規則の構成 .................................................................................................. 69

4.2.2 監査と脅威の検出 ......................................................................................................................................................... 72

SQL Server から SQL Database へのデータベース配置 ........................................................................................... 75

4.3.1 Microsoft Data Migration Assistant による PaaS へのデータベース移行 .......................................................... 75

4.3.2 移行先の Azure SQL 論理サーバーに空のデータベースを作成する...................................................................... 76

4.3.3 Microsoft Data Migration Assistant を起動し、移行元のインスタンスに接続する .......................................... 79

4.3.4 移行先の Azure SQL 論理サーバーに接続する ...................................................................................................... 80

4.3.5 データベースを移行 (スクリプトによるスキーマ生成と一括コピー) する .................................................................... 80

4.3.6 ログインの有効化とパスワードを再設定する ................................................................................................................ 82

4.3.7 bacpac 形式へのエクスポート/インポートによる PaaS へのデータベース移行 .......................................................... 83

5. Azure SQL Database Managed Instance へのデータベース移行 ................................................................................... 86

Azure SQL Database Managed Instance をデプロイするためのネットワーク構成 ............................................. 86

Azure SQL Database Managed Instance の作成 ................................................................................................. 87

Azure Database Migration Service を使用したデータベースの移行 ..................................................................... 90

Azure Database Migration Service の作成 ............................................................................................................. 91

はじめに

- 5 -

Azure Database Migration Service によるデータベースの移行 .............................................................................. 93

6. Microsoft Azure に関する情報の入手元 .......................................................................................................................... 100

7. Microsoft Azure のお問合せ ................................................................................................................................................ 101

はじめに

- 6 -

1. はじめに

Microsoft 製品のサポート期間は、通常、製品発売後、10 年間 (メインストリーム 5 年+延長サポート 5 年) で、この期間が終了すると、Microsoft より、セキュリティ更新プログラムが提供されなくなり、インシデント サポートも受けることができなくなります。既にメインストリーム サポート期間が終了している Windows Server 2008/2008 R2 の延長サポートは、2020 年 1 月 14 日に終了します。また、SQL Server 2008/2008 R2 は、それよりも早く、今年の 7 月 9 日に終了します。Windows Server のサポート期間をベースに移行計画を策定していると、SQL Server のサポートを受けることができない期間が発生してしまうことに注意してください。

なお、Microsoft は、延長サポート終了後も顧客のワークロードを保護する目的で、昨年の 7 月 12 日、SQL Server 2008/2008 R2 と Windows Server 2008/2008 R2 に対する新しいサポート オプションとして 「延長セキュリティ更新プログラム (Extended Security Updates)」 を発表しました。

このオプションは、Enterprise Agreement 加入契約でソフトウェア アシュアランス、またはサブスクリプション ライセンスをご利用のお客様を対象に、最新バージョンの SQL Server または Windows Server にかかるライセンス コスト全額の 75% の料金で 1 年ごとに購入することで、更新プログラムを提供するものです。これは、アップグレード中、または Azure への移行中に引き続きセキュリティ更新プログラムを入手するうえで最適なオプションです。また、Azure 仮想マシン で SQL Server および Windows Server 2008/2008 R2 を実行しているお客様には、この延長セキュリティ更新プログラムが無償で提供されます。拡張セキュリティ更新プログラムに関する FQA については、「拡張セキュリティ更新プログラムのよくある質問 (FQA)」 も合わせてご参照ください。

これまで運用してきた SQL Server を Azure に移行したいと考えた場合、移行先としては、次のクラウド環境を選択することが利用できます。

① Azure 仮想マシン (IaaS) ② Azure SQL Database Managed Instance (PaaS) ③ Azure SQL Database シングル データベース (PaaS) ④ Azure SQL Database エラスティック データベース プール (PaaS)

はじめに

- 7 -

➀ の Azure 仮想マシンは、クラウド上で利用できる仮想マシン環境で、オンプレミス環境に構築してきたデータベース サーバーをそのまま、クラウドにリフトすることができるため、移行の負荷は、最も低いです。

➁ ~ ➃ は、PaaS のフル マネージド データベース インスタンスとデータベース サービスで、オンプレミス環境で行ってきたデータベース サーバーの運用管理タスクの多くを自動化できるため、より高い TCO 削減効果を得ることができます。

どのクラウド環境に移行するべきかの判断は、利用している機能、目標とするスループット、データベースのサイズ、作業工数、予算などから検討する必要がありますが、機能面として大きなところと、データベース サイズを目安に、以下のディシジョン ツリーを作成してみましたので、参考にしてください。

また、各 PaaS サービスの機能的な違いは、「2.4 Azure PaaS サービスが提供するデータベース エンジン機能」 を参照してください。

本ガイドでは、SQL Server 2008/2008 R2 に作成したデータベースを Azure が提供する IaaS および PaaS 環境に移行するシナリオで、作業手順を中心に説明します。

前提知識

このガイドの読者として以下の経験をお持ちの方を想定しています。

SQL Server の実装および、運用管理 Azure 仮想マシンと仮想ネットワークのデプロイ Azure SQL Database のデプロイ

まだ、Azure サービスを作成したことがない場合、Microsoft Azure 自習書シリーズ 「Azure IaaS 入門編 (Hands-on-01-IaaS_foundation.pdf)」 から学習してください。

データベースの移行計画

- 8 -

2. データベースの移行計画

この章では最初に、データベースをクラウドに移行するにあたり、押さえておきたい SQL Server と Azure に関する基本事項を説明します。また、オンプレミスで使用している SQL Server 環境を調査する方法についても説明します。

SQL Server の確認事項

SQL Server では、データを格納するためのデータベース エンジン サービスだけでなく、格納されているデータを活用するための複数のサービスがあります。「データベース エンジンサービス」、「Analysis Services」、「Reporting Services」 は、マルチインスタンス構成をサポートしているため、1 台のサーバー環境に 50 までのサービスインスタンスを稼働させることができますが、「Integration Services」、「マスターデータ サービス」は、1 台のサーバー環境で 1 つのサービスのみを稼働させることができます。

SQL Server 2008/2008 R2 からの移行を考えた場合、既存のサーバー環境で、どのサービスをインストールしているのか?それらは、「既定のインスタンス」 なのか、「名前付きインスタンス」 なのかといったことも確認し、事前に移行先でのサーバー名、インスタンス名を定義しておきます。また、SQL Server 2017 では、SQL Server 2008/2008 R2 では、提供されていなかったサービスとして、「Machine Learning サービス」、「Data Quality Services」 をインストールすることができますが、使用しないサービスは、起動しないようにしましょう。

SQL Server 2008/2008 R2 のインスタンスに作成されたデータベースは、「データベース互換性レベル」 として 80~100 が設定されています。データベース互換性レベルは、データベース プロパティの [オプション] ページで確認することができます。

データベースの移行計画

- 9 -

SQL Server 2017 で設定できるデータベース互換性レベルは、100~140 です。移行元のデータベースで 90 以下を設定している場合、データベースの復元時点で、自動的に 100 に変更されますので、事前にデータベース互換性レベルを 100 以上に設定して、既存のアプリケーションが動作することを検証しておきます。

データベース互換性レベルは、SQL Server 2012 の 「110」 と 「130」 で、いくつかの機能が廃止されていることに注意してください。

バージョンアップに伴い廃止された機能の詳細は、「SQL Server 2016 で廃止されたデータベース エンジンの機能」 から開くことができる各ページを参照してください。

なお、SQL Server のバージョンを上げた場合の互換性の問題や、データベース互換性レベルの変更に伴う影響の調査では、以降で説明する Microsoft Data Migration Assistant を使用して、アセスメント レポートを作成することができます。

データベースの移行計画

- 10 -

Azure サービス

Azure プラットフォームでは、IaaS (Infrastructure as a Service) と PaaS (Platform as a Service) の 2 種類のサービス モデルが提供されています。自社で調達した設備にソフトウェアを導入し、利用するようなオンプレミス環境では、ネットワークやハードウェアから、物理、および仮想 OS 環境、アプリ、データのすべてをユーザー側が管理してきました。

IaaS では、サービス プロバイダーがネットワーク、ハードウェアといったインフラストラクチャを提供するため、ユーザーは、仮想 OS 環境から上位のミドルウェア、データ、アプリケーションを管理すればよく、更に、PaaS では、サービス プロバイダーが仮想 OS 環境とミドルウェアも含め提供し、管理してくれるため、ユーザーは、TCO を削減しながら、データとアプリケーションの開発と管理に注力できます。

利用者は、Azure PaaS 環境で提供される、フルマネージドなデータベース サービスを選択することで、以下の運用管理タスクを自動化できます。

修正プログラムの適用 バージョン更新 データベースのバックアップ 高可用性のための構内での冗長化 監査 脅威の検出 チューニング

また、Azure には、アプリケーション、およびインフラの各監視領域をモニターできるツール群が提供されています。これらのサービスが組み合わされた包括的なソリューションを使用すれば、アプリケーションやそれらのサービスを支える Azure リソースからテレメトリを収集、分析し、それに基づいて対処できます。また、オンプレミスの重要なリソースを監視して、ハイブリッド監視環境を構築することもできます。

データベースの移行計画

- 11 -

Azure 仮想マシン デプロイ時の考慮事項

Azure IaaS 環境で実行される Azure 仮想マシンは、Microsoft のデータセンターで実行される仮想マシン インスタンスです。利用者は Windows または、Linux の仮想マシンを作成し、任意のワークロードを実行できます。SQL Server 2016 または、2017 が組み込まれた仮想マシンをデプロイする場合、以下の種類が提供されており、使用するバージョンを選択することができます。

SQL Server 2017 より Linux 上でインスタンスを動かすことができるようになりましたが、一部の機能は、未サポートのため、データベースの移行先として選択する場合、「Linux 上の SQL Server 2017 のリリース ノート」 の 「サポートされていない機能とサービス」 セクションで、あらかじめ確認しておく必要があります。

まず、Azure 仮想マシンへの移行は、オンプレミスで稼働していた SQL Server 環境をそのまま、クラウドにリフトできるため、PaaS 環境への移行に比べて、容易ですが、Azure IaaS の構成要素と仮想マシンのデプロイにより生成されるリソースをよく理解しておく必要があります。

次の図は、仮想マシンのデプロイ時に作成されるリソースを示しています。

データベースの移行計画

- 12 -

仮想ネットワークとサブネットは、仮想マシンのデプロイ時に作成することができますが、設定ミスによるやり直しを防ぐためにも、あらかじめ、どのようなネットワーク構成で運用するのかをデザインし、仮想マシンのデプロイ前に、仮想ネットワークを作成しておくことをお勧めします。

特に、オンプレミスとのハイブリッド構成やリージョン間のネットワーク接続を考えている場合、各ネットワークのアドレス空間が重複しないように調整し、事前に、VPN ゲートウェイや ExpressRoute でのネットワーク間接続を構成しておきましょう。

Azure 仮想マシンは、様々な種類のサイズが提供されていますが、SQL Server Enterprise エディションを稼働させる場合、Azure Premium Storage ディスクが使用できる DS V3 以上を選択することが推奨されています。

SQL Server のような IO 集中型のワークロードが発生する仮想マシンでは、ストレージ構成が、とても重要です。ディスクは、P30 以上を選択し、複数のディスクを使用して、ログ ファイルとデータ ファイル、Tempdb ファイルを分離して配置します。また、Standard Storage アカウントに対する推奨構成と異なるのは、ディスク キャッシュの設定です。

SQL Server 用のデータ ファイルを格納するディスクに対しては、「読み取り専用」 を使用することが推奨され、トランザクション ログを格納するディスクには、ディスク キャッシュを 「なし」 を使用します。

データベースの移行計画

- 13 -

その他、Azure 仮想マシンにデプロイする SQL Server の最適化については、「Azure Virtual Machines における SQL Server のパフォーマンスに関するベスト プラクティス」 を参照してください。

また、Azure 仮想マシンにデプロイした SQL Server でデータベースを冗長構成により保護するには、2 つ以上の SQL Server 仮想マシンを同一の可用性セットに配置し、仮想マシン間でデータベースを同期させる必要があります。データの同期で、データ損失がない状態を保つには、データベース ミラーリングか AlwaysOn 可用性グループを構成し、同期モードを使用したデータベース同期を行う必要があります。

Azure 仮想マシンにデプロイした SQL Server の高可用性構成のガイドラインについては、「Azure 仮想マシンにおける SQL Server の高可用性とディザスター リカバリー」 を参照してください。

データベースの移行計画

- 14 -

Azure PaaS サービスが提供するデータベース エンジン機能

Azure PaaS で提供されるフルマネージドの SQL Server 互換データベース エンジン サービスには下表の 3 種類があります。

これらのサービスは、PaaS で動作するため、IaaS の仮想マシン環境で動く SQL Server に比較して、より自動化された運用管理環境を利用していただけますが、Windows 統合認証は使用できないことに注意してください。引き続き、Windows 統合認証によるデータベースへの接続が必要な場合は、Azure 仮想マシンへの移行を検討してください。PaaS のデータベースサービスに接続する場合は、SQL Server 認証、または、Azure Active Directory パスワード認証を使用します。

Azure SQL Database のシングル データベース、および、エラスティック データベース プールは、どちらも Azure SQL Server 論理サーバーに作成されますが、シングル データベースは、データベース単位での利用契約になるのに対して、エラスティック データベース プールは、プールに対して、利用契約を結び、プールに割り当てられたリソースを複数のデータベースで共有する形になります。

エラスティック データベース プールを使用すると、各データベースのパフォーマンスに弾力性を提供しながら、データベースのグループに対するコストを予算内に最適化できます。この構成は、運用コストを最小化したい SaaS マルチ テナント アプリケーションの移行に最適です。また、ライセンス販売からサービス サブスクリプションの販売にビジネス モデルの変換したい ISV 様のご利用にも向いています。

オンプレミスのデータベースを、シングル データベース、および、エラスティック データベース プールに移行する場合、SQL Server の Backup Database ステートメントは使用することができないため、Bacpac 形式、または、一括コピー操作によるデータのエクスポート/インポート操作での移行作業になります。

3 つ目の Azure SQL Database Managed Instance は、SQL Server 互換データベース エンジンのインスタンス サービスで、Azure SQL Database に比べて SQL Server に対する、より高い互換性を提供しています。

SQL Server エージェント ジョブ、データベース メールなどのインスタンス機能を使用している場合、また、データベースで、

データベースの移行計画

- 15 -

MSDTC、MDS、QTS などの SQL Server の高度な機能を使用している場合、Azure SQL Database のシングル データベースやエラスティック データベース プールでは、サポートされていませんが、Managed Instance では利用可能です。

Managed Instance へのデータベース移行では、SQL Server で標準的な BACKUP DATABASE ステートメントにより取得したバックアップを RESTORE DATABASE ステートメントで、復元することができます。

また、シングル データベース、および、エラスティック データベース プールの配置先となる Azure SQL Server 論理サーバーは、グローバル IP を持つエンドポイントで、仮想ネットワークには、デプロイできませんが、Managed Instance は、仮想ネットワークの専用サブネットにのみデプロイすることができます。

シングル データベース、および、エラスティック データベース プールへの接続エンドポイントとして使用する論理サーバーは、デプロイしても、そこにデータベースを作成していなければ、課金は発生しませんが、Managed Instance は、インスタンスをデプロイした時点から課金が開始されます。その他、Managed Instance の詳細を理解するには、「Azure SQL Database Managed Instance」 を参照してください。また、SQL Server と Azure SQL Database、および、Managed Instance との機能的な相違点については、「機能の比較: Azure SQL Database と SQL Server」 を参照してください。

Azure ハイブリッド特典と予約購入

Azure 仮想マシンで SQL Server を稼働させる場合でも、Azure PaaS で提供されるフルマネージドの SQL Server 互換データベース エンジン サービスを使用する場合でも、有効なソフトウェア アシュアランス (SA) または、有効な Windows Server サブスクリプション付きの Windows ライセンスを所有している利用者は、Azure ハイブリッド特典を適用して、コンピューティング コストを節約できます。Azure ハイブリッド特典により適用できるインスタンス数の算出は、「Azure ハイブリッド特典」 ページの「Azure Hybrid Benefit 節約額計算ツール」 を使用してください。

また、Azure 仮想マシン、および、Azure SQL Database は、リソースを 1 年分または 3 年分前払いすることで、従量課金制の料金を最大 72% 削減することができます。予約は課金割引を提供するもので、リソースの実行時の状態には影響しません。予約は Azure ポータルから購入できます。Azure 仮想マシンの予約についての詳細は、「Azure Reserved VM Instances による仮想マシンの前払い」 を参照してください。また、Azure SQL Database の予約についての詳細は、「Azure SQL Database の予約容量を使用した SQL Database 計算リソースの前払い」 を参照してください。

データベースの移行計画

- 16 -

PaaS データベース サービスへ移行する場合の Web アプリの修正点

オンプレミスの SQL Server から Azure SQL Database にデータベースを移行する場合、クライアント アプリケーションは、SQL Server にアクセスする場合と同様に ADO.NET、Entity Framework、ODBC、および、JDBC の各データ プロバーダーを使用できるため、これまでと同様のコードでデータベースに接続できます。しかしながら、データベースエンジンの動作の違いから、アプリケーションに対して行う必要があるいくつかの修正項目について考慮してください。

# チェック項目 チェック 1 Windows 認証接続は、使用できないため、SQL Server 認証、または、Azure Active Directory 認証を使用する 2 インスタンスからの切断に備えて、リトライ処理を実装する 3 接続のタイム アウト値は 30 秒以上、リトライ間隔は 10 秒以上に設定する 4 日付と時刻の表示は、UTC 時間となるため、日本時間で運用する場合、9 時間加算する 5 スケールアウトに対応できるようにアプリが設計されていることを確認し、スケールアウト・スケールイン操作で問題が起こら

ないことをテストする

6 アプリを Azure Web App に配置する場合、アプリが使用している言語、フレームワークに合わせて Web Apps のアプリ設定を構成し、テストする

Azure SQL Database、および、Azure SQL Database Managed Instance への接続時に使用できる認証方法は、SQL Server 認証と Azure Active Directory 認証のみがサポートされています。引き続き、オンプレミスと同じユーザーアカウント情報を使用して、Azure SQL Database、Azure SQL Database Managed Instance へ接続させたい場合は、オンプレミスの Active Directory と Azure Active Directory 間でアカウント同期することを検討してください。オンプレミスのディレクトリと Azure Active Directory を統合については、「ハイブリッド ID のドキュメント」 を参照してください。

Azure SQL Database では、リソース ガバナンスと制限の適用という 2 つの異なるメカニズムを使用して、データベースで使用できるリソースが管理されています。データベースへの接続のアイドル時間が 30 分を超えたり、同一テナント内の別ユーザーから、高い負荷がかけられ、リソースが不足すると、安定性を保つため、スロットリングにより接続が終了することもあります。

このため、アプリケーション側の実装としては、接続が自動切断した場合に備え、リトライ処理が必要になります。また、多数のクライアントが同時にリトライ処理を再試行することで、過大に負荷がかかるのを防ぐために、接続のタイム アウト値は 30 秒以上、リトライ間隔は 10 秒以上に設定しますることが推奨されています。Azure SQL Database への接続に関する問題の対応は、「Azure SQL Database との接続に関する一般的な問題のトラブルシューティング」 を参照してください。

また、Azure SQL Database、および、Azure SQL Database Managed Instance のどちらでも、日付時刻の表示は、UTC 時間になるため、日本時間でのデータ表示や保存が必要な場合、9 時間加算するロジックを組み込む必要があります。

データベースの移行計画

- 17 -

SQL Server の主要なツールの変遷と入手先

SQL Server 2008/2008 R2 では、インストール メディアに同梱されていた管理ツール、および、BI コンポーネントの開発ツールの一部が、現在の SQL Server バージョンでは、Web からダウンロードして入手していただく形態に変更されています。これらのツールは、Azure の PaaS 環境で稼働する SQL Server 互換のマネージド サービスに対しても、そのまま使用することができます。

2008・2008 R2 2012・2014・2016 2017 入手先 統合管理ツール SQL Server

Management Studio (SSMS)

SQL Server Management Studio (SSMS)

SQL Server Management Studio (SSMS)

https://docs.microsoft.com/ja-jp/sql/ssms/download-sql-server-management-studio-ssms

Azure Data Studio https://docs.microsoft.com/ja-jp/sql/azure-data-studio/download?view=sql-server-2017

Reporting Services 構成マネージャー

Reporting Services 構成マネージャー

Reporting Services 構成マネージャー

https://www.microsoft.com/ja-jp/download/details.aspx?id=55252

BI 開発ツール Business Intelligence Development Studio (BIDS)

SQL Server Data Tools (SSDT)

SQL Server Data Tools (SSDT)

https://docs.microsoft.com/ja-jp/sql/ssdt/download-sql-server-data-tools-ssdt

コ マ ン ド ラ イ ン ツール

SQLCMD SQLCMD SQLCMD https://docs.microsoft.com/ja-jp/sql/tools/sqlcmd-utility?view=sql-server-2017

mssql-cli https://github.com/dbcli/mssql-cli/blob/master/doc/installation_guide.md

bcp bcp bcp https://docs.microsoft.com/ja-jp/sql/tools/bcp-utility?view=sql-server-2017

これらのツールは、Azure で提供される最新機能に対応していくため、現在では、Web からの提供になっていることをご理解ください。また、SQL Server 2017 は、Windwos Server だけでなく Linux OS もサポートしているため、新たに、クロスプラットフォーム環境で実行できるツールとして、Azure Data Studio、mssql-cli が追加されています。これらのツールは、Windwos 以外に Linux と macOS でも実行することができます。

新しいコマンドライン ツールの mssql-cli は、github で公開され、ドキュメントは、mssql-cli/doc/ から参照することができます。

データベースの移行計画

- 18 -

データベース移行のためのツールとサービス

SQL Server 2008/2008 R2 から それ以降の SQL Server 環境、または、PaaS のデータベース サービスへの移行を考えている場合、最初に使用していただきたいツールは、「Microsoft® Assessment and Planning (MAP) Toolkit」 です。このツールは、ターゲットにエージェント ソフトウェアをインストールすることなく迅速に IT 環境のインベントリを生成することができます。移行対象のサーバー環境に、どのような SQL Server バージョンのコンポーネントが、インストールされ、どれくらいのサイズのデータベースが、いくつ作成されているのかといったことを素早く調査できます。

そして、移行対象のインスタンスに対して、アセスメントを実行する時に使用するツールが、「Microsoft® Data Migration Assistant (DMA)」 です。このツールにより、データベース移行時に発生する互換性の問題の調査が可能です。データベースがアップグレードされることにより生じる問題を事前に検出できるため、移行作業に伴う工数の見積もりにも使用することができます。さらに、データベース移行作業でも、このツールを使用できます。下表は、これらの移行ツールが対応しているソース (移行元) とターゲット (移行先) を示しています。

2019 年 3 月時点では、Microsoft® Data Migration Assistant (DMA) で、Azure SQL Database Managed Instance へ移行するためのアセスメント レポートの作成は、可能ですが、データベースの移行操作は、未サポートであることに注意してください。

Azure SQL Database Managed Instance への移行では、デスクトップ ツールではなく 「Azure Database Migration Service」 という PaaS サービスを使用します。Azure Database Migration Service は、複数のデータベース ソースから Azure データ プラットフォームへのシームレスな移行を最小限のダウンタイムで実現できるように設計されたフルマネージド サービスです。SQL Server を含めた各種データベース サーバーから Azure IaaS、PaaS 環境へ、オフラインとオンラインでの移行をサポートしています。

Azure Database Migration Service がサポートしているソースとターゲットは、下表のとおりです。

ソース ターゲット スキーマのみ オフライン オンライン SQL Server SQL Server on Azure VM × 〇 ×

Azure SQL Managed Instance × 〇 Premium SKU が必要 Azure SQL Database 〇 〇 Premium SKU が必要

MongoDB Azure Cosmos DB (MongoDB API) × 〇 Premium SKU が必要 MySQL SQL Server on Azure VM × プライベート プレビュー ×

Azure SQL Database × プライベート プレビュー × Azure Database for MySQL × × Premium SKU が必要

データベースの移行計画

- 19 -

PostgreSQL Azure Database for PostgreSQL × × Premium SKU が必要 Oracle SQL Server on Azure VM × プライベート プレビュー プ レ ビ ュ ー 、 Premium SKU

が必要 Azure SQL Managed Instance × プライベート プレビュー Premium SKU が必要 Azure SQL Database × プライベート プレビュー プ レ ビ ュ ー 、 Premium SKU

が必要 Azure SQL Data Warehouse × プライベート プレビュー ×

Azure Database Migration Service を使用した SQL Server から Managed Instance への移行手順は、本書の 「第 5 章 Azure SQL Database Managed Instance へのデータベース移行」 を参照してください。

データベースの移行計画

- 20 -

2.8.1 Microsoft Assessment and Planning (MAP) Toolkit を使用したインベントリ収集

Microsoft® Assessment and Planning (MAP) Toolkit は、以下の OS 環境をサポートしています。 Windows 10、Windows 8.1、Windows 8、Windows 7 SP1 Windows Server 2016、Windows Server 2012 R2、Windows Server 2012、Windows Server 2008 R2

SP1 また、.NET Framework 4.5 以降が構成されていることが前提となります。インストール モジュールは、SQL Server のインストールセンターから、[ツール] ページを選択して、[SQL Server 用 Microsoft Assessment and Planning (MAP) Toolkit] をクリックして接続されるページから MapSetup.exe をダウンロードして、インストールを実行します。また、ダウンロード センターの 「Microsoft Assessment and Planning Toolkit」 のダウンロード ページに直接接続することもできます。

インストールが完了して、ツールを起動すると、次のようなダイアログが表示され、インベントリ収集のためのデータベースの作成を要求されます。ここで新しいデータベースを作成するには、[Name] テキストボックスに任意のデータベース名を入力して、[OK] ボタンをクリックするだけです。

データベースの移行計画

- 21 -

インベントリ収集のためのデータベースは、LocalDB の形式で作成されますので、インベントリ収集のために事前に SQL Server インスタンスを構成しておく必要はありません。この後、SQL Server 関連のインベントリ収集を行うには、[Database] ページを選択して、[SQL Server Discovery] の [Collect inventory data] をクリックします。

そうすると、ウィザードが起動するので、[Inventory Scenarios] ページの [Choose your scenario] で 以下を選択して [Next] をクリックします。

SQL Server SQL Server with Database Details

[Discovery Methods] ページの [Select which methods to use to discover computers] では、ネットワークに接続されたコンピューターの検出方法を指定します。

Active Directory ドメイン サービス (AD DS) ネットワーク プロトコル IP (インターネット プロトコル) アドレス範囲のスキャン コンピューター名の手動入力

データベースの移行計画

- 22 -

ファイルからコンピューター名をインポート

ワークグループ環境にあるサーバーは、事前にターゲットのホスト名を確認し、[Manually enter computer names and credentials] や [Import computer names from a file] といったオプションを使用して、ターゲットのサーバーごとに認証情報を指定することで、インベントリ収集することができます。 既定の [Use Active Directory Domain Services (AD DS)] を選択している場合は、[Active Directory Credentials] ページで、対象の Active Directory ドメイン名と対象サーバーにアクセス可能な資格情報を入力します。

データベースの移行計画

- 23 -

更に、検索対象のコンピューターが置かれている Active Directory ドメインの OU を選択します。

[All Computers Credentials] ページでは、必要に応じて、[Create] ボタンを使用して、対象のコンピューターに接続できるの資格情報を追加することができます。

資格情報は、複数の種類を保存しておくことができます。対象コンピューターへの接続では、Windows Management Instrumentation (WMI)、Windows 認証 (SQL Windows)、SQL Server 認証 (SQL Native) の 3 種類から選択できますので、接続方法に対応する資格情報を入力しておくことが重要となります。 なお、WMI は、リモートからハードウェア、ソフトウェア、およびデバイスの情報を収集するためのインターフェイスですが、Windows ファイアウォールが有効になっている場合、以下の受信規則が構成されている必要があることに注意してください。

TCP ポート 135 (リモート管理) TCP ポート 137 と 445、UDP ポート 137 と 138 (ファイルとプリンターの共有)

また、ワークグループに配置している場合は、「ネットワーク アクセス: ローカル アカウントの共有とセキュリティ モデル」 ポリシーが [クラシック] に設定されている必要もあります。

データベースの移行計画

- 24 -

接続方法ごとに、複数の資格情報を登録した場合、[Credentials Order] ページで、使用する資格情報の順序を指定することができます。

なお、手動での対象コンピューターの設定を選択した場合は、[Enter Computers Manually] ページで、対象のコンピューターを登録することができます。

[Summary] ページで [Finish] をクリックするとインベントリ収集が始まります。

データベースの移行計画

- 25 -

インベントリ収集が完了するとサマリー レポートの Excel シートを開いてアセスメント レポートやデータベースの詳細レポートを確認することができす。

なお、アセスメント レポートで収集される情報は、対象の SQL Server データベース エンジン サービス インスタンスに接続して、以下のクエリを実行することでも得ることができます。

SELECT

SERVERPROPERTY('ProductVersion') AS ProductVersion

, SERVERPROPERTY('ProductLevel') AS ProductLevel

, SERVERPROPERTY('ResourceVersion') AS ResourceVersion

, SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime

, SERVERPROPERTY('Collation') AS Collation

, SERVERPROPERTY('Edition') AS Edition

, @@VERSION AS [@@VERSION];

GO

また、データベース ファイルの配置先は、以下のクエリを実行することでも得ることができます。

SELECT

name, physical_name AS current_file_location

FROM sys.master_files;

GO

データベースの移行計画

- 26 -

2.8.2 Microsoft Data Migration Assistant を使用した移行アセスメントの実行

Microsoft® Data Migration Assistant は、以下の 64 bit OS 環境をサポートしています。 Windows 10、Windows 7、Windows 8、Windows 8.1 Windows Server 2012

また、.NET Framework 4.5.2 以降が構成されていることが前提となります。インストール モジュールは、SQL Server のインストールセンターから、[プラン] ページを選択して、[Data Migration Assistant (DMA) のダウンロード] をクリックして接続するページから取得できます。また、ダウンロード センターの 「Microsoft® Data Migration Assistant」 に直接接続して、ダウンロードすることもできます。

インストールが完了して、ツールを起動すると、次のような初期画面が表示されるので [+] をクリックして、プロジェクトの作成から始めます。

データベースの移行計画

- 27 -

[New] が表示されたら、[Project type] で 「Assesment」 を選択して、[Project name] に任意のプロジェクト名を入力します。ここで、[Source server type] と [Target server type] のリストボックスをプルダウンするとサポートされているソースとターゲットを確認することができます。

2019 年 3 月時点のバージョンでは、[Source server type] には、「SQL Server」 が選択でき、[Target server type] には、「SQL Server」 「Azure SQL Database」 「Azure SQL Database Managed Instance」 「SQL Server on Azure Virtual Machine」 を選択することができます。また、現在サポートされている SQL Server のバージョンは、以下になります。

ソースとターゲットを指定した後、[New] で [Create] をクリックすると、作成するレポートの種類を選択する [Options] ページが表示されます。ここでは、[Select report type] で、[Check database compatibility] と [Check feature parity] を選択することで、互換性に関する問題を検出できます。

データベースの移行計画

- 28 -

[Select report type] で [Next] をクリックすると、[Connect to a server] が表示されるので、移行元の SQL Server 2008/2008 R2 のデータベースエンジン サービス インスタンスに接続するための認証情報を設定して [Connect] をクリックします。

データベースエンジン サービス インスタンスへの接続に成功すると、[Add sources] が表示されるので、移行アセスメントを実行する対象のデータベースを選択して [Add]をクリックします。

ここで、[Select sources] ページが表示されるので、移行対象のデータベースがリストされることを確認して、 [Start Assessment] をクリックします。

データベースの移行計画

- 29 -

これにより、対象のデータベースのアセスメントが開始します。しばらくすると [Review results] ページが表示されます。

[Select report type] で [Feature Parity] を選択している場合、[Review results] ページで [Feature Parity] から表示されますので、互換性の問題を確認するには、ここで [Compatibility issues] オプションを選択します。

データベース互換性レベルごとに、Breaking changes (下位互換性のない変更点)、Behavior changes (変更された動作)、Deprecated features (将来廃止される機能) の 3 種類の問題点がレポートされますので [Issue details] で詳細を確認し、[impacted objects] で対象のデータベース オブジェクトを確認してください。

このページの [Export report] を使用すると、レポート内容を json 形式、または、CSV 形式のファイルに保存することができます。

データベースの移行計画

- 30 -

移行元の SQL Server サービス インスタンス構成の確認

使用している SQL Server サービスの種類は、Microsoft Assessment and Planning (MAP) Toolkit が生成するアセスメント レポートで確認することができますが、SQL Server サービスが稼働する Windows Server にログインして SQL Server構成マネージャーを使用しても確認することができます。 SQL Server サービスの自動起動やサービス アカウントの設定、使用している TCP ポート番号、起動時パラメーターに指定したトレース フラグなどは、手動で移行する必要があるので、既定の構成を変更している場合、SQL Server 構成マネージャーから確認しておく必要があります。

なお、SQL Server サービスのサービス アカウントに、Active Directory ドメインのユーザー アカウントを使用している場合、SQL Server がアクセスする必要があるドメイン リソースを確認し、必要に応じて、Azure IaaS 環境にも Active Directory ドメインを作成することを検討してください。 また、sp_configure システム ストアド プロシージャや、SQL Server Management Studio の [サーバーのプロパティ] ダイアログから構成できる SQL Server データベース エンジン サービス インスタンスの構成は、対象のインスタンスに接続して、以下のクエリを実行することで得ることができます。

SELECT * FROM sys.configurations

GO

データベースの移行計画

- 31 -

なお、移行先には既定値から変更した構成のみを反映すればよいため、SQL Server Management Studio インスタンスを右クリックして表示されるメニューから [レポート] ⇒ [標準レポート] をクリックして、選択することができる [サーバー ダッシュボード] レポートの [既定以外の構成オプション] を参照すると効率的です。

サーバー ダッシュボード レポートの起動

サーバー ダッシュボード レポートの [既定以外の構成オプション]

オンプレミスから IaaS へのデータベース移行

- 32 -

3. オンプレミスから IaaS へのデータベース移行

本章ではオンプレミスで運用している SQL Server を Azure 仮想マシンに移行する手順を説明します。Azure 仮想マシンのデプロイ モデルには、ASM (Azure Service Management) と ARM (Azure Resource Manager) がありますが、SQL Server 用の仮想マシンには、ARM (Azure 仮想マシン v2) を選択することを推奨します。デプロイ時には、仮想マシンで使用できる、CPU コア数、メモリ サイズ、ストレージを選択することができます。

仮想マシンは、ネットワーク インターフェイス リソースを介して仮想ネットワークに参加します。ネットワーク インターフェイス リソースには、グローバル インターネットに接続するためのパブリック IP アドレスと仮想ネットワーク内で通信するためのプライベート IP アドレスを割り当てることができます。また、ネットワーク インターフェイス リソース、および仮想ネットワークのサブネットには、受信規則、送信規則を構成できるネットワーク セキュリティ グループを関連付けることができます。

仮想マシンの作成時に、仮想ネットワークを作成することもできますが、仮想マシンは、オンプレミスや PaaS 環境とのハイブリッド構成を含め様々なパターンで仮想ネットワークに配置することができます。最初に、どのようなネットワーク構成で運用するのかを決定し、仮想マシンを作成する前に、仮想ネットワークを構成することをお勧めします。

オンプレミスから IaaS へのデータベース移行

- 33 -

Azure 仮想マシンのデプロイと構成

管理ポータルから仮想マシンを作成するとき、Marketplace に登録された各イメージから、様々な種類の Azure 仮想マシンを作成できます。Microsoft が提供する仮想マシン イメージには、最新の修正プログラムが適用された Windows Server や SQL Server が含まれる Windows Server が提供されています。

ここでは、SQL Server 2017 Enterprise のサービス インスタンスを実行するデータベース サーバーの作成手順を説明します。Azure で提供される Windows Server の仮想マシン イメージは、英語版のみのですが、日本語の言語パックを追加することで、OS を日本語化できます。ただし、この操作を行っても、SQL Server は日本語化されないことに注意してください。本自習書では、英語版の SQL Server を使用する場合の照合順序の変更方法を含めて説明します。

3.1.1 Azure 仮想ネットワークの作成

最初に仮想マシンを配置するための仮想ネットワークを作成します。Azure 仮想ネットワークは、仮想マシンを接続するための論理的なネットワークです。1 つの仮想ネットワークに接続された仮想マシンは、お互い自由に通信することができます。仮想ネットワークのアドレス空間は、クラス A (10.0.0.0/8)、クラス B (172.16.0.0/12)、クラス C (192.168.0.0/16) のプライベート IP アドレスを設定することができます。また、仮想ネットワークには、複数のサブネットを作成することができます。

同じ仮想ネットワークのアドレス空間内に作成されたサブネットは、何も設定しなくてもサブネット間の通信が可能ですが、サブネット間の通信を制限する 「ネットワーク セキュリティ グループ(NSG)」 と呼ばれるファイアウォール機能を構成して、サブネットを分けることができます。ここでは、下図のようなシンプルな構成で仮想ネットワークを作成する手順を説明します。本番環境では、アドレス空間を適切な値とサイズに変更してください。

また、この手順を実行する前に、事前に、Azure ポータルのハブ メニューから [すべてのサービス] ⇒ [ネットワーキング] ⇒ [仮想ネットワーク] を選択して、使用するサブスクリプションに作成されている仮想ネットワークのリストを表示し、使用済みのアドレス空間を確認してください。

オンプレミスから IaaS へのデータベース移行

- 34 -

Azure ポータルから仮想ネットワークを作成するには、ポータルの画面左のハブ メニューより、[リソースの作成] をクリックし、[ネットワーキング] ⇒ [仮想ネットワーク] をクリックします。

この操作で表示される [仮想ネットワークの作成] ブレードで、下表のパラメーター値 (使用するアドレス空間は自社の環境に合わせて変更してください) を設定し、[作成] をクリックします。

オンプレミスから IaaS へのデータベース移行

- 35 -

パラメーター 説明 設定する値 名前 仮想ネットワークに付ける任意の名前です。 Azure-VNET-01 アドレス空間 仮想ネットワーク全体のアドレス空間です。 10.1.0.0/24 サブスクリプション 使用するサブスクリプションです。 任意 リソース グループ 仮想ネットワークを格納するリソース グループを選択しま

す。新規または既存のリソースグループが選択できます。 任意

場所 仮想ネットワークを作成する場所を選択します。 任意 サブネット-名前 サブネットに付ける任意の名前です。 Frontend-Subnet サブネット-アドレス範囲 サブネットのアドレス空間です。 10.1.0.0/27 DDoS Protection DDoS 攻撃をアルタイムに検出して、サービスの可用性が

影響を受ける前に Azure ネットワークの境界でトラフィックを除去する機能です。

Basic

サービス エンドポイント 仮想ネットワークのプライベート アドレス空間を拡張し、VNET へのアクセスを以下の Azure PaaS サービスに提供する機能 Azure Storage Azure SQL Database Azure Datawarehouse Azure Database for PostgreSQL サーバー Azure Database for MySQL サーバー: Azure Cosmos DB Azure Key Vault Azure Service Bus Azure Event Hubs Azure Data Lake Store Gen 1

無効

ファイアウォール Azure 仮想ネットワーク リソースを保護するためのプロキシ サーバー機能を提供するマネージド ネットワーク セキュリティ サービス

無効

作成した仮想ネットワークにサブネットを追加するには、左メニューで [サブネット] をクリックして表示されるブレードで [サブネット] をクリックします。

オンプレミスから IaaS へのデータベース移行

- 36 -

[サブネットの追加] ブレードで、サブネットを構成するパラメーター値を設定して、[OK] ボタンをクリックします。

パラメーター 説明 設定する値 名前 サブネットに付ける任意の名前です。 Backend-Subnet アドレス空間 サブネットのアドレス空間です。 10.1.0.32/27 ネットワーク セキュリティ グループ サブネットに関連付けるネットワークセキュリティグループの指定です。 なし ルート テーブル サブネットに関連付けるルーティング テーブルの指定です。 なし サービス エンドポイント 仮想ネットワークのプライベート アドレス空間を拡張し、VNET への

アクセスを Azure PaaS サービスに提供する機能 設定しない

サブネットの委任 特定のサービスにサブネットを占有使用させることを許可する なし

仮想ネットワークの [サブネット] ブレードでサブネットが追加されたことを確認します。

オンプレミスから IaaS へのデータベース移行

- 37 -

3.1.2 データベース サーバーのための Azure 仮想マシンの作成

Azure ポータルからデータベース サーバーとして使用する Windows Server 仮想マシンを作成します。ここでは仮想マシンは、下図のように前の手順で作成した仮想ネットワークの Backend-Subnet サブネットに配置する手順として説明します。

Azure ポータルから仮想マシンを作成する場合、ネットワーク インターフェイス リソースの名前は自動生成されます。Azure ポータルからは、ネットワーク インターフェイスに関連付くネットワーク セキュリティ グループとパブリック IP アドレス リソースを構成することができます。ネットワーク セキュリティ グループにより、ファイアウォール機能が提供され、仮想マシンへのアクセス制御を設定することができます。

SQL Server 2017 が実行される仮想マシンを作成するには、Azure ポータルの画面左のハブ メニューで、[リソースの作成] を選択し、Azure Market Place を検索するためのテキストボックスに 「SQL Server 2017」 と入力して Enter キーを押します。

この操作で、[すべて] ブレードに、仮想マシンの種類がリストされるので、インストールしたい仮想マシン イメージを選択してEnter キーを押します。

オンプレミスから IaaS へのデータベース移行

- 38 -

選択した仮想マシン イメージのブレードが表示されるので、[デプロイ モデルの選択] で 「Resource Manager」 を選択し、[作成] をクリックして、仮想マシン イメージの設定を開始します。本書では、SQL Server 2017 Developer が実行される Windows Server 2016 仮想マシンを作成していますが、本番環境では、Enterprise か Standard を選択してください。

[基本] ブレードでは、仮想マシンの名前、管理者アカウントの情報、配置するリソース グループと場所などを設定して [OK] ボタンをクリックします。仮想マシンの名前は、仮想マシンのコンピューター名となります。

オンプレミスから IaaS へのデータベース移行

- 39 -

有効なソフトウェア アシュアランス (SA) または、有効な Windows Server サブスクリプション付きの Windows ライセンスを所有している場合、[お金を節約] で [はい] を選択することで、Azure ハイブリッド特典を適用して、コンピューティング コストを節約できます。

仮想マシンの作成で、次に表示される [サイズの選択] ブレードでは、[ディスクの種類] で 「Premium」 を選択します。SQL Server の Enterprise エディションを稼働させる場合、Premium ディスクをサポートする DXs_v3 以上が推奨されます。

ワン ポイント Azure 仮想マシンで選択可能なサイズとオプションについて説明は、「Azure の Windows 仮想マシンのサイズ」 を参照してください。なお、SQL Server では、Premium Storage を選択できる仮想マシンを使用することが推奨されています。Enterprise では、「DS3_v2」 以上、Standard および Web でも 「DS2_v2」 以上のサイズを選択してください。Premium Storage で選択できるサイズや性能については、「Azure で利用できるディスクの種類」 を確認してください。

オンプレミスから IaaS へのデータベース移行

- 40 -

仮想マシンのサイズを選択すると、オプション機能を構成する [設定] ブレードが表示されるので、仮想マシンを配置する仮想ネットワークとサブネットを指定します。

Azure に接続する環境が、Express Route やサイト間 VPN 接続で、直接 Azure に接続されていない場合、Azure 仮想マシンに、パブリック IP アドレスを割り当てて RDP を使用して接続する必要があります。この場合、パブリック受信ポートにRDP 接続で使用する 3389 を指定しておきます。

拡張機能では、[自動シャットダウン] と [監視] の設定が行えますので、必要に応じて構成してください。なお、自動シャットダウンさせた仮想マシンを自動で起動させるには、Azure Automation を使用します。RunBook に下記 Power Shell コマンドを実行することで、起動をスケジュール実行することができます。

Start-AzureRmVM -ResourceGroupName "リソースグループ名" -Name "VM 名"

なお、Azure 仮想マシンの冗長構成を設定する場合、このブレードで、可用性ゾーン、または、可用性セットを構成することができます。可用性セットを構成することで、計画メンテナンスまたは計画外メンテナンスの期間でも、1 つ以上の仮想マシンが使用可能になり、99.95% の Azure SLA が満たされます。

可用性ゾーンは、1 つの Azure リージョン内で物理的に分離されたゾーンのことで、データセンター全体に及ぶ障害や損失からアプリとデータを保護するために使用します。可用性ゾーンの構成により、99.99% の Azure SLA が満たされます。

可用性ゾーン、可用性セットは、仮想マシンの作成時にのみ設定でき、仮想マシンの作成後に変更できません。これらの機能の詳細については、「Azure での Windows 仮想マシンの可用性の管理」 の記事を参照してください。

ワン ポイント 仮想マシンに接続されているすべてのディスクに Premium Storage を使用している場合、可用性セットに属さない単一インスタンスの仮想マシンへの接続性に対しても、月間 99.9% の SLA が提供されます。さらに、可用性セット、または、可用性ゾーンを構成することで、それぞれ、99.95 %、99.99 % の SLA を提供しています。Azure は、仮想マシンの高可用性を SLA で保証していますが、仮想マシン内で実行される SQL Server インスタンスの高可用性を保証しているわけではないことに注意してください。 仮想マシンがオンラインで、正常な状態にあっても、SQL Server インスタンスで障害が発生する可能性があります。また、ディザスター リカバリー ソリューションを構築する場合、分散環境での SQL Server データベースのトランザクションの整合性を考慮しなければなりませ

オンプレミスから IaaS へのデータベース移行

- 41 -

ん。SQL Server が稼働する仮想マシンの可用性を保証するには、複数の仮想マシンに SQL Server インスタンスを構成した上で、データベースを同期する必要があります。このため、AlwaysOn 可用性グループやデータベース ミラーリングといった高可用性と障害復旧 (HADR) データベース ソリューションを構成する必要があります。 本書では、SQL Server の HADR 構成について解説していませんが、設定方法を確認される場合は、さらに、Azure 仮想マシンにデプロイした SQL Server で、AlwaysOn 可用性グループを構成する場合、合わせて 「Azure 仮想マシンで Always On 可用性グループを作成するための前提条件を満たす」 と 「Azure VM での AlwaysOn 可用性グループの手動構成」 の記事を参照してください。

[SQL Server の設定] ブレードでは、SQL Server のデータベース エンジン サービスの既定のインスタンスへの接続に関する構成が可能です。ここでは、まず、SQL Server インスタンスに対して仮想ネットワーク内からの接続のみを許可する場合、[SQL の接続] を 「プライベート (Virtual Network 内)」 にします。なお、運用前の SQL Server の構成などの目的で一時的に、インターネットからの接続を許可する場合、[SQL 認証] を有効化して、SQL Server 認証の管理者ログインを作成しておく必要があります。

また、通常、既定のインスタンスは、1433/TCP ポートを利用して接続するため、攻撃者が、そのポートに対する不正な接続や不正なパケットの送信を試行する可能性を配慮し、既定の 「1433」 からポート番号を変更することをお勧めします。ポート番号を変更した場合、クライアント アプリからは、接続先として 「ホスト名,<ポート番号>」 を指定することでインスタンスに接続できます。

オンプレミスから IaaS へのデータベース移行

- 42 -

[SQL Server の設定] ブレードで設定できる [ストレージの構成] は、Premium Storage を選択している場合、[IOPS] [スループット] [ストレージ サイズ] の設定が使用できます。各スライダーの刻みの数と上限は、選択した VM のサイズに依存します。また、IOPS やスループットを増やしたい場合は、まず、ストレージ サイズから大きくする必要があります。

また、ストレージの最適化の選択肢として、[全般] [トランザクション処理] [データウェアハウス] から選択することができます。最適化の設定方法については、「SQL Server VM のストレージの構成」 の [ワークロード最適化の設定] を参照してください。

[SQL Server の設定] ブレードで設定できる [自動バックアップ] では、Azure Blob ストレージへの定期的な完全バックアップとトランザクション バックアップのスケジュールを構成できます。バックアップの保有期間は、0~30 日の間で選択できます。

バックアップの暗号化を有効化することで、データベースが暗号化されていなかった場合でもバックアップを暗号化することができます。Azure は、バックアップを暗号化するための証明書を作成し、指定されたパスワードを使用してその証明書を保護します。

オンプレミスから IaaS へのデータベース移行

- 43 -

最後に [概要] ブレードで設定内容を確認して [作成] をクリックします。

オンプレミスから IaaS へのデータベース移行

- 44 -

3.1.3 作成したデータベース サーバーへの接続

デプロイした仮想マシンに接続するには、仮想マシンの [概要] ブレードで、[接続] をクリックします。

ワン ポイント リモート デスクトップ (RDP) 接続で使用するパブリック IP アドレスは、予約されていない場合、Azure 仮想マシンを再起動すると変更されます。パブリック IP アドレスに DNS 名ラベルを設定することで、DNS 名を指定して、接続できます。この設定は、[概要] ブレードの [DNS 名] で 「構成」 をクリックして、設定してください。

[仮想マシンに接続する] で、[RDP ファイルのダウンロード] をクリックして、ダウンロードされる rdp ファイルを使用してリモート デスクトップ接続を開きます。

オンプレミスから IaaS へのデータベース移行

- 45 -

[Windows セキュリティ] が表示されたら、Azure 仮想マシンの作成時に指定したユーザー名とパスワードを入力し、[OK] をクリックします。

オンプレミスから IaaS へのデータベース移行

- 46 -

3.1.4 Windows Server の日本語化

Microsoft Azure で提供される Windows Server の仮想マシン イメージは英語版ですが、日本語の言語パックを追加することで、OS を日本語化することができます。コントロール パネルから言語、地域、タイムゾーンを変更し仮想マシンの OS 環境を日本語化します。

タイム ゾーン:「(UTC) Coordinated Universal Time」 ⇒ 「大阪、札幌、東京」 言語設定:「English(United States)」 ⇒ 「日本語」 地域設定:「United States」 ⇒ 「日本」

構成手順の詳細については、「Azure 環境における Windows Server の日本語環境化について」を参考にしてください。

ワン ポイント SQL Server が組み込まれた Azure 仮想マシン イメージから仮想マシンを作成した場合、SQL Server も英語版がインストールされますが、OS に日本語の言語パックを追加しても、SQL Server は日本語化されていないことに注意してください。 SQL Server データベース エンジンの実行可能ファイルは全言語共通であるため、英語版 SQL Server でも、日本語を挿入可能なデータ型 (Unicode 型など) をテーブル列として使用することで、日本語データの格納と参照が可能です。 なお、SQL Server を日本語化するには、下記の作業が必要になります。

1. SQL Server IaaS Agent 拡張機能のアンインストール 2. SQL Server と関連コンポーネントのアンインストール 3. OS のロケール設定を日本語に変更 4.日本語の SQL Server 2017 Evaluation Edition を使用して、日本語版の SQL Server をインストール

Azure 管理ポータルのギャラリーからデプロイした Azure 仮想マシン上に作成した SQL Server 2017 (Windows OS 版) の日本語化手順の詳細については、「Azure 仮想マシン上に作成した SQL Server の日本語化手順(Windows OS 版 SQL Server 2017 対応手順)」を参照してください。

オンプレミスから IaaS へのデータベース移行

- 47 -

SQL Server インスタンスの構成

Azure 仮想マシンで稼働する SQL Server に対して 「2.9 移行元の SQL Server サービス インスタンス構成の確認」 で確認した、既定の設定から変更しているインスタンス構成を移行先に反映する作業と、以下の設定作業を行います。

サーバー照合順序の変更 sa アカウントの無効化 既定の言語の変更 使用しない SQL Server サービスの停止 データ ディスクの追加と既定のデータベース フォルダーの変更

また、Azure 仮想マシンは、ワークグループ環境に構成されますので、Active Directory ドメイン環境が必要な場合、仮想ネットワークにドメイン コントローラーをデプロイして、ワークグループからドメイン環境への移行を行ってください。

なお、インスタンスに対する一連の構成作業では、「サーバー照合順序の変更」 を最初に行ってください。この作業は、master システム データベースの再構築を伴うため、master システム データベースに行われた変更が初期状態にリセットされることに注意してください。

3.2.1 サーバー照合順序の変更

照合順序は、データ セット内の各文字を表すビット パターンの指定で、これにより、データの並べ替えおよび比較を行うための規則が決定されます。照合順序指定子に 「Japanese」 が選択された場合、データを日本語辞書順で格納することができます。照合順序は、次のレベルで設定できます。

サーバー データベース テーブルの列

Azure 仮想マシンにインストールされる英語版 SQL Server のサーバー照合順序は、「SQL_Latin1_General_CP1_CI_AS」 で日本語には対応していないため、日本語版の SQL Server と同じ照合順序に変更する場合、「Japanese_CI_AS」 に変更する必要があります。

ワン ポイント 日本語版 SQL Server の既定の照合順序は Japanese_CI_AS です。「CI (Case Insensitive)」は、大文字、小文字が区別されないことを意味し、「AS (Accent Sensitive)」は、アクセント、濁音、半濁音を区別することを意味しています。

サーバー レベルで英語版の照合順序を使用していても、データベース レベルで照合順序を 「Japanese_CI_AS」 で設定することで、対象のユーザーデータベースに対して日本語対応できますが、tempdb システム データベースの照合順序は、「SQL_Latin1_General_CP1_CI_AS」 であるため、tempdb を使用する操作では、その影響を受けることに注意してください。

なお、SQL Server 2012 以降では、ユーザー データベースを包含データベースとして設定することで、サーバー照合順序の影響を受けずに、ユーザー データベースを使用することも可能ですので、必要に応じて、包含データベース化も検討してください。

包含データベースの詳細については、「包含データベースの照合順序」 を参照してください。

オンプレミスから IaaS へのデータベース移行

- 48 -

サーバー照合順序は、SQL Server Management Studio から接続したインスタンスの [Properties] を選択して、表示される [Server Properties] の [General] ページで確認することができます。

サーバー照合順序の変更は、コマンド プロンプトを管理者として起動し、最初に、セットアップ プログラムがあるフォルダーに移動するため、以下のコマンドを入力して Enter キーを押します。

CD C:\SQLServerFull

サーバー照合順序を 「Japanese_CI_AS」 に変更するには、以下のコマンドを入力して Enter キーを押します。

Setup.exe /QUIET /ACTION=REBUILDDATABASE

/INSTANCENAME=MSSQLSERVER

/SAPWD=<sa アカウントのパスワード>

/SQLSYSADMINACCOUNTS=<Windows 認証の管理者ユーザー名>

/SQLCOLLATION=Japanese_CI_AS

ワン ポイント 本書では、Word 文書の校正上、改行が入っていますが、Setup コマンドは、1 行として記述して、実行する必要がありますので、コマンドをメモ帳などに記述した後、コピーして、コマンド プロンプトに貼り付けて実行するとよいでしょう。

オンプレミスから IaaS へのデータベース移行

- 49 -

サーバー照合順序の変更により、仮想マシンのデプロイ時に作成した管理者用の SQL Server 認証ログインが削除されていることに注意してください。管理者用の SQL Server 認証ログインが必要な場合は、以下のスクリプトを実行して、再作成しておきます。

CREATE LOGIN <SQL Server 認証ログイン名> WITH PASSWORD=N'<パスワード>'

GO

ALTER SERVER ROLE sysadmin ADD MEMBER <SQL Server 認証ログイン名> GO

3.2.2 sa アカウントの無効化

SQL Server 認証モードを使用しているインスタンスで、サーバー照合順序を変更すると、その操作により sa アカウントが有効化されます。sysadmin 固定サーバー ロールのメンバーシップである sa は、すべてのユーザー データベースに対し、dbo としてアクセスすることができます。sa は、よく知られた SQL Server の管理者用ログインで、悪意のあるユーザーからの攻撃対象となることが少なくないため、無効化しておくことを推奨します。

アカウントの無効化は、SQL Server Management Studio のオブジェクト エクスプローラーのツリーで、[Security] ノードの下にある [Logins] ノードを展開表示して表示される [sa] を右クリックして、[Properties] を選択します。

この操作で、[Login Properties - sa] が表示されるので [Settings] の [Login] で [Disable] オプションを選択して [OK] ボタンをクリックします。

オンプレミスから IaaS へのデータベース移行

- 50 -

3.2.3 既定の言語の変更

「既定の言語」 は、新しく作成したログインで使用される既定の言語の指定になります。Azure の SQL Server 仮想マシンの既定の言語は、English です。この設定は、[Server Properties] の [Advanced] ページで [Default Language] を 「Japanese」 に変更しすることで、日本語に変更することができます。

3.2.4 使用しない SQL Server サービスの停止

SQL Server が組み込まれた仮想マシン イメージのデプロイでは、Machine Learning Services の有効化/無効化の設定は可能ですが、それ以外の SQL Server サービスは既定でインストールされ、実行された状態となります。ですので、使用しないサービスは、SQL Server Configuration Manager を使用して停止しておきます。

なお、SQL Server 2017 より SQL Server Reporting Services は、インストール メディアに含まれなくなっています。このサービスのインストールが必要な場合、セットアップ ファイルをダウンロードセンターから入手する必要があります。

オンプレミスから IaaS へのデータベース移行

- 51 -

3.2.5 データ ディスクの追加

仮想マシン イメージとして 「SQL Server 2017 on Windows Server 2016」 を選択して、デプロイした場合、仮想マシンには、OS ディスクとデータ ディスクが 1 本ずつ接続されています。OS ディスクは、OS インストール先の C ドライブと、一時ディスク領域として使用できる D ドライブで構成されています。C ドライブは、OS のインストール ファイル専用です。また、D ドライブには、永続化が要求されない一時ファイル用に使用します。これらのドライブに、データベース ファイルを配置するべきではありません。

データベース ファイルは、F ドライブとして作成されているデータ ディスクを格納先にします。なお、SQL Server のデータベースの格納は、データ ファイルとトランザクション ログ ファイルで異なるディスク ドライブに配置することが推奨されていますので、データベースを作成する前に仮想マシンにログ ファイル用のデータ ディスクを追加します。

ディスクの種類の 「Premium」 は、最大 4095 GB のサイズを提供する SSD ドライブです。ディスクサイズにより提供される IOPS が異なっていることに注意してください。SQL Server Enterprise 環境では、5,000 IOPS が提供される P30 以上の Premium ディスクを使用することが推奨されています。下表のアスタリスクで示されたサイズは、現在プレビュー中です。最新情報は、「Azure で利用できるディスクの種類」 を参照してください。

サイズ (GB) 最大 IOPS 最大スループット 月額 (東日本 2019.3) P4 32 120 25 MiB/Sec \680.11 P6 64 240 50 MiB/Sec \1,314.87 P10 128 500 100 MiB/Sec \2,539.04 P15 256 1,100 125 MiB/Sec \4,896.72 P20 512 2,300 150 MiB/Sec \9,430.40 P30 1,024 5,000 200 MiB/Sec \17,409.28 P40 2,048 7,500 250 MiB/Sec \33,370.25 P50 4,095 7,500 250 MiB/Sec \63,838.73 P60* 8,192 12,500 480 MiB/Sec \60,936.96 (プレビュー価格) P70* 16,384 15,000 750 MiB/Sec \116,070.40 (プレビュー価格) P80* 32,767 20,000 750 MiB/Sec \232,140.80 (プレビュー価格)

また、ホスト キャッシュ構成は、データ ファイルと TempDB をホストするディスクでは、読み取り専用キャッシュを使用し、連続した書き込みを行うトランザクション ログ ファイルのディスクでは、キャッシュを無効化します。下表は、データ ディスクの構成例を示しています。

名前 用途 種類 ドライブ文字 ホスト キャッシュ SQL2017_disk2 データ ファイル Premium SSD F 読み取り専用 SQL2017_disk3 ログ ファイル Premium SSD G なし

オンプレミスから IaaS へのデータベース移行

- 52 -

Azure ポータルから、仮想マシンの [ディスク] ブレードを選択して、[データ ディスクの追加] をクリックして、データ ディスクを追加することができます。なお、仮想マシンに割り当てるマネージド ディスクが存在しない場合、[ディスクの作成] をクリックして、ディスクを追加できます。

Azure ポータルで、ディスク構成を保存した後、仮想マシンを起動して、コンピューターの管理から [ディスクの管理] を開きます。そうすると、[ディスクの初期化] が表示されるので、追加したディスクを MBR (マスター ブート レコード) 形式で使用する場合、そのまま、[OK] ボタンをクリックします。

オンプレミスから IaaS へのデータベース移行

- 53 -

仮想マシンに未割当のディスクとして [ディスク 3] が追加されたことを確認して、[ディスク 3] を右クリックして、[新しいシンプル ボリューム] を選択します。

[新しいシンプルボリュームウィザード] の [ドライブ文字またはパスの割り当て] でトランザクション ログ ファイルを格納するためのディスク ドライブのドライブ文字を割り当てます。

また、[パーティションのフォーマット] では [アロケーション ユニット サイズ] を 64 KB に設定します。

オンプレミスから IaaS へのデータベース移行

- 54 -

ワン ポイント Azure 仮想マシンのデータ ディスクのフォーマットでは、データ ファイル、トランザクション ログ ファイル、および TempDB を格納するディスクは、64 KB のアロケーション ユニット サイズを使用することが推奨されています。デプロイ時に作成される F ドライブは、4 KB (既定値) のアロケーション ユニット サイズでフォーマットされています。このディスクにデータベース ファイルを配置する場合、その前に、64 KB のアロケーション ユニット サイズでフォーマットしておくとよいでしょう。

[ディスクの管理] から [ディスク 3] にドライブ文字が割り当てられ、初期化されたことを確認します。

オンプレミスから IaaS へのデータベース移行

- 55 -

3.2.6 既定のデータベース フォルダーの変更

Azure 仮想マシンにインストールされた SQL Server インスタンスのデータベース ファイルは、データ ディスクの F ドライブの Data と Log フォルダーに格納されるように構成さます。データ ファイルとトランザクション ログ ファイルは、保守性からもパフォーマンスの面からもディスクを分けることが推奨されていますので、既定の構成を修正する必要があります。

ここでは、Log フォルダーの場所を新しく追加したデータ ディスクのフォルダーに変更する手順を説明します。まず、Windows エクスプローラーを起動し、F ドライブの \ (ルート) に作成されているフォルダーを確認します。

F ドライブのルートには、Data および、Log フォルダーが作成されています。ここで、G ドライブの \ (ルート) に新しい Log フォルダーが作成します。

トランザクション ログの既定のフォルダーを変更するには、SQL Server Management Studio で、対象のインスタンスの [サーバーのプロパティ] で [データベースの設定] ページを選択して、[データベースの既定の場所 (Database default locations)] の [ログ (Log)] を 「G:\Log」 に設定します。

オンプレミスから IaaS へのデータベース移行

- 56 -

3.2.7 tempdb データベース ファイルの分散配置

Azure 仮想マシンに自動でインストールされる SQL Server 2017 は、tempdb データベース ファイルの初期サイズが、8 MB で、すべて、C ドライブに割り当てられます。

一時オブジェクトや複雑な結合などのワークロードで tempdb が多用される場合、tempdb 用に専用のディスク ドライブを用意し、そこに移動すると、スループットが向上し、tempdb の遅延時間が短縮される可能性があります。次のスクリプトは、tempdb データベース ファイルの格納先を T ドライブに変更する例を示しています。

ALTER DATABASE tempdb MODIFY FILE ( NAME = 'tempdev', FILENAME = 'T:\Data\tempdb.mdf' )

ALTER DATABASE tempdb MODIFY FILE ( NAME = 'temp2', FILENAME = 'T:\Data\tempdb_mssql_2.ldf' )

ALTER DATABASE tempdb MODIFY FILE ( NAME = 'templog', FILENAME = 'T:\Log\templog.ldf' )

GO

tempdb は、インスタンスの起動時に作成されるため、インスタンスを再起動すると新しい場所にファイルが配置されます。

ワン ポイント Azure 仮想マシンの D ドライブは、永続的ではないため、仮想マシンが、別のホストに移動すると、その内容とアクセス許可が失われます。これは、ホストの障害、または、仮想マシンのサイズ変更操作時に発生する可能性があります。そのため、D ドライブに、tempdb を格納するフォルダーを作成し、そこに tempdb ファイルを格納する場合は、システム起動時に実行されるスケジュール タスクを構成し、フォルダーの再作成と必要な権限の再割り当てが必要になります。この設定の詳細については、SQL Server のブログ記事 「Using SSDs in Azure VMs to store SQL Server TempDB and Buffer Pool Extensions」 を参照してください。

また、SQL Server へのワークロードにより tempdb が自動拡張する場合、あらかじめ、初期サイズを大きく設定しておくことをお勧めします。次のスクリプトは、tempdb データベース ファイルの初期サイズを変更する例を示しています。

ALTER DATABASE tempdb MODIFY FILE ( NAME = 'tempdev', SIZE = 10240MB )

ALTER DATABASE tempdb MODIFY FILE ( NAME = 'temp2', SIZE = 10240MB )

ALTER DATABASE tempdb MODIFY FILE ( NAME = 'templog', SIZE = 5200MB )

GO

注意事項として、tempdb データベース ファイルの初期サイズをある程度大きな値にすると、ファイルが初期化されるまで待たされることになるということです。このため、ローカル セキュリティ ポリシー (secpol.msc) で 「ファイルの瞬時初期化」 を SQL Server サービスのサービスアカウントに設定しておくことで、ファイルの初期化操作を瞬時に完了するように構成しておきます。

オンプレミスから IaaS へのデータベース移行

- 57 -

既定の仮想アカウントの場合、「NT Service\MSSQLSERVER」 を追加しておきます。

データベースの移行

オンプレミスに設置された SQL Server インスタンスのデータベースを Azure 仮想マシンで稼働する SQL Server インスタンスに移行する場合、最も簡単な方法としては、第 2 章で紹介した Microsoft Data Migration Assistant を使用して、共有フォルダーを介したデータベースのバックアップ、コピー、復元操作の実行です。ただし、このツールは、Azure 仮想マシンが配置されている仮想ネットワークとオンプレミス間でサイト間接続が構成されている必要があります。

オンプレミスに対するサイト間接続がない場合でも、Azure Blob ストレージを介すことで、データベースのバックアップを Azure 仮想マシンに復元することができます。

以降では、これらの手順を説明します。

オンプレミスから IaaS へのデータベース移行

- 58 -

3.3.1 オンプレミスに対するサイト間接続がある場合

第 2 章では、データベース移行に伴う問題点を Microsoft Data Migration Assistant (DMA) を使用して検出し、アセスメント レポートを作成する手順を説明しました。DMA は、SQL Server のデータベースを移行するウィザード機能も提供します。

この機能を使用するには、あらかじめ移行元と移行先のローカルに共有フォルダーを作成し、SQL Server インスタンスと操作をする管理者へのアクセス許可を設定した後、DMA を起動し、Migration プロジェクトを作成します。また、移行先として、「SQL Server on Azure Virtual Machines」 を選択してください。

SQL Server のサービス アカウントとして、既定で構成される仮想アカウントでは、ネットワークにあるリソースへのアクセスを許可できないことに注意してください。その場合、データベースのバックアップは、移行元に作成した共有フォルダーに保存し、データベースの復元は、移行先に作成した共有フォルダーから行われるように構成します。

この構成は、「Copy the database backups to a different target servers for backup operation」 チェックボックスを選

オンプレミスから IaaS へのデータベース移行

- 59 -

択することで可能です。この設定により、移行元の共有フォルダーから移行先の共有フォルダーへのコピー操作は、Microsoft Data Migration Assistant を起動した管理者の権限が使用されます。

また、このツールは、移行するデータベースに作成されたデータベース ユーザーに関連付くログインの移行機能も提供しています。

ローカル ユーザー アカウントに関連付く Windows 認証ログインと特殊なサーバー プリンシパル以外は移行可能です。実行結果を確認するには、[Export report] をクリックしてください。また、エラーが発生した場合、C:\Users\<ユーザー名>\AppData\Local\DataMigrationAssistant の下のエラーログを参照してください。

オンプレミスから IaaS へのデータベース移行

- 60 -

3.3.2 オンプレミスに対するサイト間接続がない場合

オンプレミスに対するサイト間接続がない場合は、バックアップの保存先として、共有フォルダーの代わりに、Azure Blob ストレージを使用することができます。 この場合、Microsoft Data Migration Assistant は、使用できないため、手動で移行操作を実行します。 SQL Server 2012 SP1 CU2 以降、データベースのバックアップを単一のページ Blob に格納できるようになりました。この機能は、SQL Server 2014 までは、Blob へのアクセスにストレージ アクセス キーを必要としていました。また、バックアップの格納先が、単一のページ Blob の場合、最大サイズが 1TB に制限されます。 SQL Server 2016 以降、SAS トークンを使用することで、複数のブロック Blob にアクセス可能になり、複数のブロック Blob をストライプ化してバックアップが可能なため、より大きなファイルを高速に復元することができるようになりました。 SAS トークンを使用することで、ストレージ アクセス キーを公開する必要がなく、必要最小限の権限を有効期限付きで割り当てることができ、よりセキュアな運用が実現できます。

3.3.3 移行対象のデータベース バックアップを Blob コンテナーにアップロード

BLOB サービスに、あらかじめ データベースのバックアップを保存するためのコンテナーを作成しておき、Azure ポータルから、そのコンテナーにデータベースのバックアップをアップロードします。

ワン ポイント BLOB ストレージに作成したコンテナーには、次の URL を使用してアクセスすることができます。

https://<ストレージアカウント名>.blob.core.windows.net/<コンテナ名>

オンプレミスから IaaS へのデータベース移行

- 61 -

3.3.4 共有アクセス署名 (SAS) トークンの生成

ストレージ アカウント キーを共有する代わりに、共有アクセス署名 (Shared Access Signature:SAS) を使用すると、ストレージ アカウント内のリソースへの委任アクセスが可能になります。共有アクセス署名 (SAS) トークンは、ストレージ アカウントの [Shared Access Signature] ページで [SAS の生成] ボタンをクリックして生成することができます。

注意点は、設定される既定の有効期限が UTC 時間であることです。日本時間で設置する場合、タイムゾーンを 「(UTC+09:00) 大阪、札幌、東京」 に変更してください。

3.3.5 Azure Blob ストレージから URL 指定でのデータベース復元

SAS トークンを使用して、Azure Blob ストレージから URL 指定でデータベースを復元するには、事前に SQL Server に資格情報 (CREDENTIAL) を作成しておく必要があります。SQL Server の資格情報は、SQL Server の外部にあるリソースへの接続に必要な認証情報を保存するために使用されるオブジェクトです。

資格情報には、バックアップを格納しているコンテナーの URL と SAS トークンが保存しておく必要があります。SAS トークンに関連付く資格情報を作成するための構文は、次のようになります。

CREATE CREDENTIAL [https://<ストレージアカウント名>.blob.core.windows.net/<コンテナー名>]

WITH IDENTITY='SHARED ACCESS SIGNATURE',

SECRET = '<SAS トークン>'

資格情報名が、バックアップを格納しているコンテナーの URL になります。なお、SECRET 句に指定する SAS トークンは、Azure ポータルで生成された SAS トークンの先頭から 「?」 を除外した文字列を貼り付ける必要があります。次のスクリプトは、資格情報を作成する例を示しています。

CREATE CREDENTIAL [https://gotoazuresa1.blob.core.windows.net/backup] WITH IDENTITY='SHARED ACCESS SIGNATURE', SECRET = 'sv=2018-03-28&ss=b&srt=sco&sp=rwdlac&se=2019-03-04T08:57:01Z&st=2019-03-04T00:57:01Z &spr=https&sig=YV%2FBweliBXEcIyBo6hjj8uUP7tFlcjab8Np3G4O23xc%3D'

オンプレミスから IaaS へのデータベース移行

- 62 -

SAS トークンを関連付けた資格情報を作成したら、以下の RESTORE DATABASE ステートメント構文で SAS トークンを使用して、Azure Blob ストレージから URL 指定でデータベースを復元することができます。

RESTORE DATABASE <データベース名> FROM URL = N'https://<ストレージ アカウント名>.blob.core.windows.net/<コンテナー名>/<blob 名>' WITH MOVE <データ ファイル論理名> TO <データ ファイル パス> ,MOVE <トランザクション ログ ファイル論理名> TO <トランザクション ログ ファイル パス>

データベースのサイズが大きい場合、データベースの復元に時間がかかる場合があります。その場合は、次のスクリプトを実行して、データベース復元の進捗状況を確認することができます。

SELECT session_id AS SPID , command , a.text AS Query , start_time , percent_complete , dateadd(second,estimated_completion_time/1000, getdate()) AS estimated_completion_time FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a WHERE r.command in ('BACKUP DATABASE','RESTORE DATABASE')

3.3.6 データベース移行後の作業

データベース移行後に行うべき作業としては、以下があります。 説明 データベースの所有者の設定 所有者が空、または、以前の環境のローカル ユーザーアカウントの場合、 「UNSAFE」、または 「EXTERNAL」

権限の SQL CLR オブジェクトが動作しない、また、データベース ダイアグラムの作成が行えない

データベース互換性レベルの変更 互換性レベルに依存する機能を使用する場合、適切なデータベース互換性レベルに変更しておく

統計情報の更新 クエリ パフォーマンスを最適化するため、sp_updatestats ストアド プロシージャなどですべてのデータベース上で統計を更新する

フルテキスト インデックスの再構築 フルテキスト インデックスを使用している場合、カタログを再構築し、インデックス作成を開始する

完全バックアップ バージョンアップ後の最新の状態を取得

接続情報の変更 データベースに接続するアプリケーションの接続情報を更新する データベースに接続するサービス (SSAS データベース、SSRS レポート、SSIS パッケージなど) の接続情報を更新する データベースに接続する SQL Server Agent ジョブの接続情報を更新する

サービス再開後、異常がないことを監視

パフォーマンス カウンターのモニタリング イベント ログ、SQL Server ログの確認 クライアント アプリケーションのスループット

オンプレミスから IaaS へのデータベース移行

- 63 -

インスタンス レベル オブジェクトの移行

データベースのバックアップ、復元操作によるデータベースの移行では、移行先に復元されたデータベースのみの移行になります。master や msdb システム データ ベースに格納されるインスタンス レベルのオブジェクトは、個々に移行する必要があるものを確認して、手動で移行する必要があります。master や msdb システム データ ベースに格納される主要なインスタンス レベルのオブジェクトには、以下があります。これらの多くは、SQL Server Management Studio のスクリプト生成機能を使用して、以降元のオブジェクトを T-SQL スクリプト化して、移行先に再作成することで、移行することができます。

スクリプト生成機能が対応していないオブジェクトについては、下表に代替手段を記載しましたので参考にしてください。

なお、master システム データベースに含まれるログインは、スクリプト生成機能を使用して、移行先にログインを再作成しても、データベースに接続できない状況が発生する場合がありますので、ログインの移行で必要になる作業を以下に記載します。

オンプレミスから IaaS へのデータベース移行

- 64 -

3.4.1 スクリプト生成機能によるログインの移行

SQL Server Management Studio で移行対象のログインをスクリプト化する場合、最初に [表示] メニューで [オブジェクト エクスプローラーの詳細] を選択して、詳細ページを表示し、オブジェクト エクスプローラーのノードで、[ログイン] を選択して表示されるログイン リストで Ctrl キーを押しながら、移行対象を複数選択して、右クリックします。ここで表示されるメニューから [ログインをスクリプト化] ⇒ [新規作成] ⇒ [新しいクエリ エディター ウィンドウ] を選択します。

この操作により次のようなスクリプトが生成されます。

USE [master]

GO

/* For security reasons the login is created disabled and with a random password. */

/****** Object: Login [db_Login] Script Date: 2018/04/15 11:49:02 ******/

CREATE LOGIN [db_Login] WITH PASSWORD=N'lWJcvgW4+iPOdN7S/tApDRX4JohzIh6oPlFD/adkLto=', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[日本語], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON

GO

ALTER LOGIN [db_Login] DISABLE

GO

/* For security reasons the login is created disabled and with a random password. */

/****** Object: Login [dw_Login] Script Date: 2018/04/15 11:49:02 ******/

CREATE LOGIN [dw_Login] WITH PASSWORD=N'B8HtFITQimzdAzEQb4sxFKshC+Kcg5iFcT9MWmhTvHI=', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[日本語], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON

GO

ALTER LOGIN [dw_Login] DISABLE

GO

EXEC sys.sp_addsrvrolemember @loginame = N'dw_Login', @rolename = N'bulkadmin'

GO

オンプレミスから IaaS へのデータベース移行

- 65 -

生成されたスクリプトを確認すると、スクリプトの最後にある sp_addsrvrolemember ストアド プロシージャにより、固定サーバー ロールのメンバーシップも移行されることがわかります。しかしながら、SQL Server 認証ログインは、パスワードがランダムな値に再設定され、作成されたログインは無効化された状態になるように記述されています。また、ログインは、通常、データベースの中に作成されるデータベース ユーザーに関連付けられている必要があります。内部的な SID が一致している必要があります。ですので、移行先で、このスクリプトを実行してログインを作成した場合、追加で以下の作業を行う必要があります。

パスワードの再設定 ログインの有効化 ログインとデータベースユーザー間の SID 値の不整合の検出と修正

パスワードの再設定は、以下の T-SQL 構文を使用します。

USE master

ALTER LOGIN <ログイン名>

WITH PASSWORD=N'<新しいパスワード>'

ログインの有効化は、以下の T-SQL 構文を使用します。

USE master

ALTER LOGIN <ログイン名> ENABLE'

SQL Server のログインに関連付けられていないデータベース ユーザーのことを 「孤立ユーザー」 と呼んでいますが、孤立ユーザーの検出は、以下のスクリプトにより、実行できます。

USE <ユーザー データベース名>

EXEC sp_change_users_login @Action='Report

データベース ユーザーの調査のため、予め対象のユーザー データベースに接続する必要があります。

ここで検出された孤立ユーザーを解消するには、次の T-SQL 構文を使用します。

USE <ユーザー データベース名>

ALTER USER <データベース ユーザー名>

WITH LOGIN = <ログイン名>

本書では、ログインの移行方法について、記載していますが、その他のインスタンス レベル オブジェクトの移行方法については、「SQL Server 2016 実践シリーズ No.1 SQL Server 2016 への移行とアップグレードの実践」 の Step 5 に記載されている内容を参考にしてください。オンプレミス内での SQL Server 2016 への移行方法が記載されていますが、オンプレミスから IaaS 環境の SQL Server 2017 への移行でも同様の手順で行うことができます。

Azure SQL Database へのデータベース移行

- 66 -

4. Azure SQL Database へのデータベース移行

Azure SQL Database は、データベース管理者の負荷を低減できる SQL Server との互換性が高いリレーショナル データベースエンジンのための PaaS サービスです。本章では、オンプレミスで運用している SQL Server を Azure SQL Database に移行する手順を説明します。最初に、論理サーバーを作成します。

論理サーバーの作成

論理サーバーは、Azure SQL Database、Azure SQL Elastic Database Pool、および、Azure SQL Data Warehouse として作成されるデータベースへのアクセスを提供する接続ポイントになります。論理サーバーは、デプロイ時に指定された地域に作成されますが、論理サーバーに作成されるデータベースは、すべて、論理サーバーと同じ地域に作成されることになります。

論理サーバーに割り当てられた DTU 値、および論理コア数の範囲で、ユーザー データベースを複数作成することができます。Azure SQL Server 論理サーバーが消費している DTU 値、および論理コア数は、論理サーバーの [DTU クォータ] ページで確認できます。

Azure SQL Database へのデータベース移行

- 67 -

論理サーバーを作成するには、Azure ポータルの画面左のハブ メニューで、[リソースの作成] を選択し、Azure Market Place を検索するためのテキストボックスに 「Logical Server」 と入力して Enter キーを押します。

この操作で、Marketplace の [すべて] ブレードにリストされる [SQL サーバー (論理サーバー)] を選択して Enter キーを押します。

[SQL サーバー (論理サーバー)] が表示されるので、[作成] をクリックして、論理サーバーの設定を開始します。

Azure SQL Database へのデータベース移行

- 68 -

SQL サーバー (論理サーバー) のサーバー名は、Azure 内で一意な名前を入力する必要があります。論理サーバーにアクセスするには、ここで入力したサーバー名に 「database.windows.net」 というサブドメイン名を付加してアクセスします。 SQL Server 認証ログインで、論理サーバーの管理者アカウントが作成されます。Azure SQL Database でサポートされる認証モードには、「SQL Server 認証」 と 「Azure Active Directory 認証」 がありますが、Azure Active Directory 認証の管理者アカウントは、論理サーバーのデプロイ後に設定できます。なお、論理サーバーは、仮想ネットワーク内には配置できません。

Azure SQL Database へのデータベース移行

- 69 -

セキュリティの構成

論理サーバーのデプロイが完了したら、データベースへのアクセスを制限し、不正アクセスを監視できるようにするため、データベース移行の前に、次のセキュリティ構成を行うことをお勧めします。

ファイアウォール規則と仮想ネットワーク規則の構成 監査と脅威検出

4.2.1 ファイアウォール規則と仮想ネットワーク規則の構成

論理サーバーは、TCP ポート番号 1433 を使用して接続します。既定の構成では、Azure データセンター外部からの論理サーバーに対するアクセスは、すべて遮断されていますが、Azure データセンター内部からの論理サーバーに対するクセスはすべて許可されています。

Azure データセンター内部からの論理サーバーに対するアクセスを禁止するには、論理サーバーの [ファイアウォールと仮想ネットワーク] ブレードの [Azure サービスへのアクセスを許可] を 「オフ」 に設定します。

ファイアウォール規則を構成することで、Azure プライベート ネットワークの外部にある固定化された IP アドレスに対して、論理サーバーへの接続を許可することができます。ファイアウォール規則を構成するには、論理サーバーの [ファイアウォールと仮想ネットワーク] ブレードで、アクセスを許可する クライアント IP アドレスを IPv4 の形式で入力して、保存します。

Azure SQL Database へのデータベース移行

- 70 -

現在、Azure ポータルに接続しているクライアント PC からのアクセスを許可する場合は、[クライアント IP の追加] をクリックして、ファイアウォール規則を設定することができます。

この設定を行うとクライアント PC で、SQL Server Management Studio を起動して、[サーバーへの接続] の [サーバー名]に、「<論理サーバー名>.database.windows.net」 と入力して、ログイン名に、デプロイ時に指定した SQL Server 認証の管理者アカウントを指定して、作成した論理サーバーに接続することができます。

[Azure サービスへのアクセスを許可] を 「オフ」 に設定した場合、すべての Azure 仮想マシンからアクセスが行えなくなりますが、2018 年 2 月より、仮想ネットワークのサブネットから、論理サーバーへのアクセスを許可する仮想ネットワーク規則を構成することで、特定の仮想ネットワークからのアクセスを許可できるようになりました。

仮想ネットワーク規則を構成するには、最初に、仮想ネットワーク側で、論理サーバーへのアクセスを許可する仮想マシンが配置されたサブネットに対し、「Microsoft.sql」 サービス エンドポイントを有効化しておく必要があります。

Azure SQL Database へのデータベース移行

- 71 -

2019 年 3 月現在、サービス エンドポイントは、以下の 8 種類が構成可能です。

Microsoft.AzureActiveDirectory Microsoft.AzureCosmosDB Microsoft.ContainerRegistry Microsoft.EventHub Microsoft.KeyVault Microsoft.ServiceBus Microsoft.sql Microsoft.Storage

仮想ネットワーク規則を構成するには、論理サーバーの [ファイアウォールと仮想ネットワーク] ブレードを開いて、[既存の仮想ネットワークを追加] をクリックします。[作成/更新] が開くので、ここで、Microsoft.sql サービス エンドポイントを追加した仮想ネットワークのサブネット名を設定します。

なお、[Azure サービスへのアクセスを許可] を 「オフ」 にした場合、Azure SQL Database の下表の機能が制限されるため、代替機能を使用する必要があります。

Azure SQL Database へのデータベース移行

- 72 -

4.2.2 監査と脅威の検出

論理サーバーは、サーバー レベルで、監査や脅威の検出を構成することができます。「監査」 を設定することで、データベースで “どのような処理” が “だれ” によって “いつ” 行われたのかを確認できるようになり、セキュリティ コンプライアンス要件への対応が可能になります。

また、「脅威の検出」 を有効化することで、SQL インジェクションなどのデータベースに対する潜在的なセキュリティ脅威を示す異常なデータベース アクティビティを検出し、指定されたメール アドレスにアラートを送信することができるようになります。[監査ログ] ブレードで、アラートの詳細を確認することもできます。 「監査」 の設定は、論理サーバー、または、データベースの [監査] ブレードから監査ログを [オン] にして、監査ログの保存先を指定するだけです。論理サーバーで監査を有効化した場合、データベースでの設定にかかわらず、データベース レベルでは、常に監査が適用されます。

収集された監査ログを参照するには、論理サーバーに作成したデータベースの [監査] ブレードで、[監査ログの表示] をクリックします。

Azure SQL Database へのデータベース移行

- 73 -

監査ログは、[フィルター] をクリックして、時刻 (UTC 時間) でフィルターして参照することができます。

「脅威の検出」 の設定は、論理サーバーの [Advenced Data Security] ブレードから行います。

Azure SQL Database へのデータベース移行

- 74 -

「脅威の検出」 では、SQL インジェクションの可能性や脆弱性、通常とは異なる場所からのアクセス、資格情報に対するブルート フォース攻撃の検出など、脅威の種類を構成することも可能です。

検出された脅威のアラートは、電子メールで管理者に送信されます。「脅威の検出」 の費用は論理サーバーごとに毎月 1680 JPY です。これには、データの検出と分類、脆弱性評価、Advanced Threat Protection が含まれます。また、現在では、最初の 60 日間、無料で試用版を使用することができます。

既定では、監査や脅威の検出のログの保有期間は無期限で構成されますが、保存期限の上限を日数で設定することもできます。

Azure SQL Database へのデータベース移行

- 75 -

SQL Server から SQL Database へのデータベース配置

オンプレミスに設置された SQL Server インスタンスのデータベースを Azure SQL Database に移行する場合、SQL Server で取得したデータベース バックアップは、Azure SQL Database に、復元できないことに注意してください。

Azure SQL Database へのデータベース移行でも、第 2 章で紹介した Microsoft Data Migration Assistant (DMA) を使用することができますが、内部的には、スクリプトでオブジェクトを作成した後、一括コピー操作でデータを転送します。別の方法として、データベースを bacpac 形式のファイルに変換してエクスポートし、移行先の論理サーバーにインポートすることで、移行することも可能です。このセクションでは、この 2 種類の方法を説明します。

4.3.1 Microsoft Data Migration Assistant による PaaS へのデータベース移行

DMA でのデータベース移行では、移行元にあるデータベース オブジェクトがすべてスクリプト化され、移行先のデータベースに対し、スクリプトを実行して、テーブルを用意します。そのあと、一括コピー操作でデータが直接、移行先のテーブルにロードします。そのため、移行先に、空のテーブルをあらかじめ作成しておく必要があります。

Azure SQL Database へのデータベース移行手順をまとめると以下のようになります。

(1). 移行先の Azure SQL 論理サーバーに空のデータベースを作成する (2). Microsoft Data Migration Assistant を起動し、移行元のインスタンスに接続する (3). 移行先の Azure SQL 論理サーバーに接続する (4). データベースを移行 (スクリプトによるスキーマ生成と一括コピー) する (5). ログインの有効化とパスワードを再設定する

この手順を実行する前に、事前に論理サーバーのファイアウォール規則で DMA を実行する PC の IP アドレスからの接続を許可しておいてください。

Azure SQL Database へのデータベース移行

- 76 -

4.3.2 移行先の Azure SQL 論理サーバーに空のデータベースを作成する

空のデータベースを作成するには、Azure ポータルから [リソースの作成] ⇒ [データベース] ⇒ [SQL Database] を選択して、[SQL データベースの作成] ブレードの [基本] タブで、デプロイする内容を設定します。

さらに、[SQL データベースの作成] ブレードの [追加設定] タブを設定して、[確認および作成] をクリックします。

Azure SQL Database へのデータベース移行

- 77 -

Azure SQL Database は、Azure 仮想マシンとは異なり、データベース レベルで照合順序を設定します。なお、パフォーマンスレベルは、DTU ベースと vCore ベースの選択が行えます。

DTU ベースのパフォーマンス レベルでは、Basic / Standard / Premium から選択可能です。

DTU は、データベース スループット ユニットの略称で、設定された DTU 値に対応するデータベース パフォーマンスが保証されるように提供されるリソース (コンピューティング、ストレージ、および IO リソース) の量が調整されます。 DTU は、さまざまなパフォーマンス レベルとサービス層の Azure SQL Database 間のリソースの相対量を理解するために役立ちます。データベースの DTU 値を 2 倍にすると、そのデータベースが利用できるリソースを 2 倍にするのと同様の効果になります。各サービス レベルの違いについては下表を参照してください。

DTU ベースで構成した場合、データベースのパフォーマンス監視では、消費している DTU 値をモニタリングすることで、運用状況が把握でき、DTU が不足している場合は、スケール アップすればよいため、運用が容易になります。しかし、データベース移行時に、DTU の初期値を決める必要があります。

Microsoft は、DTU の見積もりを行うためのツールとして、Azure SQL Database DTU Calculator を提供しています。

Azure SQL Database へのデータベース移行

- 78 -

英語のサイトですが、利用方法は簡単で、このサイトで [Download Command Line Utility] をクリックして、パフォーマンスデータ収集のためのユーティリティをダウンロードして、SQL Server を実行しているサーバー環境で 1 時間程度実行します。パフォーマンス データは、C:\Temp フォルダーに CSV ファイルとして出力されますので、このファイルを Azure SQL Database DTU Calculator にアップロードして、SQL Server を実行しているサーバー環境の論理コア数を入力して、[Calculate] ボタンをクリックするだけです。これで、SQL Database に移行したとき、どれくらいの DTU 値が必要になるかを算出することができます。

Azure SQL Database は、仮想マシンと同じように vCore とストレージ サイズで、パフォーマンスと価格レベルを選択することもできます。現在、「第 4 世代」 と 「第 5 世代」 のコンピューティング世代を選択することができ、サービス レベルは、汎用目的 / ビジネス クリティカル / ハイパースケール (プレビュー) の 3 種類から選択可能です。

第 4 世代では、Intel XEON® E5-2673 v3 (Haswell) 2.4 GHz プロセッサをベースとしたサーバーが使用されています。第 4 世代の各サービス レベルの違いについては、下表を参照してください。

第 5 世代では、Intel XEON® E5-2673 v4 (Broadwell) 2.3 GHz プロセッサをベースとしたサーバーが使用されています。第 5 世代の各サービス レベルの違いについては、下表を参照してください。

Azure SQL Database へのデータベース移行

- 79 -

なお、DTU ベースの場合、Azure ハイブリッド特典を適用することができませんが、vCore とストレージ サイズ ベースのサービス階層では、[お金を節約] オプションで [はい] を選択することで、Azure ハイブリッド特典を適用することができます。

4.3.3 Microsoft Data Migration Assistant を起動し、移行元のインスタンスに接続する

移行先の Azure SQL 論理サーバーに空のデータベースを作成したら、DMA を起動し、Migration プロジェクトを作成します。移行先に 「Azure SQL Database」 を選択してください。

DMA による Azure SQL Database へのデータベースの移行は、対象データベースを複数選択することができないため、1 個ずつ移行作業を行う必要があります。

Azure SQL Database へのデータベース移行

- 80 -

4.3.4 移行先の Azure SQL 論理サーバーに接続する

移行先の Azure SQL 論理サーバーには、SQL Server 認証、または、Azure Active Directory 認証で接続します。移行先の空のデータベースを選択します。

4.3.5 データベースを移行 (スクリプトによるスキーマ生成と一括コピー) する

移行対象のオブジェクトがリストされるので、移行対象をすべて選択して、[Generate SQL script] をクリックすることで、オブジェクトを作成するための T-SQL スクリプトが生成されます。

Azure SQL Database へのデータベース移行

- 81 -

生成された SQL スクリプトを確認して、[Deploy schema] をクリックすると移行先のデータベースで、T-SQL スクリプトが実行されます。互換性のないオブジェクトの定義が含まれているとエラーが発生しますので、修正して再実行してください。

スキーマ生成が完了した後 [Migrate data] をクリックするとデータを転送するテーブルのリストが表示されるので、移行する必要があるテーブルをすべて選択して、[Start data migration] をクリックすることで、データの一括コピー操作が開始されます。

Azure SQL Database へのデータベース移行

- 82 -

[Migrate Data] ページでデータ移行の進捗状況を確認することができます。

4.3.6 ログインの有効化とパスワードを再設定する

DMA を使用した移行では、データベースに作成されているデータベース ユーザーに関連付くログインが論理サーバーに作成されますが、これらのログインは、無効化されています。また、パスワードもランダム値になるため修正が必要です。

DMA で移行されたログインを使用する場合、以下の作業を行います。

パスワードの再設定 ログインの有効化

パスワードの再設定は、以下の T-SQL 構文を使用します。

USE master

ALTER LOGIN <ログイン名>

WITH PASSWORD=N'<新しいパスワード>'

Azure SQL Database へのデータベース移行

- 83 -

ログインの有効化は、以下の T-SQL 構文を使用します。

USE master

ALTER LOGIN <ログイン名> ENABLE'

4.3.7 bacpac 形式へのエクスポート/インポートによる PaaS へのデータベース移行

bacpac 形式はデータ層アプリケーション (DAC) パッケージ形式の拡張で標準の DAC パッケージに含まれるテーブル、ビュー、ログインを含むインスタンス オブジェクトなどユーザー データベースに関連付けられたすべての SQL Server オブジェクトを定義する論理的なデータベース管理エンティティに加えて、JavaScript Object Notation (JSON) でエンコードされたテーブル データも含まれています。

ここでは、移行元のデータベースを bacpac ファイルとして、エクスポートした後、Azure SQL Database にインポートする手順を説明します。

SQL Server Management Studio を起動し、移行元の SQL Server インスタンスと移行先の Azure SQL Server 論理サーバーに接続して、移行元のデータベースを右クリックします。表示されるメニューで [タスク] ⇒ [Microsoft Azure SQL データベースへのデータベースの配置] を選択します。

Azure SQL Database へのデータベース移行

- 84 -

データベース配置ウィザードが起動するので、[ターゲット接続の指定] の [サーバー接続] で、データベースを移行する Azure SQL Server 論理サーバーに接続します。ここで、DTU ベースの価格レベルを設定することができます。価格レベルは、データベース移行後でも変更することが可能です。

bacpac 形式のファイルは、ローカルの Users フォルダーに保存されます。保存先は、任意の場所に変更できます。十分なサイズがある場所を指定してください。

[概要] ページで [完了] をクリックするとデータベースの移行が開始します。

Azure SQL Database へのデータベース移行

- 85 -

データベースのエクスポート/インポート操作を使用した場合、データベース ユーザーに関連付く SQL Server 認証のログインは、パスワードなしでエクスポートされます。移行されたログインを使用する場合、以下の作業を行います。

パスワードの再設定 ログインの有効化

パスワードの再設定は、以下の T-SQL 構文を使用します。

USE master

ALTER LOGIN <ログイン名>

WITH PASSWORD=N'<新しいパスワード>'

ログインの有効化は、以下の T-SQL 構文を使用します。

USE master

ALTER LOGIN <ログイン名> ENABLE'

Azure SQL Database Managed Instance へのデータベース移行

- 86 -

5. Azure SQL Database Managed Instance へのデータベース移行

Azure SQL Database Managed Instance は、SQL Server データベース エンジン互換のフルマネージド インスタンスサービスで、オンプレミスや IaaS 環境で稼働する SQL Server Enterprise Edition に対して、高い互換性を備えています。このサービスは、仮想マシンと同じように Azure 仮想ネットワーク (VNet) の専用サブネットに配置します。パブリック IP アドレスは持てないため、完全にグローバル インターネットから分離して運用することができます。

Managed Instance により、既存の SQL Server の顧客は、アプリケーションとデータベースに対する最小限の変更で、オンプレミスからクラウドに移行 (リフト アンド シフト) できます。また、Azure SQL Database シングル データベースと同じようにフルマネージド サービスとして提供されているため、修正プログラムの適用、バージョン更新、バックアップ、構内の高可用性構成、監査と脅威の検出といった管理タスクを自動化し、運用コストを低減できます。

本章ではオンプレミスで運用している SQL Server を Managed Instance に移行する手順を説明します。

Azure SQL Database Managed Instance をデプロイするためのネットワーク構成

Managed Instance を作成するには、以下の要件に準拠する Azure 仮想ネットワーク (VNet) 内の専用サブネットが必要です。

16 以上 (32 以上が推奨される) 256 までの IP アドレスを保持 (/24 ~ /28 でマスク) ほかのリソースが配置されていない サービス エンドポイントを設定しない デフォルト ルート 「0.0.0.0/0」 がインターネットへの経路を持つルート テーブルの構成

専用サブネットには、Managed Instance 以外のリソースを含むサブネットでマネージド インスタンスを作成したり、後からサブネット内に他のリソースを追加したりすることはできないことに注意してください。

このドキュメントでは、以下のようなサブネットが構成された Azure-Vnet という名前の Azure 仮想ネットワークが作成されていることを前提に説明します。

Managed Instance の配置先として、MI-Subnet (10.10.1.64/27) を使用します。なお、Managed Instance の配置に必要となるルート テーブルとネットワーク セキュリティ グループ (NSG) は、インスタンスのデプロイ時に選択されるオプションにより自動生成されます。

ネットワーク構成の詳細については、「Azure SQL Database Managed Instance の接続アーキテクチャ」 を参照してください。

Azure SQL Database Managed Instance へのデータベース移行

- 87 -

Azure SQL Database Managed Instance の作成

Azure SQL Database Managed Instance を作成するには、Azure ポータルの画面左のハブ メニューで、[リソースの作成] ⇒ [データベース] ⇒ [Azure SQL Managed Instance] を選択します。

Managed Instance の管理者も Azure SQL Database 論理サーバーと同じように、SQL Server 認証ログインとして作成されます。Managed Instance は、仮想ネットワークの専用サブネットに配置しなければならないことと、インスタンスレベルで照合順序を設定することが、Azure SQL Database 論理サーバーのデプロイと異なる点になります。

Azure SQL Database Managed Instance へのデータベース移行

- 88 -

既定で選択状態になっている [マネージド インスタンスのサブネットの準備] オプションによりサブネットに必要なネットワークセキュリティ グループ (NSG)、ルート テーブルが自動作成されます。

Managed Instance は、vCore とストレージ サイズでのみ、パフォーマンスと価格レベルを選択することができます。現在、「第4 世代」 と 「第 5 世代」 のコンピューティング世代を選択することができ、サービス レベルは、汎用目的 / ビジネス クリティカル の 2 種類から選択可能です。 第 4 世代では、Intel XEON® E5-2673 v3 (Haswell) 2.4 GHz プロセッサをベースとしたサーバーが使用されています。第 4 世代の各サービス レベルの違いについては、下表を参照してください。

第 5 世代では、Intel XEON® E5-2673 v4 (Broadwell) 2.3 GHz プロセッサをベースとしたサーバーが使用されています。第 5 世代の各サービス レベルの違いについては、下表を参照してください。

ソフトウェア アシュアランス (SA) 付きの SQL Server ライセンスを保有している場合、[パフォーマンスの構成] の [お金を節約] で [はい] を選択することで、SQL Server 向けの Azure ハイブリッド特典を適用して、割引価格で使用することができます。

なお、Managed Instance のデプロイは、専用サブネットに初めてデプロイする場合、2 個目以降のデプロイよりも長時間かかります。デプロイの状況は対象のリソース グループの [デプロイ] ブレードから確認することができます。

完了までに 3 時間以上かかることがありますが、デプロイ中はキャンセルしないようにしてください。

Azure SQL Database Managed Instance へのデータベース移行

- 89 -

デプロイ完了、Managed Instance の [概要] ブレードに表示されるホスト名を使用することで、仮想ネットワーク内のサブネットにデプロイした仮想マシンから、最新の SQL Server Management Studio v17 を起動して、接続することができます。

デプロイ直後は、デプロイ時に設定した、SQL Server 認証のマネージド インスタンス管理者ログイン アカウントを使用して、Managed Instance に接続します。

オブジェクト エクスプローラーのツリーを展開すると Azure SQL Database よりも、SQL Server に近い構成が確認できます。

Azure SQL Database Managed Instance へのデータベース移行

- 90 -

なお、オンプレミスの環境から Azure 仮想ネットワークに配置した Managed Instance に接続するには事前にオンプレミスと Azure 仮想ネットワーク間で、サイト間 VPN 、または、ExpressRoute で接続しておく必要があります。

オンプレミスと Azure 仮想ネットワーク間の接続が正常に確立しているにもかかわらず、Managed Instance への接続ができない場合、「Azure SQL Database Managed Instance の接続アーキテクチャ」 の 「必須の受信セキュリティ規則」 と「必須の送信セキュリティ規則」 に記載されたポートへの接続が許可されていることを確認してください。

ワン ポイント Azure SQL Database Managed Instance の詳細については、「Azure SQL Database Managed Instance ホワイトペーパー」 が公開されていますので、こちらのドキュメントも参考にしてください。

Azure Database Migration Service を使用したデータベースの移行

Azure Database Migration Service (Azure DMS) は、オンプレミスの SQL Server に作成された複数のデータベース ソースから Azure SQL Database Managed Instance を含む Azure データ プラットフォームへシームレスな移行を最小限のダウンタイムで実現できるように設計された、PaaS サービスで 2018 年 5 月 7 日より GA として提供されています。

データベース移行ツールとして紹介した Microsoft Data Migration Assistant では、現時点では、Managed Instance への移行のアセスメント レポートは生成可能ですが、データベース移行プロジェクトは、未サポートです。

Azure DMS を使用することで、Managed Instance へのオフライン、および、オンラインの移行作業が可能になります。Azure Database Migration Service は、ソースのデータベースとして、SQL Server 2005 から SQL Server 2017 までを選択できます。Azure DMS も Managed Instance と同じように仮想ネットワーク内に配置します。前提となるネットワーク環境は以下のとおりです。

オンプレミスからの移行の場合、オンプレミスに対するサイト間 VPN 、または、ExpressRoute 接続 Managed Instance 専用サブネットを構成した VNET が外部の場合 VNET 間接続、または ピアリング接続 DMS VNET の NSG 規則で、TCP ポート 443、53、9354、445、12000 を開く Managed Instance VNET の NSG 規則で SQL Server のポート (既定では 1433) を開く 移行元のデータベース バックアップに使用できるネットワーク共有と BLOB ストレージ コンテナーを作成する SQL Server インスタンスを実行しているサービス アカウントがネットワーク共有に書き込み特権を持っていること

Azure SQL Database Managed Instance へのデータベース移行

- 91 -

Azure Database Migration Service を使用するには、サービスをデプロイする前に、使用しているサブスクリプションにMicrosoft .DataMigration リソース プロバイダーを登録しておく必要があります。

リソース プロバイダーの登録は、サブスクリプションの [リソース プロバイダー] ブレードのリストから、Microsoft .DataMigration リソース プロバイダーの [登録] をクリックします。

Azure Database Migration Service の作成

Azure Database Migration Service をデプロイするには、Azure ポータルの画面左のハブ メニューで、[リソースの作成] を選択し、Azure Market Place を検索するテキストボックスに 「Database Migration」 と入力して Enter キーを押します。

Azure SQL Database Managed Instance へのデータベース移行

- 92 -

この操作で、[Everything] ブレードに表示される [Azure Database Migration サービス] を選択して Enter キーを押します。

Azure Database Migration サービスをデプロイするには、[Azure Database Migration サービス] ブレードが表示されたら、[作成] をクリックします。

Azure SQL Database Managed Instance へのデータベース移行

- 93 -

[移行サービスの作成] ブレードで、サービス名、配置先として使用するリソース グループ、仮想ネットワークのサブネットを設定します。[価格レベル] の SKU は、[標準] または、[Premium] から選択することができます。いずれも 4 個までの vCore を選択することができますが、オンラインでの継続的なデータベース移行が必要な場合、Premium SKU を選択する必要があります。

2019 年 3 月時点で、標準 SKU は、無料で使用可能です。また、Premium SKU でも、Azure Database Migration Service 作成後、6 か月間は無料での使用が可能です。

Azure Database Migration Service によるデータベースの移行

Azure Database Migration Service (DMS) によるデータベースの移行では、ソースとターゲットの種類と接続先を登録した移行プロジェクトを作成し、移行プロジェクトに対し、移行のアクティビティを作成して実行することで、データベースの移行を管理することができます。

Azure SQL Database Managed Instance へのデータベース移行

- 94 -

移行プロジェクトを作成するには、Azure Database Migration Service の [概要] ブレードで、[新しい移行プロジェクト] をクリックします。

オンプレミスの SQL Server に作成されたデータベース ソースを Managed Instance に移行するには、[新しい移行プロジェクト] の [ターゲット サーバーの種類] で 「Azure SQL Database Managed Instance」 を選択して、[アクティビティの作成と実行] をクリックします。

Azure SQL Database Managed Instance へのデータベース移行

- 95 -

この操作により移行プロジェクトを構成するためのウィザードが起動するので、移行ソースの情報を保存します。

信頼できる証明書をサーバーにインストールしていない場合は、[サーバー証明書を信頼する] を選択状態にします。信頼できる証明書がインストールされていない場合、SQL Server はインスタンスの開始時に自己署名証明書を生成します。この証明書は、クライアント接続の資格情報の暗号化に使用されます。

移行ソースの情報を保存するとき、移行ソースへの接続が検証されます。検証エラーが発生する場合、移行対象のインスタンスが稼働していること、接続に使用するポートが使用できることを確認してください。

続けて、ターゲットの接続情報を設定して、保存します。

Azure SQL Database Managed Instance へのデータベース移行

- 96 -

移行対象のデータベースを選択して、保存します。

[ログインを選択する] ページでは、ターゲットに移行する SQL Server 認証ログインを選択します。Managed Instance は、Azure SQL Database と同様に、Windows 認証は、サポートされていないため、Windows 認証ログインは、移行することができません。

Azure SQL Database Managed Instance へのデータベース移行

- 97 -

移行アクティビティを構成するウィザードの最後のページで、バックアップ ファイルを保存する共有フォルダーと Azure ストレージ Blob コンテナーへの SAS URI を設定します。

Windows ユーザーアカウントは、作成したネットワーク共有に対してフル コントロール権限を持つ Windows ユーザーを指定し、Active Directory ドメイン環境では、「<AD ドメイン名>¥<ユーザー名>」 の形式で記述します。ワークグループ環境では、「<IP アドレス>¥<ユーザー名>」 の形式で記述します。

Azure Blob サービスの SAS URL のパスには、以下の形式で記述します。

https://<ストレージ アカウント名>.blob.core.windows.net/<コンテナー名><SAS トークン>

ストレージ アカウント名とコンテナー名は、英数の小文字のみを使用することができます。バックアップ ファイルを格納するコンテナー名の記述がないと検証エラーが発生します。また、コンテナー名と SAS トークンの記述の間に 「/」 を記述すると移行アクティビティの実行時に復元エラーが発生するので注意してください。

Azure SQL Database Managed Instance へのデータベース移行

- 98 -

[移行の概要] では、[活動名] を入力して、検証オプションを選択して、設定を保存します。

[移行の概要] で [移行を実行する] をクリックすると、データベースの移行が開始します。[完了] に移行が完了したデータベースとログインの数が表示されます。

Managed Instance にデータベースが復元されると、DMS により作成されたバックアップ ファイルは削除されます。

Azure SQL Database Managed Instance へのデータベース移行

- 99 -

なお、エラーが報告された場合、Azure ポータルでエラーの詳細を表示するか、または、SQL Server のエラーログを参照することで、エラーの詳細を確認することができます。

データベースの移行アクティビティが完了したら、SQL Server Management Studio を使用して、Managed Instance に接続し、対象のデータベースとログインが移行していることを確認します。

DMS を使用した移行ではログインは、有効化され移行元で設定したパスワードが引き継がれています。

本書では、DMS を使用して、SQL Server を Managed Instance にオフラインで移行する手順を紹介しました。Managed Instance に対して、オンラインで継続的に同期させる場合は、「チュートリアル:DMS を使用して、SQL Server を Azure SQL Database マネージド インスタンスにオンラインで移行する」 を参照してください。

Microsoft Azure に関する情報の入手元

- 100 -

6. Microsoft Azure に関する情報の入手元

Microsoft Azure に関する最新の情報は、次の Web サイトから入手できます。

Azure の公式ページ(各国共通)

製品情報、価格、技術情報など、Azure に関するすべての情報への入口です。Azure をお使いのお客様は、右上の「ポータル」 をクリックすると Azure ポータルにログインすることができます。Azure ポータルでは、Azure 上で構築したアプリケーションの管理、課金状況の確認などができます。

http://azure.microsoft.com/ja-jp/

日本のお客様向けのサイト

上記サイトの内容に加え、日本のお客様用に作成されたコンテンツが満載です。

http://www.microsoft.com/ja-jp/server-cloud/azure/Explore.aspx

サポートエンジニアによるブログ サイト

よくお問い合わせをいただく技術・課金・サポートに関する内容をまとめたものです。サポートに問い合わせる前に、まずはここをご参照ください。

http://blogs.msdn.com/b/dsazurejp/

http://blogs.msdn.com/b/jpsql/ (Azure SQL データベース / Server Server)

MSDN フォーラムの Azure フォーラム

Azure に関する技術的な質問に対して、これまでの投稿から情報を入手することができます。また、自分で質問を投稿し、他のユーザーや MVP (Most Valuable Professional) からの回答を得ることが期待できます。開発者(DEVELOPER) サポート / 標準 (STANDARD) サポート契約ではカバーしていない “How To” や “仕様” に関する質問も、このフォーラムをご活用ください。

https://social.msdn.microsoft.com/Forums/ja-JP/home?category=azure

Microsoft Azure のお問合せ

- 101 -

7. Microsoft Azure のお問合せ

Microsoft Azure では、お問い合わせ内容に応じて窓口を用意しております。お問い合わせの内容に応じて各窓口をご利用ください。なお、 Premier のお客様は、Premier 窓口をご利用いただけます。

お問合せ内容 料金 窓口名 連絡方法 お問い合わせ方法 製品や機能の概要、価格、ライセンスなどの情報の収集や購入前相談

無償 Cloud Direct 電話、メール 「Cloud Direct」で検索してください。

課金、サブスクリプションに関するお問い合わせ、請求書払いへの変更、クォータ増加の依頼

無償 Microsoft Azure ポータル Azure ポータル※1 ※3

技術的なお問い合わせ 有償 Microsoft Azure ポータル※2

※1 電話窓口はありません。 ※2 有償のサポート プランが必要です。 ※3 お問い合わせ方法につきましては、以下の Blog ページをご参照ください。

サポートにお問い合わせする方法について http://blogs.msdn.com/b/dsazurejp/archive/2013/10/31/10462044.aspx

なお、Azure ポータル サイトにアクセスできない場合は、次のどちらかの方法でお問い合わせください。

窓口名 / 連絡方法 お問い合わせ方法

カスタマー インフォメーション センター 電話番号:0120-41-6755

営業時間:平日 9:00 – 17:30 窓口担当者に、「Azure について問い合わせがしたい」 とお伝えください。Azure 担当者より折り返しご連絡いたします。

Web フォーム http://azure.microsoft.com/ja-jp/support/options/

「アカウントのサイン インまたはサイン アップで問題が発生する場合」 からお問い合わせを発行してください。