• ベストアンサー

SQLServerのデータを支店間で参照する方法

こんにちは、SQLServerとネットワークに関してよくわからないことがあります。 教えて頂けないでしょうか。 会社で使用しているSQLServerのデータを遠距離にある支店から参照したいのですが、システム部は、支店間でPCを接続することを原則禁止しています。 支店間の専用線に内線電話の音声信号も乗っていて、ネットワークのトラフックが増加すると、帯域の狭い支店で通話が途中で途切れるようになるので利用を制限しているようです。 SQLServerの利用方法ですが、SQLServerのデータを支店からODBC経由で、LMHOSTにサーバーのIPアドレスを指定して、ACCESS2000から参照しようとしています。 このような、SQLServerのデータ利用法は間違っているのでしょうか? SQLServerのデータを支店間で利用するには、どんな方法が良いのでしょうか? 宜しくお願い致します。 サーバー側:Windows2000ServerSP3 SQLServer2000SP3 Windows認証 クライアント側:Windows2000Professional Access2000

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

  • ベストアンサー
  • driverII
  • ベストアンサー率27% (248/913)
回答No.4

#2で書き忘れましたが、専用回線の速度によっては#2の(1)-1でも十分いけると思います。業務の終了後あるいは忙しくない時間にテストを行い、検討すると良いと思います。 100MBのデータをコピーするのにかかる時間などはその専用回線の速度に影響を受けます。例えば専用線の速度が光レベル(100Mbps)で、ネットワークが100BaseTなどで構成されていれば特に問題ありません。逆に専用線の速度が(128Kbps)程度だったり、ネットワークが10BaseTで構成されていると厳しい可能性はあります。 差分だけがコピーされるかどうかは、処理方式次第ということになりますね。業務の形態とB 拠点で参照がどのように行われるかによって処理方式を決定します。 例えば参照するのに全てのテーブルのデータを必要とする場合には100MB全てのデータがどうしても必要ですね。この場合にはそのように設計せざるを得ません。ただし一度コピーしたあとにコピーしたデータを利用するということは可能です。 ですから A 拠点側でデータが更新されない時間帯を把握しそれに応じた設計を行う必要があるのです。 逆に一部のテーブルで良ければそのテーブルだけのコピーで済みます。 それから私は使ってませんが、SQL Server 2000にはレプリケーションという機能があります。これはデータベースを複製する機能ですが、これを使用した方がより良い結果を得られるかもしれません。つまりTOME3さんが言われる差分コピーに近いことができるかと思います。この場合には、やはり A拠点での業務が終了あるいは忙しくない時間帯にデータベースの同期をとるなどの配慮が必要でしょう。 参考になりましたでしょうか?

UME3
質問者

お礼

driverIIさん ありがとうございました。 よく理解できました。 SQLServerのレプリケーションについて少し調べてみます。 ありがとうございました。 TOME3

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • driverII
  • ベストアンサー率27% (248/913)
回答No.3

