2012-03-08 5 views
0

多くの類似の質問がありますが、私が探しているものが正確に見つかりませんでした。別のデータベースの1つのテーブルをコピーしてもらえません。

あるデータベースから別のデータベースに1つのテーブルをコピーして完全に更新したいとします。その後、毎日、SPがドロップされ、マスターデータベースデータを使用してローカルデータベースに挿入されます。またはローカルコピーを更新する他の方法。

masterデータベースからローカルデータベースに「挿入」するストアドプロシージャを作成することを検討します。私がこれをしたとき、私はテーブルが既に存在するというエラーを得る。

テーブル全体をドロップしてから挿入する必要がありますか?もしそうなら、SQLの例を投稿できますか?

私の問題: 1)テーブルを削除してから挿入しようとすると、そのテーブルがコンテキストに存在しないというエラーが表示されます。それは私にそれを落とさせません。 2)ドロップなしで挿入すると、テーブルがすでに存在すると表示されます。 3)毎日のインポートをスケジュールする最良の方法は何ですか?私はこれを実行すると

USE Local_DB 
CREATE PROCEDURE TransferProductTable; 
DROP TABLE Local_DB.dbo.tbProduct 
SELECT * 
INTO Local_DB.dbo.tbProduct 
FROM Master_DB.dbo.tbProduct 
GO; 

、私はLocal_DB.dbo.tbProductがすでに存在しているか、私は、ドロップテーブルを追加するとき、私はそれが存在しないので、私はそれをドロップすることができないことを取得エラーが発生します。

また、SQL Management Studioに[データのインポート]タスクがあります。それを実行するスケジュールされたタスクを作成する方が良いでしょうか、それともストアドプロシージャを実行するスケジュールされたタスクを作成するのと同じことでしょうか?これは、MS SQL 2008

+0

SELECT INTOとINSERT INTOの2つの全く異なるものです。 –

答えて

1

でWindowsボックス上で実行されている

さまざまな質問の多くを求めています。しかし、あなたの投稿したコードは、DROPの代わりに切り捨てを使用して変更することができます:

USE Local_DB 
CREATE PROCEDURE TransferProductTable; 
    Truncate Table Local_DB.dbo.tbProduct 
    Insert INTO Local_DB.dbo.tbProduct 
    select * FROM Master_DB.dbo.tbProduct 
GO; 
+0

よかった、ありがとう!ストアドプロシージャを実行するスケジュールされたタスクは、この毎日のインポートを実行するための良い方法だと思いますか? – User970008

+0

この手順の日常的な実行を自動化して追跡するSQL Serverエージェントジョブを作成します。ここでそれについて読む:http://msdn.microsoft.com/en-us/library/ms187061.aspx – Coltech

+0

もう一度、ありがとう、感謝します。 – User970008