• ベストアンサー

複数のSQLサーバから、SQLサーバにデータを取得する方法

3台のSQLサーバのデータを、1台のSQLサーバで日々自動で取得するにはどういう方法が良いでしょうか 3台のSQLサーバからは、同じ属性のテーブル情報を1つのテーブルに取得したい(更新日が前日分) PGはVB.netで考えています ご指導お願いします

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

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

もちろんREAD_ONLYも可能です。 リンクサーバは各サーバにあるログインを使って参照するわけなので、各サーバに参照専用ユーザを作成してあげる必要があります。 (既存のログインを使えるならば特別な追加設定は何もいりませんが) なお、SQL ServerはSELECTでも共有ロックがかかりますので、それすら避けたい場合はダーティリード(WITH (NOLOCK)を付けてSELECT)も検討する必要があるかもしれません。 (まあでも1日1回なんですよね?) 他の方法としてはスナップショットレプリケーションやSSISも可能ですが、メンテナンスを考えるとリンクサーバ+タスクが一番いいような気がします。

megumi85
質問者

お礼

 jamshid6様 度々ありがとうございます 各SQLサーバにRead用のユーザを作成する事は可能のようですので、リンクサーバで考えてみます。  ご回答、ありがとうございました。

その他の回答 (1)

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

その内容であれば、VBなど使わず、 ・データを集めるSQL Serverから3台のSQL Serverにリンクサーバを設定する ・データを集めるSQL ServerのSQL Server Agentにタスクを登録し、デイリー実行にスケジュールする  ここにはDELETE/INSERT(もしくはMERGE)を使ったSQL文、もしくは、ストアドプロシージャを登録する でどうでしょうか。

megumi85
質問者

補足

jamshid6さんご回答ありがとうございます。 リンクサーバでREAD ONLYでのアクセスを行う事は可能なのでしょうか? 又、データ元のサーバ側で特別な設定が必要でしょうか? 3台のSQL Serverは絶えずトランザクションが発生しています(取得する側のSQL Serverではデータ取得時以外基本的にトランザクションは発生しません) よろしくお願いします

