質問があります:
SELECT *
FROM OPENQUERY
(
Oracle,
'SELECT *
FROM [some_table]'
)
約7時間実行されます。システムを変更するときに、このクエリを1回実行するだけで、新しいシステムにデータをインポートできます。
SQL Server 2005には、インポートされたデータ量や送受信されたバイト数を追跡するテーブルがいくつかありますか?これを試して監視したり、状況を確認したりできますか?
MS SQL 2005には、インポートされたデータ量または送受信されたバイト数を追跡するテーブルがありますか?だから私はこれを試して監視したり、これがどうなっているかを確認したりできますか?
これを行う最も簡単な方法は、現在実行中の要求、セッション、または接続に関連付けられた管理ビューのクエリです。
最初の2つは、これまでにクエリによって返された行数を含むrow_count
属性を公開します。返される行の総数がわかっている場合(だいたいでも)、これは単純な進行状況を示します。
3番目のビューはnum_reads
およびnum_writes
を提供し、接続によって送受信されたネットワークパケットの数を示します。その接続に使用されているネットワークパケットのサイズは、net_packet_size
属性で指定されます。読み取りと書き込みにはプロトコルオーバーヘッドが含まれ、各クエリまたはステートメントの開始時にゼロにリセットされないため、対象のクエリの実行を開始する前に値を記録する必要があります。
3つのビューすべてで、関心のあるsession_id
を指定できます。次に例を示します。
SELECT row_count
FROM sys.dm_exec_requests AS DER
WHERE session_id = 52;
現在、ネットワーク遅延が大きな問題になることはめったにないので、クエリが長く続く場合は、ディスクが原因です。進行状況を監視する最良の方法は、ほとんどの作業を行う場所を正確に調べることです。 Oracleサーバー。したがって、OEMにアクセスして、そこから実行を監視してみてください。また、なぜそれがそんなに長く続くのかがわかるかもしれません。ディスク(SQL Serverを実行しているマシン上)が(リソース割り当てプロファイルに従って)100%使用されていない限り、ボトルネックがリモートサーバーにある可能性があります。