一気に寒くなりましたね。自転車通勤にはいい季節です。
本日は既存SQLServerをSQLAzureへ移行する方法についてです。
まずは、SQLAzureのポータルで移行先のDBを作成します。
createDatabaseポチっと。
こんなポップアップが出るので、DB名、
Specify an Editionは、お試しプランだとwebで1個まで3か月間無料。
Specify the max size は、5Gでもお試し3か月無料なのかな?でも3か月経過後は1Gで900円、5Gで5千円(大体)です。
DB名はアンスコ等の記号が入力できません。
ローカルのDB名でアンスコを使っていた為、クラウド環境とローカル環境でテストの時にいちいちDB名を少し直さなければならなくなりました。めんどくさい。
作り終わると、一覧にDBが追加されてます。
次に開発環境から繋がるように、firewallの設定です。firewallsettingタブから。
開発拠点のIPを許可リストに入れます。
WindowsAzureのサービスから接続するDBの場合は、
allow microsoft services access to this serverのチェックをつけましょう。
参考:http://msdn.microsoft.com/en-us/library/ee621783.aspx
次にローカルDBの準備です。
2008R2であれば、データベースのタスクからスクリプトの生成ができます。
DL:Microsoft SQL Server 2008 R2 RTM - Express with Management Tools
全てのオブジェクトについて、データとスキーマをスクリプト化します。
データベースエンジンの種類に対応したスクリプトには、SQLAzureデータベースを指定します。
スクリプトが出力されれば、データ移行準備が完了です。
2008R2のSSMSであれば、ポータルで確認できる接続文字列で問題なく繋がるはずですので、
スクリプトを実行すればおしまい。
次に、データを移行する際の注意事項です。
1.照合順序
SQLAzureの照合順序は、「SQL_LATIN1_GENERAL_CP1_CI_AS
データベースごとの照合順序設定はできませんので、日本語の列はJapanese_CI_ASでテーブルを作成します。
また、日本語項目はnvarcharを使用し、リテラルにはNプレフィックスを必ずつけます。
2.GETDATE()
WindowsAzureのアプリケーションでも同じですが、現在時刻はUTC時刻です。
日本時間にするにはDATEADD(HOUR,9,GETUTCDATE())というような感じにしなければなりません。
今のところ、SQLAzureを使う上で困難に当たってないです。
SQLAzureは単なるSQLServerのホスティングではない!
とMSがゆってましたけど、どこらへんがすばらしいのかもまだわかっておりません。
0 件のコメント:
コメントを投稿