2017-06-22 1 views
-1

私は過去6ヶ月以上にわたってSQLの世界と謝罪の対象となっている多元的な開発者です。これまでのところ、私は一般的な本能(多分いくつかの無知!)と、以前に尋ねられた質問に答えるこのサイトの善良な人々からの多くの助けを得ました。まずスケジュールされたジョブによってMySQLのデータでSQL Serverレポートデータベースが更新される

いくつかの背景...

私は、既存のレポートデータベース(SQL Serverを)持っていると私はどちらか30分でからデータをコピーするために探しています(MySQLを使用して)新しいアプリケーション、毎時間または毎日間隔が(になります報告ニーズに基づいて)。私はSQL ServerからMySQLデータベースを見ることができるようにリンクサーバーを作成しており、両方のデータベースに対して読み取り/書き込み/更新などの権限を持っています。

私は30分単位または時間単位のスケジュールは、典型的には、本質的にヘッダ/トランザクションであり、使用可能な作成日時スタンプ列と作成日時スタンプ列の両方を有する。

レポートDBを他のフィードで見ると、マージはリンクサーバー間で最も頻繁に使用されるステートメントですが、他のSQLサーバーデータベースにも使用されます。マージステートメントはまた、完全なテーブルとテーブルの比較を行うように見えますが、場合によっては完了するまでに(> 5分)かかることがあります。マージは安全なオプションのようですが、大きなテーブルが処理されていることを報告する際にパフォーマンスが低下することに気付きます。

作成されたタイムスタンプと変更されたタイムスタンプに動的な日付範囲(-1時間:00:00〜-19:59:59など)を使用するデルタロードのみを見ると、ジョブの実行によってデータベースが同期しなくなる可能性があります。

最初に特定のSQL文を求めているのではなく、より一般的なアプローチ(1時間ごとに実行された文)のための一般的なアプローチ/文の設計が、新しい行または変更された行のデルタロードを安全に実行するSQL ServerからMySQLへの接続。

私はこれらの情報が十分であることを歓迎し、喜んで喜んで受け入れている資料の読解/提案/指針を望みます。事前に

おかげ

ダレン

+0

tmi dude tmi再現可能な例 – polka

+0

どうしますか? – Shawn

+0

私は、「毎時MySQLからSQL Serverにデータを(変更と挿入のみ)するためにクエリを構成するにはどうすればよいですか」という質問があると思います – Darren

答えて

0

私は週末に「演奏」のビットを行っています。

私が取り組んでいるアプローチは、openqueryを使用してMySQLからCTEにデータ(挿入と更新)を取得します。次に、CTEをSQL Serverテーブルにマージします。

オープンクエリは(他のリンクテーブルと比較して)遅いようですが、ソースデータの量が制限されているため、マージがはるかに高速です。

関連する問題