AccessのデータベースをSQL Azureに移す

今回の震災用のあくまで臨時です。
東京電力様の輪番計画停止データなど、それぞれ皆さんがデータをお持ちだと思います。できれば、地図も扱えるSQLAzureにデータを入れていただき、各サイトにてミラーする際にSQLAzureつついていただければと思います。
自治体様のサイトもそうですね。

データをExcel/Accessなどで作成して、SQLAzureをフロントにを今回は取り上げます。

結果、 Excel UI で、DBはSQL Azureのシステムができます。
東京電力、東北電力の方、出来たら使っていただきたいですね・・・

事前準備

まずはAccessのアプリを用意します。ExcelのデータをAccessに取り込む方法は、冒頭に。

ツールがありますので、それにすべてをゆだねます。あくまで緊急事態用ということで。

Microsoft SQL Server Migration Assistant for Access v4.2:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5abe098d-c7e1-46c6-994a-09a2856eef0b

インストールは特に難しくありません。

 

ExcelファイルのAccess化

先ほど、3/15 23:10分現在の東電さんのホームページからダウンロードしたExcelファイルを全部マージしたExcelを参考とします。

image

Accessを起動し、空のDBを作成します。画面はAccess2010ですが、かなり前から同じ手順ですので・・・

image

リボン/メニュー の[外部データ] から Excelインポート を選択します。

image

元ファイルを指定し、

image

先頭行をフィールド名として使用した方が楽です。

image

各列のデータ型を決めまして

image

主キーを適当に決めていただいて。この例では複合キーにて決めるパターンなので、別にIDの自動作成にしています。主キーにこだわる必要性はありません。

image

テーブルを作成します。

image

Access内部にテーブルが作成されます。

image

Accessでは、テーブルさえ作ってしまえば、その入力画面を作成するのは簡単です。また、このパターンを使えば、Excelでデータのメンテナンスをしてもいいです。この柔軟性がAccessの魅力です。

Microsoft SQL Server Migration Assistant for Access v4.2 の起動

このツールは起動時にフリーなのですがライセンスが必要なので、その手順を。

image

こちらの [license registration page]に行っていただいて、ライセンスファイルを取得してください。ファイル取得後、適当な場所に置いていただき、そのパスを [License directory]にて指定。そして [Refresh License]ボタンを押しますと、以下の画面が出て、使えるようになります。

※ 先ほどライセンス登録サイトがリンク切れでした。もし明日以降も同じ現象が起こるようでしたら、社内で確認いたします。緊急の方、ご連絡ください。対応できるかもしれません

image

これにて、ウィザードページが起動します。

image

最初はプロジェクトの種類を決めて、プロジェクトの作成をします。もし、お手元にSQL Serverがある場合は、SQL Serverを。そうでない場合は、直接SQL Azureでも良いかと思います。
動作確認という意味ですと、SQL Serverがあった方がいいです。SQL Server Expressという無償版も提供しています。ダウンロードはこちら

image

Accessのファイルを選びます。[Add Databases] から。

image

インポートするテーブルを選択します。

image

次はSQL Azure側です。

サーバー名、ユーザー名、パスワードまで入れると、DB作成/選択が[Browse]よりできます。間違いがないので便利です。

image

SQL Azure側に接続ができると、以下の画面になります。AccessをそのままフロントUIとして使う場合には、 [Link Tables]のチェックをオンにしてください。
ここでは、オフのままで次に進みます。

image

そうすると、テーブルの作成とデータ移行を自動的に行ってくれます。

image

途中、以下の画面にて、どのテーブルを移行するのか選択できます。

image

3ステップ全部チェックボックスが入れば終了です。

image

 

SQL Server Management Studioから、データの確認を行います。

image

 

ちなみに、今回移行したデータは、あくまで、このBlog執筆時点でのものですので、東京電力様公式のものでないので、SQL Azure上にはあるのですが、皆様への公開は控えさせてください。

Excelをビューアーにする (管理する側用。もしくは読み取り専用でSkyDriveに置く方用)

これも良く知られていますが、念のため。

Excelの [データ] から [SQL Server]を選択します。

image

ログイン情報を入れ

image

DBを選択し

image

設定を「一応」保存してください。次回からはこの保存設定を開くだけで行けます。

image

結果がExcelにてみれます

image

SkyDriveや、90日間無償提供をしているSharePoint Onlineでも活用ください。

