プロが教える店舗&オフィスのセキュリティ対策術

宜しくお願いします。

前回、SQLのインストールがわからず質問した者です。
インストールが完了し次のステップに入りました。

仕様環境:WinXP/Pro SP3 OSは32bit版
CPU: AMD Athlon64 processor 2.00GHz 1.43GB RAM
CPUは32bit・64bitともに対応
ローカルディスクは残り122G有り

access2002 SQLサーバ2008

まず、accessをSQLサーバ-2008に移行しようと思い、
いろいろ調べた結果、accessにアップサイジングウィザードというものがあり、
そこから移行できるようなので、試しましたがエラーが発生しました。
以下がその内容です。

”アップサイジングウィザードはマイクロソフトSQLサーバー(バージョン6.50SP5以上)で使用できます。
SQLサーバーデータソースにログインしてください)”
SQLサーバーにログインすることだな、と思い、いろいろ項目をさがしたところ、
「SQLサーバーマネージメントスタジオ」というツールがあったので、そこでログインをしました。
(この辺はわけもわからずやりました)

しかしその後、状況変わらず、アップサイジングはできませんでした。

そして次に試みたのは「SQLサーバーにデータのインポート及び、エクスポート(32bit)」という
項目があったのでそこから入りました。
データソースはaccessを選択し、ファイル名は該当するaccessのファイル名(仮に作成書として)
ユーザー名とパスワードは特に設定せず進みました。


そして次の変換先が問題です。
間違えだ思いますがわからなかったので、ここでも変換先をaccessに選択し、
ファイル名も同じく該当するaccessファイルユーザー名とパスワードは設定せず、先に進みました。

次にテーブルのコピーまたはクエリの指定という項目になりましたので、
1つ以上のテーブルまたはビューからデータをコピーするを選択し、次へ進み、
どれを変換するか実行したところ、実行の準備までは成功しましたが、
実際のコピーはエラーが出て停止しできませんでした。
またその変換されるファイルもテーブル全部とクエリの一部でした。
レポートにつながっている普通の選択クエリも変換の際に名前が出てきませんでした。
マクロやフォームは出てきませんでした。

そもそも変換先が間違っていると思うので、(同じところから同じところ)
仕方ありませんが変換先がたくさん項目があってをどこに指定していいかわかりません。

ちなみに何をしたいかというと、
・デーベース容量のアップ
・複数人で使っても「排他的に~」と出ず、スムーズな運用
・処理速度アップ(これは元ファイルが1Mぐらいなので今のところ不便は感じないのですが)

もしよければご指導・アドバイス等お願いします。
ちなみに一台のPCですべてやってます。

あと参考書も買わないといけなさそうです。
(何度も聞いてると気がひけますね)

A 回答 (1件)

まず、今回のケースでは、アップサイジングウィザードの利用はできません。


以下のリンクを参照してください。
http://support.microsoft.com/kb/967913/ja
Access2003/2007ですら対応していないのですからね。

もともとウィザードの精度はあまり良いものとはいえず、エラーメッセージが出ても対処がわかりにくいことが多いです。

したがって、手間はかかりますが、以下の手順で実行することをお勧めします。
すくなくとも自分が何をやっているか、理解しながら進めることができると思います。

1) SSMS(SQL Server Management Studio)でデータベースを作成する
 ・データベースタブで右クリックして「新しいデータベースを作成」を選び、データベース名だけ入力してあとは初期値で可

2) SSMSのデータのインポートを使って、MDBファイルのテーブルを移行する
 ・作成したデータベースを右クリックして「タスク-データのインポート」
 ・データソースは、元となるMDBファイル(ユーザ名、パスワードはAccess側に掛けていなければ不要)
 ・変換先は上記で作成したデータベースがデフォルトで選択されているはずです
 ・「1つ以上のテーブルまたはビューからデータをコピーする」
 ・「コピー元のテーブルおよびビューを選択」ですべてのテーブルを選択(ビュー、クエリは選択しない)
 ・実行すると、MDB側のテーブルレイアウトに合わせてテーブルが自動生成され、データがコピーされます

