• 締切済み

(SQLSERVER) 別サーバーへテーブルコピー

Siegruneの回答

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.3

BCPは、 1.販売管理サーバーで OUTパラメタをつけてデータベースから普通のファイルへ出力 2.出力したファイルを社内開発用サーバーへコピー  (ネットワークドライブで直接参照してもいいが4.が遅い) 3.社内開発用サーバーで対象テーブルをtruncateまたはdelete  (BCPではデータが変更された分はUpdateされたと思いますが削除された分が反映できないため) 4.社内開発用サーバーで INパラメタをつけてデータベースへ普通のファイルから読み込む という処理になります。 http://msdn.microsoft.com/ja-jp/library/ms162802.aspx 参照。(本当は2008R2のに移動してもらったほうがいいけど。) なお、テーブルレイアウトの変更は両方のサーバに必要。 他の方法としては、 A)データベースをバックアップしてリストアする。  他のテーブルは対象外なのでかえってやりにくい。  (まあ、別のデータベースとしてリストアしてmerge文とdelete文使って・・・   という方法はありますが) B)トランザクションレプリケーションする  たぶんバッチ処理でなくリアルタイムになってしまうので論外。  トランザクションログやディストリビューションデータベースのサイズなどもろもろを考慮する  必要もある。 C)スナップショットレプリケーションする  これは、時刻指定でコマンドを実行したときに全部入れ替えされるのでやり方としてはありと  思いますが。  販売管理サーバーに設定することが多いのと、知っておかないといけないことが大量なのと。。。 D)リンクサーバを作ってSQLを実行する。  これは、時刻指定で、deleteとmerge(またはinsert/update)命令を実行するだけ。  トランザクションログがあふれないかどうかだけが気がかりですが。  リンクサーバの作り方は下のURLあたりかな。  http://technet.microsoft.com/ja-jp/library/ff772782.aspx  権限設定で、はまる可能性はありますが、  sqlのほうは、deleteもmergeも、  テーブル名の指定で、リンクサーバ名.DB名.スキーマ名.テーブル名とするだけなので比較的簡単。 まあ、簡単なのは、BCPかリンクサーバを使う方法でしょう。

sujinosuke00
質問者

お礼

Siegrune様 回答ありがとうございます。 記載頂いた、URLを拝見しましたが、私にはハードルが高すぎて理解出来ませんでした。 質問では、理想を描いてしまったため、根本的なSQLServerを理解していない私には厳しそうです。 今まで、Accessのリンクテーブルを作成して必要なデータを抽出していたのですが、大量のデータのクエリをかけると販売管理システム自体が不安定になるため、上記のような事が出来ないかと考えておりました。 ですので、販売管理側に大きな負荷がかからなければ、(ADサーバー側は負荷がかかって停止しても問題ありません。)全テーブルを作り直してもかまいません。 あわせて、出来れば毎日深夜にその作業を行えれば、業務に支障が出る事は無いと思います。 間違っているかもしれませんが、BCPを使う場合。 販売管理SV側で、bcpコマンドでバックアップファイルを作成・出力。 ADSV側で、出力されたバックアップファイルを読込と言う事で宜しいでしょうか? お教え頂いたURLを拝見しましたが、イマイチ理解出来なかったため、最低限必要な書き方をお教え頂けたら幸いです。 私のイメージとしては、Mysqldumpみたいな事が出きれば現段階では良いと考えております。 あつかましいお願いで申し訳ありませんが、よろしくお願いいたします。

