3

この質問の言い方がわからないので、説明してみます。SQLServer2005にサードパーティのデータベースがあります。別のSQLServer2008があり、サードパーティのデータベースのデータの一部も「公開」したいと考えています。次に、このデータベースをポータルおよびレポートサービスのバックエンドとして使用します。これはデータウェアハウスになります。

宛先サーバーで、サードパーティのデータベースとは異なるテーブル構造でデータを保存したいと思います。非正規化したいテーブルがいくつかあり、不要な列がたくさんあります。また、同じ行に格納されているデータに基づいて更新する必要があるいくつかのテーブルにフィールドを追加する必要があります。たとえば、他の列に入力したい情報を含むvarcharフィールドがあります。これらすべてにより、データがクレンジングされ、レポートが簡単になります。

特定の宛先テーブルに必要なすべての情報を取得するためのクエリを作成できます。ただし、他のサーバーのソースで最新の状態に保つことができるようにしたいと思います。すぐに更新する必要はありませんが(それでもいいのですが)、おそらく10分ごとに更新したいと思います。数十万行のデータがありますが、データの変更や新しい行の追加などはそれほど大きくありません。

私は周りを見回しましたが、これを達成するための最良の方法はまだわかりません。私が知る限り、レプリケーションは必要なことを実行しません。おそらくMergeステートメントを使用して更新を行うためにt-sqlを手動で記述し、それをsqlサーバーエージェントを使用するジョブとしてスケジュールすることができます。私もSSISを調べてきましたが、それはETLのようなものに連動しているように見えます。

これを達成するために何を使用すればよいかわからないので、この種のことをどのように行うべきかについてアドバイスをもらいたいと思っていました。任意の提案をいただければ幸いです。

4

3 に答える 3

1

スキーマ/現実が変更されていないテーブルについては、レプリケーションを強くお勧めします。

データやリレーションが大幅に変更されているテーブルの場合は、それを処理するServiceBroker実装を開発することをお勧めします。サービスブローカー(SB)を使用したハイレベルアプローチは次のとおりです。

Table-->Trigger-->SB.Service >====> SB.Queue-->StoredProc(activated)-->Table(s)

ダイアリーのエクスポート/インポートのようなものに行きたくない限り、これにはSSISをお勧めしません。そのようなことには問題ありませんが、IMHOは、継続的または短期間の増分データ配布にはあまりにも扱いにくく面倒です。

于 2009-10-03T17:49:54.007 に答える
0

ステージングとパーティショニングは、あなたの場合には多すぎると思います。私は現在SSISで同じことを実装していますが、サポート活動に時間をかける必要があるため、1時間の頻度で実装しています。SSISを使用することはそれを行うための良い方法であると確信しています。

設計中に、データキャプチャの変更(CDC)プロセスをカスタマイズすることにより、カスタムレプリケーションを実現する別の方法を考えました。このようにして、ほぼリアルタイムのレプリケーションを実行できますが、注意が必要です。

于 2009-10-03T20:13:12.073 に答える
0

ニック、私は自分で SSIS ルートをたどりました。SSIS に基づいて 15 分ごとに実行されるジョブがあり、まさにあなたがしようとしていることを実行します。当社には巨大なリレーショナル データベースがあり、Tableau という製品を使用して、その上で複雑なレポートを作成したいと考えていました。私たちのリレーショナル モデルはそれほど魅力的ではないことがすぐにわかったので、SSAS を使用してその上にキューブを構築し、そのキューブを 15 分ごとに更新して処理しました。はい、SSIS は主に単純な ETL ジョブ用であるというオーラを与えますが、このような単純なクイック ジョブにも使用できることがわかりました。

于 2009-10-02T13:07:01.077 に答える