SQL Azure

SQL Azureと呼ばれていたWindows Azure SQL Databaseのサービス内容合意書(SLA)では、マイクロソフトが管理できない外的要因からのデータ消失への対応は例外扱いにしています。
外的要因とは、戦争や空爆、暴動、犯罪もしくは、地震や噴火、洪水のような自然災害などです。
これらによりデータセンターがダメージを受け、レプリカやオンサイトバックアップからデータをリカバリできなくなることがあります。
現在、Windows Azure SQL Databaseはオフサイトバックアップを取得していません。

SQL Database チームは、SQL Databaseでのビジネス継続性の維持に関する素晴らしいガイドラインを提供しています。

この投稿では、他のリージョンにあるWindows Azureデータセンターで稼働しているWindows Azure SQL Databaseにオフサイトバックアップを簡単に取得する方法について説明します。
Windows Azureポータルを使用して、データ層アプリケーションロジカルバックアップ(BACPAC)を他のデータセンターにあるWindows Azure Storageへエクスポートします。

Windows Azure SQL Databaseのコピー作成

BACPACは論理バックアップで、トランザクションは考慮されません。
ユーザーがデータベースに書き込みをしている際にBACPACを取得すると、BACPACはデータ不整合が発生する可能性があります。たとえば、外部参照キーの不整合などがありえます。
そのため、最初にデータベースのコピー(Windows Azure SQL Database Copy)を作成し、作成したデータベースのコピーからエクスポートを実行する必要があります。
データベースのコピーはトランザクションが考慮されます。

  1. SQL Server Management Studioを使用してWindows Azure SQL Databaseに接続します
  2. オブジェクトエクスプローラーでエクスポートしたいデータベースを選択し、
    右クリックから「新しいクエリ」を選択します。
  3. クエリウィンドウで次のクエリを入力します。
    CREATE DATABASE <destination_database_name> AS COPY OF <source_database_name>
  4. このコマンドを実行すると、すぐに結果が返ってきます。
    しかし、Windows Azure SQL Databaseはバックグラウンドでコピーを処理しています。
    コピーの実行上状況は、sys.dm_database_copiessys.databasesビューでモニタリングすることができます。
  5. コピーが完了したら、コピーしたデータベースからBACPACを作成します。
    コピーしたデータベースには、INSERTやUPDATE、DELETEは実行しないように注意してください。

データベースコピーについては、「データベース・コピーを使用してSQL Azureデータベースをバックアップする」も参照してください。

Windows Azureポータルを使用したBACPACファイルの作成

Windows Azureポータルを使用すると、Windows Azure SQL Databaseから直接Windows Azure Storage BlobにBACPACファイルを出力することができます。

出力方法については、「管理ポータルからSQL Azureデータベースのインポート/エクスポート」を参照してください。

情報源

Prevent Data Loss from Force Majeure」をざっくりと大胆にまとめた記事です。

SQL Azure

SQL Data Sync(旧称:SQL Azure Data Sync)Preview 6がリリースされました。
このリリースでは、おもに次の2点改善されています。

  • 同期タスクと初期プロビジョニングの性能が改善されました
  • オンプレミスのデータベースとWindows Azure SQL Database間の同期性能が改善されました

新しいエージェントを、「SQL Azure Data Sync Agent Preview」からダウンロードできます。

また、すべての後続のプレビューリリースを通常のサービスアップデートの代わりに、Previewと呼称するつもりです。

情報源

SQL Data Sync Preview 6 is now live!

SQL Azure

Windows Azure SQL Database Servicesの2012年7月アップデートの内容がBlogに投稿されていたので紹介します。

SQL Data Syncを使用してFederationの参照テーブルをレプリケーションできるようになりました

09

SQL Azure Federationでは、メンバーデータベースに参照テーブルを含めることができます。
一度、SPLITで分割したメンバーデータベースに含まれる参照テーブルは互いに独立したテーブルなので、
片方を更新しても、もう片方には変更は反映されません。

その為、これまでは手動でメンバーデータベースの数だけ参照テーブルを更新する必要がありました
例えば、メンバーデータベースが30個あった場合、30回参照テーブルを更新しないと、
全ての参照テーブルに変更を反映させることができません。

2012年7月のアップデートにより、SQL Data Syncで、メンバーデータベースの参照テーブルを同期対象に設定できるようになりました。

image

上の図のように、メンバーデータベースを同期グループに登録することができます。
同期したいメンバーデータベースの参照テーブルとSQL Data Syncのハブデータベースとを同期するように設定します。

同期設定をすると、次の図のようにメンバーデータベースをすべて同期するように設定できます。

image

とは言え、制限事項もあります。

  • レプリケーション間隔は短くても5分なので、最大5分の同期遅延があります。
  • スクリプトによる同期レプリケーションの設定をすることができません。
    つまり、同期設定をしたい場合は、GUIで手で設定する必要があります。20個同期するなら20回。。。
  • 最大でも30個までしか、同期グループに設定できません。

参照テーブルで一意のIDを生成するのにIdentityプロパティを使用できるようになりました

2012年7月のアップデートで、フェデレーションメンバーの参照テーブル上でIdentityプロパティを使用できるように、制約を解除しました。
これにより、スキーマの変更を最小限に、既存のデータベースからフェデレーションへの移行ができるようになります。

参照元

Newsflash: Reference Data Management Simplified in Federations with the July 2012 Update to SQL Database! Reference Data Replication with Data Sync Service, Unique ID Generation for Reference Data and more…

SQL Azure

image

Windows Azure SQL Databaseは、インターネット上で提供されるデータベースサービスです。
セキュリティを確保するため、SQL Databaseに接続することができるIPアドレスを制限する機能として、Firewallが提供されています。

SQL Databaseがリリースされた当初から今まで提供されていたのは、SQL DetabaseサーバーレベルのFirewallでした。SQL Databaseサーバーに接続することができるIPを指定すると、SQL Databaseに含まれるすべてのデータベースに接続することができました。

これまではできなかったデータベース個別のFirewall設定ができるようになり、SQL Databaseに含まれる特定のデータベースだけにしか接続できないIPを設定することができるようになりました。

概要

image

Azure SQL Databaseに接続をする場合の挙動が、今後次のようになります。

  1. サーバーレベルのFirewallルールで許可されたIP範囲の中に、リクエスト元のIPアドレスが含まれていれば、SQL Databaseへの接続が許可されます。
  2. サーバーレベルのFirewallルールにリクエスト元のIPアドレスが含まれていない場合は、データベースレベルのFirewallルールをチェックします。リクエスト元のIPアドレスが、データベースレベルのFirewallルールで許可されたIP範囲に含まれていれば、データベースレベルのルールと適合したデータベースだけ接続が許可されます。
  3. サーバーレベルもしくはデータベースレベルのFirewallルールで許可されたIP範囲の中に、リクエスト元のIPアドレスが含まれていない場合、接続は失敗します。

データベースレベルのFirewallルール制御

今のところGUIでの制御画面が提供されていないので、設定したいデータベースに対してT-SQLクエリを発行することで設定します。

ルールの確認

select * from sys.database_firewall_rules

ルールの作成

exec sp_set_database_firewall_rule N’Example DB Setting 1′,’0.0.0.4′,’0.0.0.4′

ルールの更新

exec sp_set_database_firewall_rule N’Example DB Setting 1′,’0.0.0.4′,’0.0.0.5′

ルールの削除

exec sp_delete_database_firewall_rule N’Example DB Setting 1′

次の図は、未設定、作成、更新、削除をした、それぞれのタイミングで確認クエリを発行したときの内容です。

image

FederationメンバーDBへの影響について

データベースレベルのFirewallルールを設定したルートデータベースに、Federationを作成した場合、
フェデレーションメンバーデータベースには、データベースレベルのFirewallルールはコピーされません。

フェデレーションメンバーデータベースで、データベースレベルのFirewallルールを定義する必要がある場合は、個別にデータベースレベルのルールを作成する必要があります。

フェデレーションメンバーデータベースにデータベースレベルのFirewallルールを定義してある状態で、メンバーデータベースをSPLITすると、新しいメンバーデータベースにもFirewallルールが複製されます。

参考・元情報

SQL Azure

SQL Server Management Studio や Visual Studio のサーバーエクスプローラーからWindows Azure SQL Database (SQL Azure)に接続するのに必要な点を説明します。

ソフトウェアのバージョンを確認する

SQL Server Management Studio

SQL Server Management Studioを使用する場合は、SQL Server Management Studio 2008 R2 SP1以降(SQL Server Management Studio 2012でもOK)を使用する必要があります。

Windows Azure SQL Database Federationを管理したいのなら、SQL Server Management Studio 2012を使用したほうが良いでしょう。

Visual Studio

Visual Studio 2010から直接接続したい場合は、Visual Studio 2010 SP1を使用する必要があります。
さらに、最新のWindows Azure SDKがインストールされているかを確認してください。
Visual Studio 2010からWindows Azure SQL Databaseに接続する場合、Azure SDK内に含まれているコンポーネントが接続をフックし、データベースへの接続を確立します。

SQL Server Native Client の設定を確認する

名前パイプに関するエラーが発生する場合、SQLクライアントのネットワークプロトコルの設定が、名前パイプを使用するように設定されている可能性があります。
Windows Azure SQL Database に接続するには、TCP/IP接続を有効にする必要があります。

SNAGHTMLa5ec48c

ローカル側のファイヤーウォールの設定確認

ポート1433を使用して、接続します。
1433が使用できるか確認してください。
ローカルマシンのファイヤーウォール、ネットワーク上のファイヤーウォールそれぞれで確認する必要があります。

SQL Azureのファイヤーウォールのルール

SQL Azureのファイヤーウォールは、接続を許可するIPを設定します。
既定では、すべてのIPからの接続を拒否するようになっていますので、接続元IPから接続できるように設定する必要があります。