良く分からないけれど、2009/10/18現在でここ数日の間にSQL Azureと格闘したメモ。
現状 §
SQL Azureではまだサポートされていない機能があり、使えないツールや動作しない機能がある。また、詰め切れていない不明の理由で接続できない場合がある。
前チェック §
SQL Serverで使うポート1433はルータで閉じていることが多いが、当然それではSQL Azureに接続できない。SQL Serverを使わないor外部のSQL Serverを通信しない前提だと、ついうっかり見落としがちな問題。(しっかり見落として貴重な数時間を無駄にしたのは、自らのうかつさの証明)
SQL Server Management Studio §
クエリとして接続はできるが、すべてのクエリが失敗する。検索するとこれで上手くコマンドを実行している人もいる。原因は調べ切れていない。
sqlcmd §
接続でき、コマンドも実行できる。
SQL Azure Manager §
接続でき、コマンドも実行できる。ただし完成度が低いのか、例外で落ちるケースがけっこうある。ちなみに、ClickOnceの実用ツールを使うのは初めてのような気がする。
Visual Studioのサーバ エクスプローラ §
接続できない。
ADO.NETを使用する自作プログラム §
接続でき、クエリもできる。
楽してSQL Azure開発する手順 §
GUIベースのデータベース設計は今のところできないので、ローカルで構築して定義を持って行くのが楽そう。(以下はテーブル1つだけのケース)
- SQL Server 2008のSQL Server Managemt Studio等でテーブルをデザインする
- Visual Studio 2008のサーバエクスプローラでデータベースに接続してこのテーブルを表示させる
- LINQ to SQLクラスを作成して開き、テーブルをここにドロップ
- LINQ to SQLを使ってこのテーブルに追加したりクエリしたりするコードを書く
- ローカル上で動作テストする
- SQL Server 2008のSQL Server Managemt Studioのオブジェクトエクスプローラのテーブル名を右クリックし「テーブルをスクリプト化」→「CREATE」→「新しいクエリエディタウィンドウ」と選び、内容をクリップボードにコピー
- SQL Azure Managerを開いて、使用したいデータベースを作成or開く
- クリップボードからSQL Azure Managerのエディタ部分に貼り付ける
- Run Queryしてエラーになる部分を全て取り除く (USE, GOなどは全て取り除く? "ON [PRIMARY]"も外す必要があった)
- Run Queryが通ればテーブルができているはず
- 自作プログラムの接続文字列をSQL Azureの管理画面で得られる接続文字列に差し替える(パスワードは自分で書き直す必要あり)
- 実行してみる (SQL Azureでサポートされていない機能を使ってしまわなければ、通るはず)
感想 §
たぶん、これからバージョンアップを繰り返して劇的に使いやすくなっていくのでしょう。ついでに言えば、チュートリアル類も劇的に増えていくのだろうと思います。