Azure SQL DatabaseでSQL Serverのバックアップファイルをリストアできない理由
以前、表題のような質問を受けました。
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管理ポータルを使用すると良いです。