ADO連携時にCLI_ISOLATION_WAIT=(REJECT)を設定しているにもかかわらずエラー「JYP2099E」「JYP5014E」が取得できない場合の原因と対処について
- ADO連携時、CLI_ISOLATION_WAIT=(REJECT)を設定していますが「JYP2099E デッドロックが発生しました.」および「JYP5014E スキーマ"~"の表"~"は占有中です.」のエラーが取得できません。
原因と対処方法を教えてください。 - “Recordset.EOF”プロパティでカレント行がEOFかどうか確認後は、以下のエラーがアプリケーション側で認識できなくなります。
- JYP2099E デッドロックが発生しました.
- JYP5014E スキーマ"~"の表"~"は占有中です.
これらのエラーをアプリケーション側で認識するタイミングは、“Recordset.MoveFirst”メソッドを実行するか、データを参照した時です。
上記エラーを認識するためには、EOFプロパティを確認せずに“MoveFirst”メソッドの実行またはデータを参照してください。
ただし、SELECT文の検索結果が0件であった場合、Visual Basicの実行時エラーが発生します。
エラーについては、【デットロックエラーの取得例】を参考に切り分けを行ってください。-
実行時エラー"3021"
BOFとEOFのどちらかがTrueになっているか、または現在のレコードが削除されています。
要求された操作には、現在のレコードが必要です。
【デットロックエラーの取得例】
-
On Errorステートメントを使用して、エラー処理ルーチンを設定する
-
デットロックのエラーを認識するためにMoveFirstを実行
-
実行時エラー"3021"は無視する
-
実行時エラー"3021"以外のエラー情報を取得する
'オブジェクト宣言
Dim Con As Connection
Dim Rst As Recordset
Dim msgstr As String
'Connectionオブジェクトの生成と設定
Set Con = New Connection
Con.ConnectionString = "DSN=DSN01;UID=USER01;PWD=PASS01;"
'コネクション接続
Con.Open
'Recordsetオブジェクトの生成
Set Rst = New Recordset
'1.On Errorステートメントを使用して、エラー処理ルーチンを設定
On Error GoTo RstOpenErr
'Recordsetオブジェクトを開く
Rst.Open "SELECT * FROM CHAR_TBL WHERE C_KEY=1 FOR UPDATE", Con, _
adOpenStatic, _
adLockPessimistic, _
adCmdText
'2.デットロックのエラーを認識するためにMoveFirstを実行
Rst.MoveFirst
On Error GoTo 0
Do Until Rst.EOF
'データ取得文字列の初期化
msgstr = ""
'列数の取得
For i = 0 To Rst.Fields.Count - 1
'データの取得
msgstr = msgstr & Rst.Fields(i).Value() & " "
Next
'メッセージボックスの表示
MsgBox msgstr, vbOKOnly, "Recordset"
'行の位置づけ
Rst.MoveNext
Loop
EOF_END:
'Recordsetオブジェクトを閉じる
Rst.Close
'コネクション切断
Con.Close
'オブジェクトの破棄
Set Rst = Nothing
Set Con = Nothing
Exit Sub
'エラー処理
RstOpenErr:
'3.実行時エラー"3021"は無視する
If Err.Number = 3021 Then
Err.Clear
GoTo EOF_END
End If
'4.エラー情報を取得する
If Con.Errors.Count > 0 Then
msgstr = msgstr & Con.Errors(0).Description & Chr(10)
msgstr = msgstr & "SQLSTATE: " & Con.Errors(0).SQLState & Chr(10)
Con.Errors.Clear
Else
msgstr = msgstr & Err.Description
Err.Clear
End If
MsgBox msgstr, vbOKOnly, "Error"
GoTo EOF_END
製品・サービス区分 | Symfoware | ||||
---|---|---|---|---|---|
製品・サービス情報 |
|
||||
アンサー種別 | 運用/保守 |