-1

何百万ものレコードを SQL Server テーブルに挿入する T-sql ストアド プロシージャがあります。このストアド プロシージャを実行するには 2 つのオプションがあります

  1. SPでSSIS「SQL実行タスク」を実行する
  2. SSMS で SP を実行する

どちらがより速く実行され、より良いパフォーマンスを提供しますか?

(コメント経由) SP は CSV ファイルを SQl 2000 データベースにロードします。SSIS 2005 を使用して csv を sql 2000 テーブルに移行することを計画しているため、どの方法が適しているか

4

2 に答える 2

3

また、.NET ライブラリを使用してストアド プロシージャを呼び出し、コマンド ライン (OSQL、SQLCMD など) から呼び出し、SQL エージェント ジョブで開始することもできますが、呼び出しプログラムは少しも問題になりません。

最終的に、SQL Server データベース エンジンは、ストアド プロシージャを実行したいという要求を受け取り、同じパラメーターに対して、呼び出し元に関係なく同じクエリ プランを使用します。

違いを観察している場合は、Erland の記事を参照してください:アプリケーションで遅く、SSMS で高速

したがって、あなたの本当の質問は、CSV の読み込みに関するものと思われます。ストアド プロシージャのアプローチでは、開始方法に関係なく、同じパフォーマンスが得られるはずです。固定の CSV ファイルがある限り (一般的な import-anything を記述しようとしていない)、実際のData Flow Task. トラブルシューティングが容易になることは間違いありません。

また、アドバイスを求められていない人のために、SQL Server 2000 から抜け出し始めたばかりの場合は、2005 をスキップして SQL Server 2008 R2 に進んでください。SQL Server のサポート終了は 2000 で既に発生しています。2005 は 2016 で期限切れになります。ライセンス コストの変更は悪くないはずです。2000 から 2008 R2 への移行も悪くないはずです。ただし、2012年にはかなりの費用がかかります。美品なだけに残念。

于 2013-07-19T11:36:20.650 に答える
2

サーバーにインストールされている BIDS が 32 ビットで、サーバー自体が 64 ビットの場合、違いがある可能性があります。

SSIS パッケージから実行すると、32 ビットが使用されます。これにより、使用できる最大 RAM の制限も設定されます。

同時に、同じパッケージをサーバー ジョブとして実行すると、64 ビットで使用可能なすべてのメモリが使用されます。これは基本的にデータ フローに当てはまりますが、SQL タスクでも違いが生じる可能性があります。

于 2013-07-19T11:37:29.490 に答える