3

毎朝、AS400 / iSeries / i6(IBMが現在呼んでいるもの)のDB2に多数のクエリ(〜10000)を発行するプロセスがあります。過去2か月間、オペレーターは、クエリがいくつかのファイルをロックするという不満を持っています。彼らが毎晩の処理を完了するのを防ぎます。クエリは非常に単純です。

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

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

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

4

3 に答える 3

3

クエリに「FOR READ ONLY」を追加してみてください。そうすると、取得時にレコードがロックされません。

于 2008-10-15T21:20:15.963 に答える
0

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

于 2008-10-16T04:18:41.453 に答える
0

Commitment Control が原因で Repeatable Read のロックが発生している可能性があります。関連付けられている SQL Server ODBC 接続を確認して<linkedServerName>、コミットメント制御を変更してください。

于 2008-10-23T22:34:04.810 に答える