2011/08/09

access2010 SQL Azureいってみようか -5-

SSMA for Accessを使って、タスク管理.accdbをSQL Azureに移行してみた。
最新のSSMAは、Accessから直接SQL Azureにマイグレーションできるようになっているので、必ず更新しておく。何はともあれ作業の開始。
 ウィザードでやってしまってもよいのだけど、どう考えてもうまくいくわけがないので、ウィザードを使用しないで進めてみる。

 Migrate To は、当然SQL Azure
add Databeses で、マイグレーション元のaccdbを読み込む。
とりあえず、読み込めた。読み込まれるのは、テーブルとクエリ。アクションクエリも読み込まれるのだけど、この移行ツールでは対応していない。選択クエリはViewに変換されるけれども。

Access Metadata Explorer上でアイテムを選択して、Create Reportコマンドを実行したところ。なにやらいろいろレポートされているが、添付ファイル型フィールは対応してないということや、フィールド名があんまりよろしくない的なメッセージが出ているので元accdbを修正。

添付ファイル型フィールドの削除やフィールド名の記号やスペースを削除、インデックス名も修正してみた。この他、関数名などと同名の名前が使われていると注意メッセージがでる。
accdbを修正したら取得している情報を最新のものにする。ちょっと判りにくいが、アイコンに×印がついている。
×印が消えたので、エラーがないということだろう。と思ったが、再度Create Reportを実行して確認すればいいだろう。
Connect to SQL Serverコマンドで、SQL Azureに接続
hogehoge.database.windows.netであるとき、User Nameは、username@hogehoge でも usernameだけでも接続は可能。だけど、username@hogehoge で。
Convert Schema を実行すると、エラーや注意報が出るので参照する。
多分、選択クエリでアスタリスクを使用しているからかな。
SQL Azure Metadata Explorerでアイテムを選択し、Synchronize with Databaseを実行。この操作で、SQL Azureに情報が送られる。
 で、SSMSでテーブルとビューができたことを確認。
戻って、Access Metadata Explorerで移行元accdbを選択し、Link Tablesを実行。この操作は、移行元accdbにODBCリンクテーブルを作成する。
ログインダイアログが出るのだけれども、このログイン情報がリンクテーブルのConnectプロパティに使用されるものになる。

 パスワードが平文で保存されることへのアラート。ここはYesで。
テーブルの元の名前を継承したリンクテーブルが作られた。元のテーブルはリネームされて存在する。Unlink Tablesを実行し元に戻した。
 ここで初めてデータを移行する。
 Migrate Data実行後、再度Linked Table。その後、SSMSで確認。

 accessでどんな感じに動くか試してみる。
既定値が文字化けを起こしている。これについては、SQL Azure Metadata Explorerで該当テーブルを選択しプロパティウィンドウ上から修正。Nプレフィックスと日付について修正。
Synchronize with Databaseを実行後、確認。文字化けせずに規定値で投入された。ただ、新規レコードの既定値として表示されないのは不具合じゃないかなと思う。
で、問題なのは、フォームフィルタやクライアント上でのクエリで照合がうまくいかないこと。要はNプレフィックスの問題かな。

CollationがLaten1_Generalのままなのだから、これも直さないといけないな。
なんとなく感じていたけれども、SSMA for Accessでさらっと移行できるということではない。なので、もうちょっと続く。

0 件のコメント: