0

2010 年 6 月 29 日 - 以前の削除ステートメントからコミットされていないアクションがありました。アクションをコミットしましたが、プライマリ ID の競合に関する別のエラーが発生しました。私はそれを修正することができます。物語の士気ですから、あなたの行動をコミットしてください。

元の質問 -

私はこのクエリを実行しようとしています:

with spd_data as (
select *  
from openquery(IRPROD,'select * from budget_user.spd_data where fiscal_year = 2010')
) 

insert into [IRPROD]..[BUDGET_USER].[SPD_DATA_BUD] 
  (REC_ID, FISCAL_YEAR, ENTITY_CODE, DIVISION_CODE, DEPTID, POSITION_NBR, EMPLID, 
   spd_data.NAME, JOB_CODE, PAY_GROUP_CODE, FUND_CODE, FUND_SOURCE, CLASS_CODE,
   PROGRAM_CODE, FUNCTION_CODE, PROJECT_ID, ACCOUNT_CODE, SPD_ENC_AMT, SPD_EXP_AMT, 
   SPD_FB_ENC_AMT, SPD_FB_EXP_AMT, SPD_TUIT_ENC_AMT, SPD_TUIT_EXP_AMT, 
   spd_data.RUNDATE, HOME_DEPTID, BUD_ORIG_AMT, BUD_APPR_AMT)
SELECT REC_ID, FISCAL_YEAR, ENTITY_CODE, DIVISION_CODE, DEPTID, POSITION_NBR, EMPLID,
       spd_data.NAME, JOB_CODE, PAY_GROUP_CODE, FUND_CODE, FUND_SOURCE, CLASS_CODE, 
       PROGRAM_CODE, FUNCTION_CODE, PROJECT_ID, ACCOUNT_CODE, SPD_ENC_AMT, SPD_EXP_AMT,
       SPD_FB_ENC_AMT, SPD_FB_EXP_AMT, SPD_TUIT_ENC_AMT, SPD_TUIT_EXP_AMT, 
       spd_data.RUNDATE, HOME_DEPTID, lngOrig_amt, lngAppr_amt
  from spd_data
left join Budgets.dbo.tblAllPosDep on project_id = projid 
                                  and job_code = jcc and position_nbr = psno
                                  and emplid = empid
where  OrgProjTest = 'EQUAL';

基本的に、IRPROD (オラクル データベース) からテーブルを選択し、それをローカル テーブルに結合し、結果を IRPROD に挿入します。

私が抱えている問題は、クエリの実行中に停止しないことです。1時間実行しましたが、キャンセルするまで続行します。帯域幅モニターで、SQL Server データの出入りを確認できます。また、クエリの選択部分を実行すると、4 秒で結果が返されます。

終了していない理由はありますか?同様の方法で他のクエリをセットアップしましたが、問題はありません(リモートテーブルではなくローカルテーブルからの挿入を許可しました)。

4

2 に答える 2

0

挿入なしで選択だけを実行すると、返されるレコードの数は? データは正しいように見えますか、それとも結合により複数のレコードがありますか?

挿入先のテーブルにトリガーはありますか? 行ごとに実行するように設計されたテーブルに多くのレコードが返され、トリガーが存在する場合、処理が遅くなる可能性があります。また、別のサーバーに送信しているため、ネットワーク パイプラインが速度を低下させている可能性があります。SQL Server からではなく、Oracle サーバーに予算データを送信し、そこから挿入を行う方がよいかもしれません。

于 2010-06-28T20:21:57.317 に答える
0

ボリューム メトリックが含まれていませんでした。ただし、一時テーブルを使用して結果を収集することをお勧めします。

次に、最初の数行を挿入してみてください。これが成功すると、すべてがうまくいっているという強力な指標が得られます。

トランザクション ログが大きくならないように、各挿入タスクを project_id または emplid で分類してください。

また、一括バッチ プロセスの作成についても検討する必要があります。

于 2010-06-28T18:38:58.723 に答える