関連するQ&A

  • 別のDBからテーブルをコピーする方法

    SQL Server2005 Express Edition を使っています。 異なるDB間(同じコンピュータ内)で、テーブルをコピーしたいの ですが・・・ コピー元DB名:DB_A コピー元テーブル名:dbo.顧客 コピー先DB名:DB_B テーブルのコピーは select * into ・・・ from ・・・ を使えばできそうですが、別DBの場合の方法がわかりません。 お教えいただければ幸いです。 よろしくお願いいたします。

  • PostgresSQLのテーブルを他のサーバにコピーしたい!

    すいませーん!教えてください! Linux8.0でPostgresSQLを使っています。 サーバ内にあるDBのテーブルを、他のサーバにコピー、もしくは丸ごと転送するやりかったってありますか? あったら教えてください。 こちら、linuxは初心者。SQLも一般的なコマンドしか知らないので、出来れば詳しい手順とコマンドを教えていただければ助かります。 テーブルをtxtファイルにして…とか聞いたんですが。よくわからないのです。

  • テーブルの中身を違うテーブルへコピー

    お世話になります。 SQLについて質問があるのですが・・・。 Aというテーブルがあり、何件かデータが入っています。 そのAテーブルにフィールドを2つ新たに追加したいのです。 ALTER TABLEは使わずに、 以下の様な操作をしたいと考えております。 1:Aテーブルを違う名前に変更。  もしくはテーブルを丸々コピー。 2:テーブルBを作成。   (テーブルAのフィールドに2つフィールド追加した内容) 3:テーブルBにテーブルAの内容を丸々コピー。   その際、新規に追加した2つのフィールドには、初期値として、何かの文字or数字を入れる。 4:Aテーブルを削除 と、いう感じです。 作成はINSERT、削除はDROPを使えばいいのかなーって 思っているのですが、 テーブル名の変更や、テーブルの内容のコピーが ちょっと分かりません。 上記について、ご教授の程、よろしくお願いします。 なお、DBにはSQL Serverを使用しています。

  • bcpによる、テーブル→CSVファイル出力について

    bcpによる、テーブル→CSVファイル出力について SQL Server(2003)のクエリアナライザからテーブル->ファイル出力を試みたのですが、うまくいきません。 サーバからの実行ではなく、クライアントのEnterpriseManagerのクエリ実行です。 このエラーは、サーバ接続自体がうまくいってないということでしょうか? exec master.dbo.xp_cmdshell 'bcp xxxxx.dbo.コピー元テーブル名 out C:\AAA.csv -c -S サーバ名 -U 接続ID名 -P 接続パスワード' 実行結果 SQL Status=S1000 ,NativeError=0 Error=[Microsoft][ODBC SQL Server Driver]一括コピーホストのデータファイルが開けません。 csv->テーブルについては、BULK INSERTで問題無く取り込めているので、単純に逆を行いたいだけです。 bcp使わない方法があれば、それでもいいのですが。。。。。

  • SQLサーバーのテーブルの値が更新できません

    お尋ねします。 SQLサーバー2005にDB1というデータベースにdbo_TB1というテーブルがあります。そのテーブルの特定の列の値を更新したいので、AC.mdbというアクセスのファイルにテーブルのリンクをし、更新したいファイルを用意して、アクセスのクエリでデータを更新しようとしましたところ、更新ができませんでした。  dbo_TB1を更新可能にするためには、どのようにして権限を与えればいいでしょうか。  SQLサーバー2005の知識を習得しようと学習を始めたばかりで、よく理解できていません。よろしくお願いします。

  • SQLサーバでテーブルをコピーする

    SQLサーバ超初心者です。 A支店用のテーブルを作成(dbo.data_A)したのですが B支店(dbo.data_B)、C支店用(dbo.data_C)のテーブルを作成したいです。 Accessなどのように、コピーペーストなどはできないのですよね? ご教授お願いいたします!

  • SQLサーバーのテーブルに対してアクセスで更新クエリを行ないたい

    こんばんは。 ・vista ・アクセス2003 ・SQL Server 2005 です。 SQL ServerからテーブルをMDBへリンクしているのですが そのテーブルに対し、アクセス側で更新クエリを実行しようとすると 実行時エラー '3157': ODBC--リンク テーブル'テーブル名'での更新に失敗しました。 [Microsoft][ODBC SQL Server Driver]時間切れになりました。(#0) と言うエラーになり、更新クエリができません。 どうすればアクセスでSQLサーバーのテーブルに対して更新クエリを行えるのでしょうか? よろしくお願いします。

  • ストアドプロシージャで別DBに接続

    Oracleのマテリアライズドビューのデータを SQL Server 2008のDBに毎晩取り込む処理を作る必要があり、方法を検討中です。 SQL Serverが稼働しているWindows Server 2003のマシンから、 毎晩タスクで起動させて実行することを考えています。 SQL Serverのストアドプロシージャで実現できないかと考えているのですが、 ストアドプロシージャだけで実現可能でしょうか? Oracleに接続してビューのデータを取得し、それに基づいて、 SQL ServerのDB内のテーブルのデータ追加、更新、削除等を行います。 単純なコピーではなく、データ加工や変換等の処理も行います。 経験がないので、実現可能かというところから教えて下さい。 実現不可能なら、他にどのような選択肢があるか教えていただけると助かります。 よろしくお願いします。

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

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

  • [SQLserver7.0]旧サーバ → 新サーバへの移動

    こんにちわぁ♪ Win2000とSQLサーバ7.0の構成でSQLサーバをインターネットDBを運用しています。 サーバ増強のため旧サーバから新サーバへデータを移動させたいのですが・・・ ファイルの移動みたいなことでいける!と聞いたのですが・・・ どのようにすれば一番楽ですか?? お願い!教えて!!