2016-09-29 6 views
0

1回のバッチで約2500行の大規模なT-SQLコードを実行する最良の方法は何でしょうか。このコードでは、約20種類の異なる表を使用し、さまざまなデータ・ソースからデータを集約し、ビジネス・ルールを適用し、最後に変換データを表に挿入します。私が持っている問題は、コードが大きすぎて、すべてのセクションが前の結果に頼っているということです。私は1つの大きなトランザクションwロールバックを作成する必要がありますか? 私は複数の小さなストアドプロシージャのコードを壊す必要があります。大きなSQLコードからSQLバッチを作成する

どのような考えですか?単一の巨大なSQL文がピースmealingロジックよりも良い作品どこ

おかげで、 ボブ

+0

私はそれを壊すだろう。 –

+0

"ベスト"アプローチはおそらくエージェントジョブを作成することです。バッチを複数のジョブステップに分割するかどうかは、完全にあなた次第です。別の方法として、ファイルに格納し、 'sqlcmd'をサーバから実行することもできます。そうしないと、クライアントマシンとサーバ間の接続が脆弱になり、そのバッチが中断されます。 – ajeh

+0

これを巨大なトランザクションで実行するかどうかは、ログの容量とすべての変更がそこに収まるかどうかによって決まります。スクリプトを実行する前にバックアップをとり、他の変更が並行して行われないようにするには、トランザクションをまったく使用しないで済むかもしれません。それはすべて依存している。 – ajeh

答えて

0

は、私が見てきました。また、本当に必要な場所で、複数のステートメントに書き直すこともあります。

個人的には、私は一時テーブルをロードし、そこから挿入/削除/更新することが、提供する最終データになるまで好きです。これにより、単一のモノリシックSQLステートメントよりも保守がはるかに簡単になります。私の本では、メンテナンスは常に懸念事項#1です。複数のものを壊さずに誰も更新できない場合、または変更を実装するのに10倍の時間がかかる場合は、それは悪い設計です。パフォーマンスは、最初の懸念事項としてメンテナンスを凌駕することはめったにありません。

+0

第2に、単一の大きなバッチは、より小さいバッチの同じ分割よりも優れたパフォーマンスを発揮する可能性があります。 – ajeh

関連する問題