わかりました、私は完全に途方に暮れています-このコードのビットは以前は機能していましたが、今は突然機能しなくなりました...。
declare GetAllCodes cursor local for
select ac.activationCodePKID from ActivationCodes ac
left join OrdersLineItems od on ac.activationCodePKID = od.activationCodePKID
where od.activationCodePKID is null and ac.internalorderPKID is not null
and ac.campaignID is not null
and ac.enteredBy like 'ProcessRequest|Entitlement%'
RAISERROR ('step completed', 0, 1) WITH NOWAIT
open GetAllCodes
while (1=1)
begin
RAISERROR ('entering cursor', 0, 1) WITH NOWAIT
fetch next from GetAllCodes into @activationCodePKID
if (@@fetch_status <> 0)
begin
DEALLOCATE GetAllCodes
break
end
exec fixOrder @activationCodePKID, 6, 7
end
ループでスタックしているようです...execステートメントをコメントアウトし、printステートメントを挿入しましたが、続行します。「stepcompleted」printステートメントが出力され、「enteringcursor」ステートメントも出力されます。そして、何も....ただハングします。クエリ自体は192行を返すため、ループオーバーするには、192回ループしてから、ブレークアウトして終了する必要があります。アイデア?
編集:
私はこれを追加しました:
declare @var varchar(10)
set @var = 'here: ' + cast(@@fetch_status as varchar(10))
RAISERROR (@var, 0, 1) WITH NOWAIT
fetch next from GetAllCodes into @activationCodePKID
...ステートメントの直後-まだ何もありません。「入力カーソル」は引き続き印刷されますが、ハングします...
編集2:
私はたくさんのものを取り除き、「カーソルの宣言」ステートメントの直後にこれを追加して、何かを出力できるかどうかを確認しました...
RAISERROR ('query done', 0, 1) WITH NOWAIT
open GetAllCodes
fetch next from GetAllCodes into @activationCodePKID
close GetAllCodes
deallocate GetAllCodes
まだハングしています...それで、「fetchステートメント」を取り出しましたが、もうハングしていないようです。何もしていないので、明らかに何もしませんでしたが、実行は完了しました。
これにより、fetchステートメントがハングしている理由を考えることができます。これに影響を与える可能性のあるサーバー設定はありますか?いくつかのメモリの問題?ハードウェアの問題?