ちなみに、先ほど私のSkyDriveにPublic公開しましたが、あくまで「サンプル」ですのでご注意ください。

http://cid-50a4aac9c40e61d8.office.live.com/view.aspx/public/%e6%9d%b1%e9%9b%bb%e8%a8%88%e7%94%bb%e5%81%9c%e9%9b%bb%e5%9c%b0%e5%8c%ba.xlsx

東京電力様公開Excel移行時のTips

以下、今回の作業中に幾つか出会った課題です。

  • Excelシート内の、グループ
    • 文字列指定するために “’”が先頭にありました。データ型を数値にそろえる場合は削除ください
    • 空白の場所が幾つかありました。Excelですのでソートして、削除するなり、ダミーデータを入れるなりしてください。
  • SQL Azureの制約
    • SQL Azureには必ず主キーが必要です。今回は「ID」ダミー列を付けました。Excel上で編集しても、Access上でもいいです。SQL Azureに入れる前に必ずお願いします。
広告

Windows Azure へのアプリケーション移行手順 (1)–ASP.NET + SQL Server

Azureが無償である程度使えるとはいえ、アプリが移行できないのであれば、意味がありません。
ここでは、既知のものではありますが、整理の意味も含めてご紹介します。

参考情報:

WIndows Azure Step by Step チュートリアルガイド:

http://msdn.microsoft.com/ja-jp/windowsazure/gg261766.aspx

※ 上記資料は多少古いので、Azure管理画面が古いままです。その点だけご了承ください。

事前準備

 

ダウンロード: Web Platform Installer 3.0 を通じて提供されています。
Web PI 3.0: http://www.microsoft.com/web/downloads/platform.aspx

手順

DBを先に、アプリを後に行います。手元のIISから、SQLAzureに接続文字列を変えるだけで接続できますので。

1. Azure上にドメイン取得

Azureの管理ポータルに行きます。

https://windows.azure.com/Default.aspx

画面左上の [New Hosted Service]から、サーバーを作成します。

image

URLやデータセンターを選択します。ここで、パッケージ済みのアプリケーションの配布もできるのですが、今は行いません。

image

これで、ドメインが作成されます。

image

ここで、Azure管理サービスとセキュアにやりとりする証明書を作成します。以下の手順が簡単です。

http://msdn.microsoft.com/ja-jp/windowsazure/gg261770.aspx#3.2.4

アップロードが終了すると、管理画面から確認できます。

image

2. DBの移行

ここでは、SQL Server Migration Wizardを使います。BCPコマンドを内部実行するので、一番高速です。データ転送時のセキュリティが気になる方は、Integration Serviceにて。

具体的な手順は、こちら

3. Azure側にテストデータ生成

接続文字列切り替えるだけですと、データの内容でしか動作確認が取れません。ですので、SQL Serverの管理コンソールにて、SQL Server / SQL Azure 双方への接続ができるようにしておきます。
ちなみに、SQL Server 2008 R2のManagement Studioから、SQL Azureの管理が超楽になりました。管理ツールは、できたら最新にしてください。旧バージョンにも勿論接続できますので。

SQL Azure への接続ですが、実は、サーバー名にWindows Azure 管理ポータルから、[Full Qualified DNS Name]を。SQL Server認証にて、ユーザー名とパスワードを入力します。

image

青いアイコンがSQL Azureです。

image

この段階で、テスト用のレコードを追加してください。

4. DBの接続文字列の設定

ADO.NET:

Server=tcp:<ServerName>.database.windows.net;Database=<DB>;User ID=<UserName>@<ServerName>;Password=<myPassword>;Trusted_Connection=False;Encrypt=True;

ODBC:

Driver={SQL Server Native Client 10.0};Server=tcp:<ServerName>.database.windows.net;Database=<DB>;Uid=<UserName>@<ServerName>;Pwd=<myPassword>;Encrypt=yes;

例えば、ADO.NETの場合、こんな感じです。

Server=tcp:pxg2ala54g.database.windows.net;Database=NorthwindJ;User ID=dahatake@pxg2ala54g;Password=myPassword;Trusted_Connection=False;Encrypt=True;

これを、SQL Serverへの接続文字列と置き換えます。
よくあるのは、web.config ファイル内に埋め込んでいるパターンです。

image

