accessからsqlserverへの移行について!

このQ&Aのポイント
  • accessからsqlserverへの移行による処理速度改善の見込みとは?
  • accessからsqlserverへの移行におけるデータ件数の問題
  • 既にaccessからsqlserverへ移行済みの方の改善事例
回答を見る
  • ベストアンサー

accessからsqlserverへの移行について!

accessからsqlserverへの移行について! 現在accessでシステム運用しています。 処理に時間がかかるのでDBのみsqlserverへの移行を検討しています。 時間がかかる原因は計算項目が多く計算の為に必要な定義項目と参照項目で計算項目を含めると約300項目となります。 この為、クエリーをNo.1とNo.2の2個のクエリーに分けて対処しています。 クエリーNo.2はNo.1の式の値を使用し更に式で計算しています。 クエリーで定義している計算式も条件が複雑なものもありさらに計算結果⇒計算結果⇒・・・・となっています。 この様な内容なので入力画面はレスポンスが遅く印刷は5~10分位かかるものがあります。 とりあえず印刷処理を早くしたいと思い一旦ワークテーブルに必要項目を出力する等をやって見ましたがやはり抽出に時間がかかりあまり改善しません。 データ件数は約3万件なのでデータ件数は問題ないと思っています。 accessの処理はそのままでDBをsqlserverからODBCでリンクしようと思います。 DBをsqlserverに移行することで処理速度の改善はどの程度見込めるのでしょうか。 計算項目数が多いのであまり見込めないのではと思っています。 accessからsqlserverへの移行された方でどの位改善されたのか教えて下さい。 現在の運用環境はサーバは使用せずファイル共有で4台のPCで運用しています。OSはWinXPです。 今回も専用サーバは使用せず現在のWinXPのPCにSQLServer2005無料を使用しようと思っています。 又、accessの処理で他に早くする方法がありましたら教えて下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

accessだから遅く、sqlserverだから速いという 単純なものではありません。やはり、エンジンを 置くPCの性能がカギで、これが遅いのでは期待は できないとしたものです。聞けば同じマシンで代替 するとのことなので、あまり期待しない方がよい と思います。accessのイヤな所は挿入/削除を 繰り返すと、デッドスペースが増加するだけでなく、 インデックスも最適な状態からかけ離れていくこと です。従って、度々最適化する必要があります。 DBの設計方針が分からないので何とも言えませんが、 抽出条件に使う可能性が高い項目にはインデックスを 置くとか、マスタを持つコード項目はリレーションを 張ることで速度が改善されます。特に昔の遅いDBでは リレーションの設計は最大のポイントでした。 SQLの組み方が拙いため遅い可能性もありますが、 accessやsqlserverはスマートな方で、影響は少ない でしょう。例えば、a=1 or a=2 より a in (1,2)の 方がaの参照が1回なので、若干高速です。(気休め程度) 尚、sqlserverには一時テーブルと言うのがあり、 対象レコードを減らしておいて処理することができます。 これは便利な機能で、大いに助かるところです。 尚、ODBC接続したテーブルにDLookupなどDxxx関数を 使うと、極端に遅くなることがあります。これらの 関数を多用している場合は注意が必要です。

moichi999
質問者

お礼

ありがとうございました

moichi999
質問者

補足

回答ありがとうございます。 現在のマシン3年前に購入したPentium4の2.40GHzメモリは1Gで遅いマシンでは無いと思っています。 ファイル共有している他のマシンも同等です。 それから仰るとおりにaccessを最適化すると早くはなります。 sqlserverにすればその必要が無いので移行の検討材料の1つに上げています。 又、インデックスは必要と思われる項目には設定し、リレーションも張っています。 回答頂いた内容からして専用サーバを検討した方がいいのでしょうね。 専用サーバも高価なものは買えないので性能的には現在のPCの性能と同等程度となります。 専用サーバを設置しサーバOSにするとにより処理速度はかなり速くなるのでしょうか。 よろしくお願いします。

その他の回答 (2)

  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.3

ディスクアクセスと比べれば計算は非常に高速です。 計算が多いから遅いということは、あまり考えられません。 3万件のテーブルだけを使用しているのですか? 複雑な計算をしてるなら当然複数のテーブルを使用してますよね。 それら複数のテーブルをサーバーに置いてリンクテーブルにし、 従来通りのクエリーをそのまま使った場合は、確実に遅くなります。 高速化にはそれなりのテクニックが必要です。 方法はケースバイケースですので、実際のクエリーを見てみないと分かりません。

moichi999
質問者

お礼

ありがとうございました

moichi999
質問者

補足

回答ありがとうございます。 クエリーで使用しているテーブルはマスタやデータ含め4テーブルをリンクしています。 >従来通りのクエリーをそのまま使った場合は、確実に遅くなります。 これはサーバを立ててsqlserverに移行した時のことでしょうか。 VIEWを使用すれば遅くはならないでしょうか。 >高速化にはそれなりのテクニックが必要です。 何か参考になるサイトはご存知無いでしょうか。・ よろしくお願いします。

  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.2

