• ベストアンサー

複数データベースでのテーブル共有

SQL Server初心者です。 下記のことが可能かどうか教えてください。 現在、社内ASP Webシステムが10個くらいあります。 バックエンドデータベースとしてAccessを使用していますが、ファイルサイズが数十メガになってしまったものもあり、これらをすべてSQL Serverに移行しようと考えています。 Accessでは、複数のデータベースで共有したいテーブルがある場合、リンクテーブルとして共有できるため、これらのWebシステムでも社員情報テーブルをすべてリンクテーブルで共有しておりました。 SQL Serverに移行した場合、Accessのようにテーブルを共有することはできるのでしょうか? ご教授のほどよろしくお願いします。 バージョン: SQL Server 2000

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

可能ですが、SQL Serverのたて方次第で方法は変わります。 ・1台のサーバにSQL Serverを1つだけインストールし、その中に全部のデータベースを作成する ・1台もしくは複数台のサーバにSQL Serverを複数インストールし、それぞれの中にデータベースを作成する どちらの方法で移行するかはシステム要件次第&サーバの台数次第です。 1つのSQL Server内に全部のデータベースを作成すると管理は容易ですが、1つのSQL Serverにサービスはデータベースエンジンとしては1つなので、負荷も集中しますし、SQL Serverのサービスがダウンしたときには、すべてのシステムが利用不能になります。 それを避けなければならないニーズがあるときに複数のSQL Serverをインストールしてそれぞれで管理します。 サーバ1台に複数のSQL Serverをインストールすることもできますが、管理負担は増えますし、CPU・メモリはそれだけ余計に食います。 前者であれば話は簡単です。 サーバAにSQL Serverをインストールして、例えば「社員」データベースと「売上管理」データベースを作成したとすると、 「社員」データベースのアクセス権限さえ与えてやれば、「売上管理」データベースに対してSQLを投げるときに SELECT * FROM 社員.dbo.社員マスタ という形で参照できます。 後者の場合は、リンクサーバというものを設定します。 サーバAに「社員」データベース、サーバBに「売上管理」データベースがあるときに、サーバBに「サーバA」という名前でリンクサーバを設定しておけば、 SELECT * FROM [サーバA].社員.dbo.社員マスタ という形で参照できます。

qrjmomi
質問者

お礼

早速のご回答ありがとうございます。 弊社で準備できるサーバーは1台なので、前者になります。 お教えいただいた方法を試してみたところ、希望するデータを他のデータベースより取得することができました。 ありがとうございました。

その他の回答 (1)

  • qbr2
  • ベストアンサー率50% (62/123)
回答No.1

SQL Serverには、リンクサーバという機能があります。 おそらく、望んでおられる機能が実現できると思いますので、 調べてみてください。

qrjmomi
質問者

お礼

早速のご回答ありがとうございます。 今回は複数のサーバーを使用しませんが、将来複数に分けて使用するようになった場合に、リンクサーバの機能を用いたいと思います。 ありがとうございました。