Debug/ReleaseモードなどでWeb.config 切り分けられるのですが、ここでは話を単純化するために、そのままこの文字列を活かします。大事な点は name=”<接続文字列の名前>”を同じにすることです。
こちらの例では、オリジナルをコメントアウトし、 connectionString=”<先のAzureの接続文字列>”にて置き換えました。

image

これにてF5にて実行してみます。
普通に動くと思います。この段階で、DBのみは、クラウドで動作しています。

image

5. WebアプリケーションのAzure化

ASP.NETのプロジェクトに、Windows Azure プロジェクトを追加します。
ソリューションを右クリックして、「新しいプロジェクト」を選択します。

image

プロジェクトの種類から [Cloud] を選択し、適当な名前を付けて、[OK] を押します。

image

プロジェクトの追加画面が表示されますが。ここでは、既存のASP.NETアプリがあるので、何も選択せず、OKを押します。

image

これで、Azure用のプロジェクトができました。

image

次に、Azure用のプロジェクトに、既存のASP.NETを追加します。
[ロール] を右クリックして、[ソリューション内のWebロールプロジェクト]を選択します。

image

表示されているASP.NETアプリケーションを選択してOKを押します。

image

[ロール]の先に、先ほど紐づけしたプロジェクトがあります。

image

これをダブルクリックすると各種設定が可能です。

この段階で、F5を押して、プロジェクトを実行してみてください。
今度は、タスクバーにAzureのエミュレーターが立ち上がってきていると思います。これで、ほぼ完了です。

image

6. Azureへのアプリケーションの展開

こちら手順がまだありますので、以下をご参照ください。
一度配布用の設定ができてしまえば、その後は、一発配布になります。

http://msdn.microsoft.com/ja-jp/windowsazure/gg261772.aspx

ここでは、設定後という状況の手順を。

Azure プロジェクトを右クリックして [発行] を選択します。

image

先に設定した証明書が正しく構成されていると、[資格情報]にて選択ができます。ここに出てこない場合は、資格情報に [追加] を選んでください。

image

以下の画面に表示されている手順にそって、証明書管理をします。

image

正しく構成できると、以下の様にAzure上のWebサーバーや、ストレージなど選択できます。
ここで、OKを押す前に [リモートデスクトップ接続の構成] をする事をお勧めします。アプリがうまく動作しない場合や、問題発生時のトラブルシュートに大変便利です。私も何度も助けてもらいました。

image

Azure上のサーバーは全てワークグループです。ですので、ここで作成するユーザーはそのコンピューターにしか存在していませんので、ご注意ください。10台にしたらそれぞれ10台に個別に作成されます。
有効期限に特にご注意を。

image

後はOKを押します。

本日、3/14にネットワークを使わせていただいて香港に配布してみましたが、10分くらいかかります。
Visual Studio の下部にてアップロードの状況が確認できますし、同時にAzureの管理ポータルからも確認ができます。

image

これで、Azure上にWebアプリも、DBもあり、 [Web サイトのURL] にアクセスすることで、Azure上にてアプリが動作していることが確認できます。

image

 

移行作業自体は、多少慣れた方であれば、30分程度ではないでしょうか?

Windows Azure 90日間無料サイトの良い使い方

http://smcjapan.blob.core.windows.net/web/index.htm

このサイトでは、ほとんどのファイルを静的状態で、Azuer Blobに置いています。100TBのストレージを非常にうまく使っています。

今回の無料提供ですが、どこまで無料なのか分かりません。また、アプリをいちいち作っていられない場合もあると思います。

アクセス不能のサイトもあり、また、節電を考える上でも

  • HTML編集ツールなどで簡易的に。Wordでもhtml保存できますので
  • アクセスの殆どが読み取り処理かと思いますので、CDNも併用し

などの発想で迅速に被災者支援に役立てください

Azure 90日間無料サイトについて:

http://satonaoki.wordpress.com/2011/03/12/%e6%9d%b1%e5%8c%97%e5%9c%b0%e6%96%b9%e5%a4%aa%e5%b9%b3%e6%b4%8b%e6%b2%96%e5%9c%b0%e9%9c%87-%e5%af%be%e5%bf%9c%e7%94%a8-windows-azure-%e7%84%a1%e6%96%99%e3%83%91%e3%82%b9/

Microsoft 製サーバー製品の計画的な停止手順