業務の状態がTOME3さんほど分っていないので、 回答という形ではなく、経験などからのアドバイスとさせてもらいます。 サーバがおいてある会社を A 拠点とします。 データを参照したい B 拠点とします。 (1) データをA 拠点においたまま、B 拠点からそのまま参照しようとした場合、SQLで問い合わせを行う度に、その要求と結果セットがネットワーク上を行きかいます。この時、その結果セットの内容により再度SQLで問い合わせするということを行うと、膨大な量のデータになり障害の原因になります。 (1)-1 A 拠点にストアードプロシージャという処理手順(SQL 等で記述)を作成し、B 拠点からその実行と結果セットの受け取りという形にすると(1)はかなり改善されます。 (2) B 拠点にSQL Server 2000 Personal Edition 等を導入し(以後B側サーバ)、 A 拠点と同様のDBを構築しておきます。B拠点で参照動作を行う前に、A 拠点から B 拠点へ必要なテーブルのデータをコピーして、その後B側サーバに対し参照動作を行うことで、 A拠点のサーバへの負荷が減りネットワーク上を行きかうデータも減少します。 以上のようなことから、(2)のようにB側サーバを導入し、B側サーバに対しストアードプロシージャを作成するのが良いといえます。 あくまでも考え方です。実際の業務の形態によってだめな場合もあります。 (2)でコピーした後にA拠点側のデータが更新された場合には、求める内容と結果が違うなどと現象が起こる可能性があります。 例えばA拠点側の業務でデータが更新されるのが18:00までと決まっている場合には、18:00過ぎにB拠点側で参照すれば常に求めた結果が得られます。 ながくなりそうなのでこの辺で(^^

UME3
質問者

お礼

driverIIさん ありがとうございます。 なるほど、拠点にサーバーを導入する方法もあるのですね。 大変参考になりました。 ところで、サーバー間でデータをコピーする場合、差分だけがコピーされるのでしょうか? 例えば100MBのデータ全てを毎回コピーするとネットワークに負担がかかるのでは・・? 初心者なもので、変な質問してすみません。^_^; TOME3

すると、全ての回答が全文表示されます。
  • driverII
  • ベストアンサー率27% (248/913)
回答No.2

・・・支店間でPCを接続することが禁止されているのであれば駄目でしょう。 許可を取る根回しなどが必要なのではないですか? 支店側で SQLServer2000PersonalEdition などをインストールして支店側にサーバを作り必要なタイミングでデータをメインサーバから持ってきて、そこのデータを使う方法などがありますが・・・ 質問からすると十分な通信速度(あるいは帯域)がないような印象を受けます。もう少し詳しい情報がないとこれ以上つっこんで回答できません。例えばデータの量とか、Access2000での処理方法とか・・・ もし十分な準備なく実行しようとした場合、業務を止めるような事になりかねません。 1. SQLServerのデータ利用法は間違っているのでしょうか?   間違ってません。が、処理方式には注意を要します。 2.SQLServerのデータを支店間で利用するには、どんな方法が良いのでしょうか?   データの量と、通信回線の状況、データの利用形式(参照のみか、更新も含む)などによります。

UME3
質問者

お礼

driverIIさん、ご返信ありがとうございます。 システム部から、トライアル使用してよいと仮許可をもらいました。 今のところ問題は発生していません。 通信回線の状況ですが、ネットワーク上に約1,000台のPCが存在しています。 各支店共通のサーバーが数台(メール、AS400、etc)。 (内線電話以外でネットワークに異常が発生したことはないです。速度的にも問題ないと思います。) データは、10個のテーブルに約4万件ずつデータが保管されています。(100MB)(支店のSQLサーバー) 検索方法は、検索項目をSQL文のANDで結合して検索します。 検索結果の一覧を作りその中から選択したレコードを表示印刷します。 データの利用は参照のみです。 SQLServerのデータを支店間で利用するより良い方法(ネットワークにあまり負荷をかけない)がありましたら、 教えてください。ヒントだけでも結構です。勉強します。宜しくお願い致します。 TOME3

すると、全ての回答が全文表示されます。
noname#4564
noname#4564
回答No.1

わかる範囲でコメントします。 少なくとも、ODBCとAccess(MDB/MDEなら)は止めた方が方がよいでしょう。 フロントエンド部分はVB6.0(枯れていると思うので、あえて.NETより6.0を 推奨します)を、DBアクセスミドルウェアにはADO + OLEDBを使用した方が よいと思います。 AccessのADPなら、MDB/MDEよりベターな選択肢かもしれませんが、コーディ ングは大幅に変更となります。(どうせ変更するなら、VBで作った方が・・・) その他、留意点としては、DBサーバで可能な処理はストアドプロシージャに 記述することでしょうか? あまり自信がないので、他の人のフォローを希望。(^人^;

UME3
質問者

お礼

nanashinogombei さん ご返信ありがとうございます。 ODBCとAccessの組み合わせはあまりお勧めではないのですね。 もう少し他の方の意見を待ちたいと思います。 ありがとうございました。 TOME3

すると、全ての回答が全文表示されます。

関連するQ&A