Windows Azure

SQL Server 2012 SP1 CU2で、バックアップ先/リストア元のストレージとしてWindows Azureストレージを選択できるようになりました。
T-SQLかSMO(Server Management Objects)で実行できます。

オンプレミスのSQL Server向けの機能強化ですが、Windows Azure VM上のSQL Serverでも使用できます。

前提条件

SQL Server 2012 SP1 CU2をインストールしている必要があります。
ダウンロードは、ここからできます。
当然、Windows Azureのアカウントが必要です。

Windows Azureストレージの作成

Windows Azure blobストレージにデータベースをバックアップするために、Windows Azureストレージアカウントを作成する必要があります。

  1. Windows Azure管理ポータルにログインします。
  2. 管理ポータルの下部の「New」ボタンをクリックします。
  3. リボン上で、[DATA SERVICES]‐[STORAGE]‐[QUICK CREATE]を選択します。
  4. [URL]にストレージアカウントのURLに使用するサブドメイン名を入力します。
    3~24文字の英数字を入力してください。
    [REGION/AFFINITY GROUP]に、地域とアフィニティグループを選択してください。
  5. [CREATE STORAGE ACCOUNT]をクリックします。

コンテナの作成

次にストレージアカウントにコンテナを作成します。
コンテナはblobをグルーピングする一塊です。

  1. 管理ポータルからストレージアカウントを選択します。ストレージアカウントのダッシュボードが開きます。
  2. [CONTAINERS]タブを選択し、コンテナ一覧を表示します。
    ストレージアカウントを作成した直後であれば、コンテナはありません。
    [CREATE A BLOB CONTAINER]か[ADD CONTAINER]ボタンをクリックします。
  3. 新しいBLOBコンテナを作成する画面が開きます。
    NAMEに、コンテナ名を入力します。ACCESSをPrivateに選択し、ボタンをクリックします。

SQL Serverで認証情報を作成する

SQL ServerにWindows Azure ストレージ認証情報を格納するために認証を作成する必要があります。SQL Server Manaement Studioを使用してSQL Serverに接続し、新しいクエリウィンドウを開きます。
次のT-SQLで、Windows Azureストレージ認証用の認証情報を作成します。

CREATE CREDENTIAL mycredential
WITH IDENTITY = ‘mystorageaccount’,SECRET = ‘<storage access key>’;

Windows Azure管理ポータルに戻り、ストレージのDASHBOARDで[MANAGE KEYS]ボタンをクリックします。

Manage Access Keysウィンドウが開きます。

ストレージアカウントの名前をコピーし、T-SQLの「mystorageaccount」部分に貼り付けます。[PRIMARY ACCESS KEY]か[SECONDARY ACCESS KEY]をコピーし、「Storage Access Key」部分に貼り付けます。

T-SQLを実行します。
「mycredential」認証の作成に成功したら、次のクエリで情報を確認することができます。

データベースのバックアップ

認証を作成した後、認証情報を使用してWindows Azure Blobストレージにデータベースをバックアップすることができます。次の例は、AdventureWorks2012データベースをWindows Azure Blobストレージサービスにバックアップしています。

BACKUP DATABASE AdventureWorks2012
TO URL = ‘https://pfestorageaccount.blob.core.windows.net/sqlbackup/AdventureWorks2012.bak’
WITH CREDENTIAL = ‘mycredential’
,STATS = 5;
GO

サードパーティのWindows Azureストレージの管理ツールで、バックアップファイルを確認することができます。

データベースのリストア

次のクエリでデータベースをリストアすることができます。

RESTORE DATABASE AdventureWorks2012
FROM URL = ‘https://pfestorageaccount.blob.core.windows.net/sqlbackup/AdventureWorks2012.bak’
WITH CREDENTIAL = ‘mycredential’
,STATS = 5;
GO

参考情報

詳細な情報が、MSDNライブラリで提供されています。
このチュートリアルを参照してください。

この投稿は、MSDNブログの韓国プレミアムフィールドエンジニブログに投稿された「How to backup and restore user database from SQL server to Windows Azure blob storage.」をざっくり違約した投稿です。

Windows Azure

Windows Azure上でのRedisについて新しい更新を報告します。
64ビットバージョンを新たにリリースしました。
Windowsフルサポートへ向けた重要な一歩です。
Microsoft Open Technologiesのgithubリポジトリからダウンロードすることができます。

64ビット版のリリースに合わせて、シングルコマンドラインツールを使用して、Windows Azure PaaSソリューション上でRedisを展開できるようにするWindows Azureインストーラーをリリースしました。
ツールはここで提供しており、ステップバイステップのチュートリアルを提供しています。