今回の東日本の震災に協力できる方法として、節電があります。東京電力でも首都圏の計画停止をしていますが、それに備えるためにも、以下、可能な限りまとめてみます。あちこちを見なくても済むように。
なお、正式な絶対に間違いが無い、という情報ではない事だけご了承ください。
ですが、いずれも「元データベース」には影響がほとんどないと思いますので、他に手段がなければ、是非。

また、いくつかマイクロソフト製品の評価版をのせています。今回の用途は本番かと思いますので、その点のライセンス上の違いについてはご注意ください。

基本

バックアップとリストアです。バックアップは、OS (サーバー仮想化にて)、アプリケーションのデータ。の2段階で考えてください。Microsoft製品は、ADに依存して、バックアップデータが他のドメインに戻せない場合もありますので、ご注意を。

停電の場合は、フェイルオーバークラスターが組まれていても、それ全部が停止する可能性があります。ですので、データのバックアップを基本に。

HDDについてはしょうがない事があります。モーターで連続稼働をしているものは、一旦停止すると、二度と稼働しなくなる確率が増えます。もしかしたら、HDDのストックをご用意いただいた方がいいかもしれません。

以下、取り急ぎの「バックアップ」についてです。

Microsoft製品は、System Center Data Protection Manager 2010にておおむね対応もできます。ただ、ツールでブラックボックス化されている部分もありますので、リストア時にもしかしたら、このツールが必須になってしまうかもしれません。またADが必須なので、その点もご注意を。

評価版: http://technet.microsoft.com/ja-jp/systemcenter/dm/bb727240.aspx

 

1. OS

P2V

System Center Virtual Machine Manager 2008 R2 などのサーバー仮想化管理製品が使える状態であれば、OSごとバックアップです。

評価版: http://technet.microsoft.com/ja-jp/evalcenter/cc793138.aspx

手順:http://technet.microsoft.com/ja-jp/virtualization/ff603844.aspx

p. 98から

Windows Server

OS標準のバックアップ機能があります。「バックアップと復元」です。

Windows 2000 Server: http://technet.microsoft.com/en-us/library/bb727088.aspx

英語ですので、適時「Microsoft Translator」などで、翻訳してください。

Microsoft Translator: http://www.microsofttranslator.com/

こちらは、IE8以降であれば、アクセラレーターから。そうでなくとも、ページのURLを大きなテキスト部分に入力すると、英語などに翻訳してくれます

仮想サーバー

Hyper-Vであれば、「エクスポート」するか、一旦サービスを止めて、VHDファイルをコピーしてください

2: SQL Server

SQL Serverの各データベースは基本オンラインバックアップです。また、バックアップ後のファイルは、他のSQL Serverのインスタンスにも戻せますので、比較的やりやすいです。また、SQL Server 2000以降操作手順が大きく変わりませんので、その点も安心です。

バックアップと復元: http://technet.microsoft.com/ja-jp/library/ms187048.aspx

手順は、SQL Server Management Studioから、以下にてウィザード起動します。

SQLServerバックアップ

3: Exchange Server

こちらは手順書をダウンロードください

Exchange Server 2000: http://www.microsoft.com/downloads/details.aspx?FamilyID=c83a1161-f22b-4862-97a4-4a888839a455&displaylang=ja

Exchange Server 2003: http://www.microsoft.com/downloads/details.aspx?FamilyID=A58F49C5-1190-4FBF-AEDE-007A8F366B0E&displayLang=ja

Exchange Server 2007: http://technet.microsoft.com/ja-jp/library/aa998848(EXCHG.80).aspx

Exchange Server 2010: http://technet.microsoft.com/ja-jp/library/dd876874.aspx

4: SharePoint Server

SharePoint Server はデータをSQL Serverに保存をしているのですが、それ以外の場所にも例えば画像ファイルなどを保存している場合もあります。よって、基本はSharePoint Server標準のstsadmコマンドにてバックアップを取得されることをお勧めします

SharePoint Server 2003: http://office.microsoft.com/en-us/sharepoint-portal-server-it/backing-up-and-restoring-servers-on-the-server-farm-HA001160345.aspx

こちらも英語です。すいません。

SharePoint Server 2007: http://technet.microsoft.com/ja-jp/library/cc262412(office.12).aspx

SharePoint Server 2010: http://technet.microsoft.com/ja-jp/library/ee662536.aspx