関連するQ&A

  • 共有したい場合は何を共有フォルダに移行すればいいですか?

    会社の業務についてですが教えてください。 OS:2000 アクセス2003を使用しています。 SQL Server Management Studio Expressは2005です。 テーブルをSQL Serverへ移行して フォームが入ったMDBファイルをハードディスクに保存し SQL Serverにあるテーブルをリンクテーブルとして表示させたいのですが D:\My Documents\SQL Server Management Studio Express ごと共有フォルダに移行すればいいのでしょうか? それとも特定のフォルダ(「Projects」など)のみ移行するべきなのでしょうか? また移行後必要な設定などがあれば教えてください!

  • accessのテーブルをテーブルリンクさせたい

    accessのテーブルのデータをSQLサーバーにテーブルリンクさせたいのですが どうやればいいでしょう? 新しいデータベースを作って右クリックしましたがそのようなメニューは探せません。

  • 現在リンクテーブルで繋いでいるテーブルをSQLサーバーへ移行しようと思うのですが

    現在リンクテーブルで繋いでいるテーブルをSQLサーバーへ移行しようと思うのですが 「SQLサーバーのテーブルを既存のアプリケーションにリンクさせる」 「新しいAccessクライアント/サーバ-アプリケーションを作成する」 のどちらがいいのでしょうか。 よろしくお願いします。

  • SQLサーバーは、他のデータベーステーブルをリンクとして表示させたい

    SQLサーバーのデータをアクセスへはテーブルリンクで表示させることができますが(元データのテーブルはSQLサーバー) アクセスにあるテーブルをSQLサーバーへリンクすることはできないのでしょうか? (アクセス2003、sql2005です) よろしくお願いします。

  • SQLクエリでデータベースが壊れる?

    AccessアプリでSQL Serverデータベースを更新しています。 データベースをODBCデータソースとして登録して、AccessdeそのODBCデータソースへのリンクテーブルを作っています。 データベースが何回か壊れたのですが、AccessVBAから発行したリンクテーブルへのSQLクエリでデータベースが壊れるようなことはあるんでしょうか? あるとしたら、そのクエリを発行すると必ず壊れると思うんですが・・・。 同じAccessアプリを使っても、データベースが壊れない環境もありますし・・・。 データベースが壊れた原因がわからなくて困っています。 Windows 7、SQL Server 2008 R2 Express です。

  • データベースサーバー構築

    質問場所がここで良いか少し不安ですが 主にWebで公開するデータベースのシステムを作ろうとしています 自分のスキルの範囲でやろうとしていますが少し分からないことがあるので 教えてください まず 自分のできること(やっていること)は ・Windows系サーバー(IIS)を使ってVBスクリプト(ASP)で ローカルにあるMDBファイルにアクセスし商品を紹介する動的ページの作成 です。 今後複数ユーザーでデータベースを使うことになるので システムを変えていく必要がでてきて MDBはダメだという事になり色々調べた結果、今後のことも考えWebサーバーとは別に データーベースサーバーを作ってやると言う結論になりました 分からないこと(あやふやな理解になっていること) 1.データベースサーバーとは何か?  これは OSは別として、SQL Server、オラクル、MYSQLといった  RDBMSをインストールしただけのデータベース置き場専用という感じのPCを指すと言うことで良いでしょうか?  例えば Win2000のIISでwebサーバーを作りその中のASPページから  別PCにあるデータベースにアクセスする構成がデータベースサーバーを別に設けると言うことで正しいのかどうかと言うことなのです。 2.データベースは何がよいか?(SQL Serverでよいか?)  本来であれば、webで商品在庫を公開することがメインで更新頻度が少ないデータベース  (300人ぐらいで共有し1万~3万レコードです)です、なおかつ複雑なSQLは発行しません。  ほぼASPからの接続で抽出(ID=** という単純な抽出条件)しか使わない、あとは並び替え位なので  MYSQLが向いているようでしたが、私はLinux系は全く分かりません。  なので メンテナンスの面や勉強する時間の節約からすれば  Windowsで動くSQL Serverが良いと思うのですが(MYSQLもWindowsで  動くけど得意とする高速性はLinux系でないと発揮しないみたいなのでやめようと思っています)  上記のような条件と使い方の場合、そんなに処理時間やマシンの負荷に両者間では大差があるのでしょうか?  MDBの時でもあまり不具合を感じなかったので、それよりは格段にSQL Serverは早いし負荷が少ないと聞いていますので  大丈夫かなと思っています。 3.SQL ServerをインストールするPCは何が最適か?  先も述べたようにデータベース専用として使う予定ですが  Win2000でよいのでしょうか?(XPより2000の方が安定がよいと思うので) それともWin2003Serverに  インストールできるならその方がよいでしょうか?  とにかく安定度が一番なのですが、そもそもWin2003Serverに  インストールできるのでしょうか?(もうすぐ2008?がでるからそれにしようかとも検討中です) 4.最終的に自分の思っていることと実体の構成(理解)は理解は以下のような感じで正しいのでしょうか?    複数でデータベースを共有するため、MDBでなくネットワークに強い (共有データベースで壊れにくい?壊れない?)データベースに変えるため、windowsで動くSQL Serverを使う  そのSQL ServerはwebサーバーがあるPCとは別のPCにインストールして使う  (データベースサーバーを別に用意する)ことでwebサーバーの負荷も減らし、データベースも快適に動くようにする 最終的にはWin2003Server×2台で1方はwebサーバー1方はSQL Server をインストールして使うことで上記を実現させる 5.SQL ServerのデータベースはMDBのような最適化というような作業が必要なのでしょうか?  そもそも 似ているようで違う MDBとSQL Serverでその特徴がきちんと理解できていないので  愚問なのかもしれませんが 気になるので教えてください 6.オラクルと違いSQL Serverはレコードの更新や追加の時  その行(レコード)だけロックすると言うことができない?  ようなので、Aさんが自分の商品を更新中にBさんも更新する  と言うようなことが起こった場合(MDBはこれになると壊れると書いているので MDBをやめました)  Aさんの更新が終わるまでBさんは更新できない(更新終了まで待つ)と言うことになるのでしょうか?  また、このとき商品一覧を要求された場合、更新中の情報はどの様になるのでしょうか?(更新終了まで見れない?) なんか 分かりにくい質問になってしまいましたが、お金をかけて 買ったはいいが、理解不足でやりたいことができなかったと言うことは 避けたいので ご教授下さい。 よろしくお願いします。

  • データベースの選定について

    データベースの選定についてアドバイスお願いします。 現在は各個人用のPC数台と共用PC1台をLANで結んでいます。 共用PCにはアクセスで作成したシステムが入っており、このシステムを利用する者が必要なときに共用PCを使って作業しています。 アクセスの運用はデータ保存テーブル用MDBファイルとアプリケーション用MDBファイルを接続して利用しているという状況です。 最近になって各個人のPCからデータベースを利用する方が便利だろうということでシステムの改良を考えています。 共用PCをデータベースサーバーとして運用することで問題を解決できると思うのですが、具体的にどのような方法が最適なのかアドバイスをお願いしたいのです。 1)各個人用PCにアプリケーションMDBファイルを配布して、サーバーにはデータ保存テーブルMDBを置く。 2)SQLサーバーを導入する。 1)の方法が一番お手軽だと思っていますが、MDBは同時に複数が使用することができないということなので問題が生じる可能性があります。 しかし、そういうケースはそれほど多くないと思われますので実際の運用面では大きな問題は発生しないかもしないだろうと考えています。 ただ、あくまでもアクセスファイルは共有することを念頭に置いていないらしいので不安もあります。 2)の方法はSQLサーバー導入のハードルが高いですが、時間的余裕は多少ありますので余っているPCでテストしながらチャレンジする価値はあると考えています。 この場合、どのSQLサーバーを選定するかが問題となります。 データ件数がMDBの限界を超える心配は当面ありません。 現在のところ、一日に共有PCを使ってアクセスを利用する頻度は多くても10回までです。 SQLは無償で利用できるものを考えています。具体的にはMySQLかマイクロソフトのSQL Server Expressです。 アクセスは一般的な作業ならこなせますが、SQLサーバーは全く初心者です。もちろん勉強する意志はあります。 この状況を踏まえた上でデータベースを選定するなら、どの選択がよいでしょうか? ・導入の容易さ ・システムの安定性 の面からのご意見をお聞かせ下さい。 具体的な移行方法については自分で調べるつもりです。 宜しくお願いします。

  • リンクテーブルのようなものは?

    ACCESSのリンクテーブルのような機能は、SQL Server 2000にあるのでしょうか? SQL Serverに作成したデータベースAとBがあり、AにあるテーブルをBから参照更新したりすることはできるのでしょうか? 具体的にはどのようなものになるのでしょうか? 初歩的な質問で申し訳ありませんが、何卒、よろしくお願いします。

  • AccessとDB2のテーブルリンクで…

    お世話になります。 ある2台のサーバーが社内にあります。 その2台のサーバーにはそれぞれ、IBMのDB2というデータベースを使用していて、それぞれのDB2内には同じデータベース名(テーブル)が存在します。 現在、サーバーAから新サーバーBに社内WEBシステムの移行を行っていて、Access2000のテーブルリンクを使って、サーバーAにあるDB2のデータベースAのテーブルとリンクをしています。 その際、テーブルリンクをする為にWindows2000の「ODBC データソース アドミニストレータ」のシステムDSNで、「IBM DB2 ODBC DRIVER」を使用してデータベースAにODBCを介して接続しております。 ですが、サーバーA側と同じ名前の、新サーバーBのデータベースAにODBCを介してテーブルリンクを繋ごうとすると、サーバーAと新サーバーBのデータベースAという名前が同じだからか、システムデータソースを追加しても、新サーバーB側のデータベースAに接続が出来ません。 この場合、新サーバーBのデータベースAの名前を同じものではなく、別の名前に変更した方が宜しいのでしょうか。 質問内容に不足な点がございましたら、内容を再度追加致します。 どうぞご教授宜しくお願いします。

  • [ASP+SQLsrv]データベース内のテーブルを取得したい!

    こんにちわっ☆ ASPとSQLサーバを使ってWebアプリの開発を行っています。 配列に格納されれば文句なし!なんですが、データベース内に作ったテーブルの全テーブル名称って取得できますか?? 宜しくお願い致します。 ex データベース[SchoolBase]   テーブル(1) m_students   テーブル(2) m_class   テーブル(3) m_teachers とあれば・・・ dbTables(0) → m_students dbTables(1) → m_class dbTables(2) → m_teachers ってなかんじで・・・。