質問

毎朝、AS400 / iSeries / i6でDB2に多数のクエリ(〜10000)を発行するプロセスがあります(現在IBMが呼んでいるものは何でも)。過去2か月で、オペレーターはクエリがいくつかのファイルにより、夜間の処理を完了できません。クエリは非常に単純です。たとえば、

Select [FieldName] from OpenQuery('<LinkedServerName>', 'Select [FieldName] from [LibraryName].[FieldName] where [SomeField]=[SomeParameter]')

私は、iSeries側の家の専門家ではありません。AS400/ Db2の観点から、ロックエスカレーションに関する洞察を誰かが持っているかどうか疑問に思っていました。ロックの原因となっているIDは、リンクサーバーとして登録したIDであることが確認されており、[ライブラリ]と[ファイル名]が発行するクエリと一致しているため、最も可能性が高いことはわかっています。

これは最近起こったばかりです。 AS400がロックをエスカレートする原因となっているselectステートメントは可能ですか?問題は、手動での介入なしにリリースされないことです。

役に立ちましたか?

解決

<!> quot;読み取り専用<!> quot;を追加してみてください。クエリに追加すると、レコードを取得してもロックされません。

他のヒント

RPG / COBOL / JPLジョブプログラムからAS / 400側のファイルに書き込むと、ファイルロックが発生します(デフォルトでは)。読み取り中は、ジョブはこのロックを取得できません。私たちが使用した解決策は...ジョブの実行中にファイルを読み取らないことです。 Excelで大きなスケジュールシートを作成し、すべてのSQLサーバーとas / 400のジョブをタイムスロットに配置し、重要度とサーバーの色分けを行いました。そうすれば、競合や古い抽出ファイルもありません。

コミットメント制御により、反復可能読み取りのロックが発生する場合があります。 <linkedServerName>に関連付けられているSQL Server ODBC接続を確認して、コミットメント制御を変更します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top