- ベストアンサー
accessからSQLサーバへの移行
- access2002をSQLサーバ2008に移行する方法について、アップサイジングウィザードやデータのインポート・エクスポートなどの手法を試しましたがうまくいきませんでした。
- 移行先の設定やテーブルのコピーといった具体的な手順についても分からず、解決策を求めています。
- 移行の目的はデータベース容量のアップ、複数人でのスムーズな運用、処理速度の向上です。ご指導やアドバイスをお願いします。
- みんなの回答 (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/odbcaccess.html ・テーブル名はすべて従来のテーブル名と同じになるように 上記までで、テーブルがすべて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/self-learning/default.mspx SQL Server 2005自習書シリーズ (質問者さんの目的であれば2005も2008も変わりません。ドキュメントはこちらの方が豊富です) http://technet.microsoft.com/ja-jp/sqlserver/cc721623.aspx#ecb
補足
回答有難うございます! 丁寧な回答で気軽に取り掛かれそうな気がします。 ただ、サーバーの知識がないと気が遠くなりそうですね(苦笑)。 そう、クエリをサーバーに移行するのも気になっていたんですよ。 テーブルだけ移動するのは簡単、みたいなことはどこかに書いて あったのですが(といってもそれさえもわからないのですが)。 それはおいおいですね。 最終的に全てSQLサーバー内で運用や開発が出来て、 インターフェースはaccessで、というの目標としています。 (そうなると今までマクロとか気軽に作っていたが、それも違うのか? でもaccessで作って、SQLに移行すればなんとかなるのかな) 今日・明日ではとてもとてもできる問題ではないので、 勉強と併用しながら徐々に理解していこうと思います。 ちなみにこの質問の締め切りは当分、後にさせて頂きますので ご了承ください。 (有益な回答だとはわかるのですが、なにぶんまだ試せてもないので・・) でもとても丁寧に順々に説明して下さったのが、 伝わり有り難く感じています。 有難うございました!