—– (以下、3付き17日追記 ) —-

SharePoint Server 2010の災害対策情報。英語ですので、Microsoft Translatorにて適時機械翻訳をお願いします。

http://technet.microsoft.com/ja-jp/sharepoint/ff601831

———————————————————

IISやファイルサーバー

robocopy.exe がおすすめです。以前も自分のBlogに書きましたが。

バックアップ先

こんな時だからこそ、クラウドがいいと思うのです。ですが、ファイルサイズが大きすぎる場合には、手元のUSB HDDなども現実的かもしれません。

今、日本マイクロソフトでは、90日間Windows Azureを無償で提供しています。100TBのストレージが使えます。

以下が、私の考えているものです。決してこうしてください、というものではありません。

1. Azure の契約。以下のドキュメントをご参考に

https://daiyuhatakeyama.files.wordpress.com/2011/03/windowsazureplatform_e382a2e382abe382a6e383b3e38388e4bd9ce68890e6898be9a086.pdf

2. Storageの設定

  • Azure管理ポータルに接続。契約時の管理者のWindows Live IDにて。

https://windows.azure.com/

  • [Hosted Services, Storage …] などを選択。画面上部の [New Storage Account]を選択する

image

  • ストレージアカウント作成画面が出てくるので、URLとデータセンターを決める。データセンターは、[East Asia] =香港 がおすすめ。

image

  • これで、ストレージが使えるようになります。画面右側の [Blob URL]がファイルサーバー「的」なBlobのアドレスになります。

image

3. フォルダの作成

以下のフリーツールが個人的なおすすめです。

Azure Storage Explorer: http://azurestorageexplorer.codeplex.com/

ツール起動後、[Add Account] にて、設定した各項目を設定

image

Storage account name: Blob URLの最初の “.”まで。例えば “dahatakefile” など

Storage account key: Azure 管理画面の [Primary access key] にて表示されるダイアログ画面の、[Primary …]で表示されいる部分を [Copy to Clipboard]で、コピー。その値を貼り付け。

image

4. ファイルシステムと、Azureをマウントさせます。

  • Gladinet Desktopをダウンロード

http://www.gladinet.com/

Azure Blog Storage とファイルシステムをマッピングしてくれるツールです。無償でも結構いけます。3.0になって安定しました。

インストール後、起動させると、タスクバーに常駐します。

image

右クリックして、[Management Console]を選択します。管理画面が起動します。

image

画面上の [Cloud Drive]を選択します。

image

画面左側の プラスマークが付いたアイコン をクリックすると、ウィザードが起動します。Azure Blob Storageを選んで (勿論、他でもいいですが、今回100TBまで使えますので)、

image

以下を入力します。

Access Point: Azure 管理画面の Blob URL
例: dahatakefile.blob.core.windows.net

Account Name: Azure Blob URLの最初の.まで。
例: dahatakefile

Primary Access Key: 先ほどと一緒

 

これで、初期設定ですと、 Z Drive にマウントできると思います。

このツールは、ローカルキャッシュとして、%LOCALAPPDATA%\Gladinet\cache にファイルをコピーします。つまり、このキャッシュ設定は、場合によっては大きな空きのある場所に設定ください。

image

後は、robocopyも動きます。
例えば:

robocopy <元の場所> <Gladinetにてマウントしたドライブ\> /MIR /Z

SQL ServerとSQL Azureの同期

今回ご提供している無料オファーですと1GB / 1か月ですので、本番システムではあまり使えないかもしれませんが・・・宜しければ、という意味で。

http://msdn.microsoft.com/ja-jp/windowsazure/gg261724.aspx

このツールが便利です。SQL Azureは1DB 50GBまでですので、その範囲であれば、何個DBを作っても構いません。

http://sqlazuremw.codeplex.com/

今日時点では、v3.5.7 が動作します。zip解凍して、exeを起動するだけです。

こちら、日本語対応をしておりますので、ほぼウィザードに従って動作すると思います。

(以下、3月17日追記)

Windows のリモートからの停止

英語のドキュメントなのですが、Microsoft Translatorにて日本語にも翻訳できますので、是非ご参考にしてください。

http://social.technet.microsoft.com/wiki/contents/articles/windows-server-emergency-management-resources.aspx

 

こちらも参考になります。

http://technet.microsoft.com/ja-jp/library/cc770416.aspx