Microsoft Open Technologiesのパブリックgithubリポジトリを使用して、コミュニティとの会話を実施しています。

現在、2つの追加メジャーステップに向けて準備を進めています。

  • ストレス テスト
    マイクロソフトのテストチームは、すでにテストに取り組んでいますが、Windows Azure上でのRedisの信頼性と保証するために、確実にプロダクション環境下で使用できるようにする前に、より広範囲なストレステストを必要としています。
  • Redis 2.6
    マイクロソフトの開発チームは、Linux上の2.6バージョンに対応するために注力しています。

さらに開発者が簡単にRedisをデプロイできるように、nuGetやWebPIでのサポートを予定しています。これらは、すぐに提供できるように計画しています。

One step closer to full support for Redis on Windows, MS Open Tech releases 64-bit and Azure installer」を抜粋して意訳した投稿です。

SQL Azure

以前、表題のような質問を受けました。

Windows Azure SQL Databaseは、SQL Serverとコードを共有していて高い互換性を持っているのに、何故SQL Serverのバックアップファイルをリストアできないの?

未サポートのデータ型/T-SQLがある

これの理由を考えるときに参考になるのが、
Windows Azure Import/Export サービスの改善によるExportに失敗する可能性が増加した理由
です。

Windows Azure SQL Databaseは、SQL Serverと高い互換性を持っていますが、サポートしていないデータ型や機能があります。
データ型やT-SQLのサポート状況については、次のドキュメントを確認してください。

サポートしていないデータ型などが含まれていると、たとえバックアップファイルをリストアできる機能があったとしても、サポートされていないものが含まれているとリストアに失敗してしまいます。
バックアップファイルの代わりに使用できるデータ層アプリケーション(DAC Framework)では、サポート状況をチェックしておりリストアに失敗しにくくなっています。

バイナリファイルのリストアによる弊害

SQL Serverのバックアップファイルをリストアすると、バックアップ元のデータベースのデータファイルサイズとデータファイル個数、トランザクションログサイズ、バックアップモードなどを忠実に再現します。

Windows Azure SQL Databaseでは、データファイルの個数やサイズなどのデータベースの物理設計はAzureで担保/管理している部分なので、バックアップファイルをリストアすると色々と弊害があるのです。
リストアした後、データファイル個数を変更して、データファイルサイズを変更してっと実行すべきオペレーションが多くあり、その間サーバーリソースを消費してしまいます。

今後も提供されないの?

個人的推測ですが、バックアップファイルのリストアは今後も提供されないと思います。
バックアップファイルに対応したとしても、Windows Azure SQL Databaseを使用するユーザー体験は向上しないことのほうが多いからです。

バックアップファイルをリストアしたのに、エラーが発生してリストアできなかった。
これをゼロにする術が無い状況では、提供しにくいと思います。
「確実にリストアできることを担保したい!」っと開発チームが考えているのは、
Windows Azure Import/Export サービスの改善によるExportに失敗する可能性が増加した理由」からも明らかです。

例えば、次期SQL Serverでバックアップの仕様を根本的に見直すなどの大きめの対応が実施されて、バックアップ時にWindows Azure SQL Databaseとの互換性チェックを実施するとか、そんなことが無い限りは提供されないと思います。

当面は、オンプレミスのSQL ServerとクラウドのWindows Azure SQL Databaseの架け橋は、データ層アプリケーション(DAC Framework)が担っていくと思われます。
データ層アプリケーションの取得には、SQL Server Management Studio 2012を使用するか、SQL Server Data Toolsを使用するか、Windows Azure管理ポータルを使用すると良いです。

MVP

2013年1月期(活動対象期間:2011年10月~2012年9月)のMicrosoft MVP for Windows Azureを受賞いたしました。3度目の受賞となりました。

Microsoft MVP Awardはコミュニティ活動への評価となっており、主にインフルエンサー的な役割への評価となっていますので、Blogや書籍/雑誌/Web記事の執筆、セッション登壇などの機会を与えてくれた方々、購読/参加してくれた方々がいたからこその受賞です。

本年も変わらず、のんびりと少しでも誰かの役に立つような情報発信を続けていきたいと思います。

SQL Azure

現象

Windows Azure SQL Databaseにデータ層アプリケーション(DACフレームワーク).bacpacをインポートすると、データベースが制限サービスの対象になることがあります。
インポート処理は成功しているように見えるかもしれません。しかし、データベースには、DACのすべてのレコードが含まれていないかもしれません。

解決策

SQL Server 2012 SP1のCU1で修正されています。

情報源

FIX: Data loss when you import a data-tier application from a .bacpac package file to Windows Azure SQL Database