3) SSMSでデータベースの下に作成されたテーブルをそれぞれ右クリックして「デザイン」を選択
 ・ここが手間といえば手間ですが、正しいデータ型でコピーされていることを確認しつつ修正します
 ・SSMSの「ツール-オプション」の「Designers」で「テーブルの再作成を必要とする変更を保存できないようにする」の
  チェックがオフになっていることを確認
 ・それぞれのテーブルにつき、以下を修正
  a)主キーを設定
   ・テキスト型からコピーされて、データ型がnvarchar(MAX)になっている場合は適当な長さ(nvarchar(50)など)に変更する
   ・NULLを許容のチェックはオフ
   ・列を選択して右クリックすると「主キーの設定」が選べる
  b)リレーションシップの設定
   ・デザイン画面を右クリックすると「リレーションシップ」が選べるので、「追加」
   ・「テーブルを列の指定」をクリックすると「...」ボタンが出るので、それを押して主キーテーブルを指定

4) PCにODBC接続のためのDSNを作成
 ・メニュー-コントロールパネル-管理ツール-データソース(ODBC)
 ・データソースドライバは「SQL Server Native Client」を設定
 ・名前は任意(SQLSVなど)、サーバはlocalhostなど。
 ・ログイン情報はSQL Serverにログインするときの情報を指定(Windows認証ならば省略可)
 ・既定のデータベースは新しく作成したデータベースを指定

5) Access側にあるテーブルをすべて削除して、代わりにSQL Serverにコピーしたすべてのテーブルをリンクテーブルとして登録する
 ・リンクテーブルのやり方はわかるという前提です(作成したDSNを使用)
  わからなければ以下のリンクも参照
  http://homepage2.nifty.com/SALTY/tips/access/odb …
 ・テーブル名はすべて従来のテーブル名と同じになるように

上記までで、テーブルがすべてSQL Serverに移り、それを参照してAccessが動く状態になります。
クエリがAccess側にあっても、「やりたいこと」はすべて満たされるはずです。
(SQL Server内にあるテーブルをAccess側でクエリとして呼ぶことになるため)

クエリはSQL Serverではビューと呼びますが、移行するには、
・SQLビューで表示されるSELECT文をSQL Serverに持っていく
 CREATE VIEW (ビュー名) AS SELECT ....という形式で実行して、ビューを作成する
・ビューに対するリンクテーブルを追加する
の手順を踏む必要がありますが、ここはもう少し理解できてからの方がいいと思います。

>あと参考書も買わないといけなさそうです
もう少しSQL Serverのことは理解した方がいいかもしれませんね。
買うのもいいですが、参考になるものはネット上に大量にありますよ。
まずは、以下のあたりを見てみるといいと思います。

SQL Server 2008自習書シリーズ
http://www.microsoft.com/japan/sqlserver/2008/se …

SQL Server 2005自習書シリーズ
(質問者さんの目的であれば2005も2008も変わりません。ドキュメントはこちらの方が豊富です)
http://technet.microsoft.com/ja-jp/sqlserver/cc7 …

この回答への補足

回答有難うございます!

丁寧な回答で気軽に取り掛かれそうな気がします。
ただ、サーバーの知識がないと気が遠くなりそうですね(苦笑)。
そう、クエリをサーバーに移行するのも気になっていたんですよ。
テーブルだけ移動するのは簡単、みたいなことはどこかに書いて
あったのですが(といってもそれさえもわからないのですが)。

それはおいおいですね。
最終的に全てSQLサーバー内で運用や開発が出来て、
インターフェースはaccessで、というの目標としています。
(そうなると今までマクロとか気軽に作っていたが、それも違うのか?
でもaccessで作って、SQLに移行すればなんとかなるのかな)

今日・明日ではとてもとてもできる問題ではないので、
勉強と併用しながら徐々に理解していこうと思います。

ちなみにこの質問の締め切りは当分、後にさせて頂きますので
ご了承ください。
(有益な回答だとはわかるのですが、なにぶんまだ試せてもないので・・)

でもとても丁寧に順々に説明して下さったのが、
伝わり有り難く感じています。
有難うございました!

補足日時:2009/05/07 05:46
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す