>やはり抽出に時間がかかりあまり改善しません とのことですので、計算式なしで[select * from ...等]にしてみて流してみてください。 ここが遅いのであれば、索引等をつければ早くなる可能性はあります。 また、上記の条件でどれだけデータがヒットするのかが問題となります。 3万件全て取ってきてから計算する作りだと厳しいです。 Accessは一旦、データをローカルに持ってきてから計算するので、ネットワークの速度も関係してきます。

moichi999
質問者

お礼

ありがとうございました

moichi999
質問者

補足

回答ありがとうございます。 計算式無しで早くなった時、必要な計算値はどのようにして取得しておられるのでしょうか。 計算式⇒計算式⇒・・・等で求めている値は40個ぐらいあります。 インデックスは必要と思われる項目には設定し、リレーションも張っています。 対応されておられる方法がありましたら教えて下さい。 よろしくお願いします。

関連するQ&A

  • accessからsqlserverへの移行について!

    accessからsqlserverへの移行について! accessからsqlserverへの移行することにしました。 問題が起きないよう先日質問させて頂いた内容でもう少し詳しく教えてください。 以下が前回の内容です。編集をしています。 accessの処理はそのままでDBをsqlserverからODBCでリンクしようと思います。 現在の運用環境はサーバは使用せずファイル共有で4台のPCで運用しています。OSはWinXPです。 現在のマシンは4台とも3年前に購入したPentiumの2.40GHzメモリは2GBです。 今回も専用サーバは使用せず現在のPCにSQLServer2005無料を使用と思っています。 データ件数は約3万件で必要な項目にはインデックスを付けてリレーションも張っています。 計算項目が多く定義と参照項目含め約300項目となり、クエリーをNo.1とNo.2の2個のに分けています。 クエリーはデータやマスタとリンクしています、No.2はNo.1の式の値を使用し計算しています。 計算式は複雑なものや計算結果⇒計算結果⇒・・・・となっています。 入力画面はレスポンスが遅く、単票印刷で約30件の処理に5~10分位かかるものがあります。 印刷はワークテーブルに必要項目を出力する等をやって見ましたが改善しませんでした。抽出に時間がかかっています。 DBをsqlserverに移行することで処理速度の改善はどの程度見込めるのでしょうか。 計算項目数が多いのであまり見込めないのではと思っています。 頂いた回答です。 >それら複数のテーブルをサーバーに置いてリンクテーブルにし、従来通りのクエリーをそのまま使った場合は、確実に遅くなります。 ?これはsqlserverのデータをリンクしクエリーはそのままにしたら遅くなるのでしょうか。  対象方法はsqlserverにクエリーをVIEWで定義すればいいでしょうか。対処方法を教えてください。 >高速化にはそれなりのテクニックが必要です。 ?参考になるサイトがあれば教えてください。 >やはり抽出に時間がかかりあまり改善しませんとのことですので、計算式なしで[select * from ...等]にしてみて流してみてください。 ?早くなった場合必要な値はどの様にして取得しているのでしょうか。 >やはり、エンジンを置くPCの性能がカギで、これが遅いのでは期待はできないとしたものです。聞けば同じマシンで代替するとのことなので、あまり期待しない方がよい と思います。 ?サーバを設置しサーバOSにするとにより処理速度はかなり速くなるのでしょうか。  専用サーバも高価なものは買えないので現在のPCと同等程度の性能となります。 よろしくお願いします。

  • Access97からSQLServer2005へのクエリ移行

    お世話になります。 Access97からSQLServer2005への移行作業をしております。 Accessで使用しております、クエリには「DISTINCTROW」が指定してあります。 これはSQLServer2005で言うと何に当たるのでしょうか? どなたかご存知でしたらお教え下さい。 宜しくお願い致します。

  • accessとSQLserverの違い

    こんちは。 DBについて教えて下さい。 社内システムをActiveServerPagesで構築しようと思うのですが、DBについて教えて下さい。 ACCESSについては多少知っているのでACCESSをDBとして構築したいのですが、ちゃんとしたシステムの場合はSQLserverやOracleのほうが良いと言われました。 何がそんなに違うのでしょう?レスポンス? データ件数は20,000件くらいです。

  • SQLServer2000から7.0への移行

    SQLServer2000で構築したデータベース(mdfファイルとldfファイル)をSQLServer7.0にアタッチ機能(クエリアナライザで「sp_attach_db」を実行して)で移行させようとしましたが、「ldfファイルのヘッダーが有効でありません。PageAuditプロパティが不正です。」とのエラーメッセージが出て、実行できませんででした(ちなみにPageAuditの意味もわかっていません)。 ご質問なのですが、そもそも2000で構築したデータベースは、7.0のアタッチ機能で7.0への移行は無理なのでしょうか。それとも、当たり前かもしれませんが、2000のldfファイルの構造そのものが違い、7.0で認識させるのは、不可能なのでしょうか。 お忙しいところすいませんが、よろしくお願いします。 教えて下さい。

  • Access2000システムをSQLServerへ移行するには

    現在アクセス2000をサーバで共有し数人で使うシステムがあります。VBAでコードを書いています。 サーバのアクセスをSQLサーバに移行することになったのですが、アクセス付属のアップサイジングウィザードを使用してみましたがテーブルインポートでスキップされてしまいます。 調べてみたところ、一部の日付型がSQLサーバ移行時にエラーが出る。オートナンバー型フィールドをアクセスから読む場合にdbseechangesを指定する。等、VBAコードやテーブル定義に割と大掛かりな変更が必要そうなのです。 今回のような移行時の、いい方法やコツをご存知ないでしょうか

  • access97とSQLserver6.5間のデータ連携

    access97とSQLserver6.5を用いたシステムで、SQLのDB内にあるマスタから複数個の項目を抽出し、別のデータ(これもSQLのDB内にあります)へ書き出しを行なおうとしています。 その際、accessのフォームから insert into 命令をかけて実行しているのですが、受け側 の項目の桁数が送り側の桁数よりも小さい場合、エラーがでてしまいます。 同じ事をSQLのクエリーツールで実行させるとできてしまうので、訳がわかりません。 アドバイスいただければ幸いです。 よろしくお願いいたします。

  • SQLServer - Access開発環境

    SQLServer2008R2 ExpressのデーターベースへAccess2010を使ってアクセスし、帳票を作成する事になりました。 使用している業務パッケージがSQLServerを使っていて、それで出てこない帳票をAccessかExcelで 作るように言われました。 私は、Access同志のテーブルリンクは使った事があるのですが、SQLServerへのテーブルリンクは始めてです。SQLServerは運用のために本で勉強した程度です。 色々調べてみたのですがよくわからないので、ご存知の方お願いします。 AccessとSQLServerは同じパソコンの中に置く予定です。 業務パッケージで使っているパソコンは1日中入力に使われていて同じパソコンをAccessの開発用に使用することができません。 業務パッケージのデータベースは、オフラインバックアップしているので、Accessでの開発用の 環境に移せそうな気がしますが ODBC経由でSQLServerをテーブルリンクする場合、データソースを作る時に サーバー名とかユーザ名とかを指定するので、Accessを開発環境から運用環境に移行した時の手直しがどの程度必要なのかがよくわかりません。 現在の業務の関係上、サーバー名を同じにした環境を作成することもできません。 業務パッケージを作った所も今はもう無いし、社内に詳しい人はいないので困ってしまいました。 あまり具体的に書けずに申し訳ありませんが、 上記環境で運用環境に移行出来るものか否かと SQLServer ・ Access作成時の注意点・などありましたら教えてください。 よろしくお願いいたします。

  • AccessとSqlServerのテーブルリンク

    Access2007とSqlServer2008を使用しています。 Accessで作成したテーブルを「データベースツール」-「データの移動」でSqlServerに移行してリンクする際、 (1)SqlServerに新規にデータベースを作成すると、リンクテーブルマネージャから見てもリンク先DBが正しく表示されますが、 (2)その後、その既存DBに同じAccess内の別のテーブルを、「データベースツール」-「データの移動」してリンクしたものは、リンクテーブルマネージャから見てもリンク先DBが ()となっており表示されていません。 ツールとしてSqlServer Management Studioを使っていますが、そこからでも(1)のテーブルは表示されていますが、(2)のテーブルは表示されません。 でもリンクはできているようなのです。 また、SqlServer Management Studioを使って、SqlServer内に新規テーブルを作成し、 それをAccessからリンクしようとしても、テーブルリンク一覧内に表示されない状態です。 (「外部データ」-「ODBCデータベース」…)にて SqlServerのファイルデータソースを表示しています) (2)のテーブルはSqlServer Management Studioから見ることができないため、更新・削除もできず困っています。 DB、テーブル、リンク方法等、何か問題があるのでしょうか? よろしくお願いします。

  • ACCESSからのSQLSERVERに変更すべきですか?

    ACCESSからSQLSERVERに変更する時 どのような時に変更すべきですか? 現在 サーバーをWindowsNT4.0Server データベースは、複数のMDB(ACCESS)を使用し 累積データ件数は、10万件で 日次更新、月次更新など 更新時間を短縮したいと思っています。 そのためサーバーをWindowsNT4.0Serverから Windows2003サーバーに仮に移行したら 日次処理が10時間から1時間に短縮しました。 (データベースは、ACCESSのままです) サーバーだけ変更したほうがよいか? それともデータベースも変更したほうがよいですか? 教えてください。 よろしくお願いします。

  • SQLServer2005での復元の自動化について悩んでいます。

    SQLServer2005での復元の自動化について悩んでいます。 下記の構成でシステムを運用しています。 サーバー1(本番) OS:WindowsSvr2003R2 DB:SQLServer2005 サーバー2(障害用サブ) OS:WindowsSvr2003R2 DB:SQLServer2005 通常は本番用を使用してシステムの運用を行っているのですが、 H/Wの障害などが発生した際には、サーバー2で運用します。 ですので、システムが休止している際にサーバー1のDBをサーバー2 に移行する必要があります。 バッチやSPで自動的に行いたいのですが、何か良い方法はないでしょうか。 アドバイスをお願いします。