関連するQ&A

  • SQL Serverからのvarchar型のデータ取得データ長

    PearのDBを使いSQLサーバーから「varchar(8000)」で宣言したフィールドからデータを取得すると255バイトで切られます(実際にはもっと長いデータが入っている)。”$db->tableinfo(テーブル)”でテーブルの情報をみると問題のフィールドの長さが「[len]=>255」となっています。 何とかサーバー上の型通りの長さのデータを取り出すことはできないでしょうか? 環境は以下の通りです。 ●サーバー OS: WindowsXP SQL Server Ver.: SQL Server 2000の8.0 Developer Edition ●クライアント1 OS: FedoraCore4 PHP Ver.: 5.0.4 FreeTDS Ver.: 0.63 ●クライアント2 OS: WindowsXP PHP Ver.: 5.0.5 ※クライアント1、2のDBはそれぞれバンドルされているPearを実行インストールしました。 サーバー⇔クライアント1 サーバー⇔クライアント2 共に長さ255で切られる。 AccessでODBC経由で取得した場合はデータ長255以上で取得できました。 何卒宜しくお願い致します。

    • ベストアンサー
    • PHP
  • SQLサーバから、項目の属性(型)を取得したいのですが・・・

    SQLサーバからテーブルの項目名、属性(型)を取得するには、どのように クエリを組めば良いのでしょうか?

  • SQL Serverのリンクサーバーの

    こんにちは。 現在VisualStudio 2008 ProでC#を用いてWebアプリケーションを作成しようとしています。 いつもは、SQL Serverのデータを扱うのにADO.NETを使用してアプリケーションを作成しています。 Webアプリケーションのデータベース用のPCとしてWindows2003とSQL Server2005 Standardが搭載されているPCにAccess2003で作られているmdbがリンクサーバー設定されているものを用意しております。 このmdbは別のシステムで使用されており、常に更新されています。 今のところ、SQL Serverのタスクを用いて定期的(10分おきとか)にこのリンクサーバー上のmdbの情報を読み取り、SQL Server上に作ったテーブルを更新しているのですが、これだと情報を取りにいった時にタスクの更新が行われるまで、古い情報を取得することになります。 リアルタイムで取得することを考えた場合、 C#で作成したアプリケーションでこのSQL Serverにアクセスした時に直接リンクサーバーに対してSQL文を実行するという方法を考えているのですが、いろいろ検索しましたが探すことが出来ませんでした。 この様な方法がありましたら教えていただけないでしょうか?

  • ExcelからSQLサーバへデータを登録する方法

    WindowsXP,VB6,SP5で開発しています。 質問なんですが、 VBからエクセルを開いて、エクセルに直接データを入力し、 そのエクセルで入力したデータを、SQLサーバにある既存のテーブルにエクスポートする。 なんてこと、できますでしょうか? できるとしたら、どんな方法がありますか? かなり困ってます。どうぞ、よろしくお願いしますm(_ _)m

  • SQL Serverの大量データ取得

    VB.NET言語を用いて、SQL Server から 10万件以上のデータを全件取得し、リストに格納する処理を実装しています。しかし、OutOfMemoryエラーが発生してしまいます。おそらくメモリ不足によるものだと考えています。 10万件以上のデータを高速に取得する最良の方法があれば教えてください。

  • SQL Server2008でリンクサーバからテーブルを作成する方法

    SQL Server2008で、リンクサーバからテーブル(属性も含み)作成を行うには どのようにするのでしょうか (リンクサーバの設定は行えましたが、SQL Serverの知識はほとんどありません・・・) into テーブル名 FROM リンクサーバ(テーブル) というので テーブル属性も含めてテーブルを作成できるとの記事はあったの ですが、クエリで実行してもエラーとなってしまいます。 SQL Server2008でSQLを発行するには特別な指定が必要なのでしょうか? (SQLを発行する場所が間違っているのかもですが) 初歩的な質問で申し訳ございません、よろしくお願いします

  • SQL Server2000のテーブルのデータ型

    SQL Server2000のテーブルのデータ型には、自動でインクリメントされる整数型(Accessでいうところのオートナンバー型)が見当たらないのですが、無いのでしょうか? 何か別の操作で出来るのですか? よろしくお願いします。

  • Sql Server 2005 でデータ抜けについて

    お世話になります。 クラサバを構築しているのですが、クライアントよりデータをサーバに登録する際、VB6 SP4のアプリでバッチ処理を行っております。1電文目(サーバのストアドプロシジャを起動)のみ、サーバ(Sql Server 2005)に更新できません。2電文目からあとは、正しく更新されています。 以前は、クライアント側のプログラムは同じだった状態で、サーバのデータベースは、SqlServer 7.0で運用しておりました。その際は、全く問題なく更新できておりました。 また、SQLSERVER2005でサーバ側のプロファイラを使用すると、1電文目も正しく残っています。 このような現象・対処方法等ご存知の方はいらっしゃいませんでしょうか。 よろしくお願いします。

  • ネット上どこからでも、SQLサーバに接続してデータを取得するには?

    WINDOWSXP,VB6,SP5で開発しています。 ネット上ならどこからでも、指定したSQLサーバからデータを取得して、 表示させるみたいなプログラムを作っています。 今まではVBWEBというのをつかっていたのですが、 会社も開発も終わっているみたいで、使い方もいまいちよくわからないので、 違う方法で接続できたらなあと思っています。 普通はどういう方法で接続するのでしょうか? どうぞ、よろしくお願いしますm(_ _)m

  • AccessのテーブルをSQL Serverに自動インポートする方法について

    現在SQL Server2005を使用しております。 別のサーバー内でAccessのテーブルデータが定期的に更新されており、 このデータを利用したシステムをSQL Server上で作ろうと考えています。 手動でSQL ServerにAccessのテーブルデータをインポートするやり方は分かりましたが、(データ更新の為に)定期的にインポートする方法がわかりません。 どのように実現すればよいか、サンプルや参考になるHPがありましたら 是非教えていただけないでしょうか?