每天早上我们都有一个进程,在AS400 / iSeries / i6上向DB2发出大量查询(~10000)(无论IBM现在称之为什么),在过去的两个月里,运营商一直在抱怨我们的查询锁定了几个文件阻止他们完成他们的夜间处理。查询非常简单,例如
Select [FieldName] from OpenQuery('<LinkedServerName>', 'Select [FieldName] from [LibraryName].[FieldName] where [SomeField]=[SomeParameter]')
我不是iSeries方面的专家,并且想知道是否有人从AS400 / Db2的角度对锁定升级有任何见解。导致锁定的ID已被确认为我们注册我们链接服务器的ID,我们知道它们最可能是因为[Library]和[FileName]与我们发出的查询一致。
这最近刚刚开始发生。我们的select语句是否可能导致AS400升级锁定?问题是如果没有人工干预,它们就不会被释放。
答案 0 :(得分:3)
尝试在查询中添加“FOR READ ONLY”,然后在检索时不会锁定记录。
答案 1 :(得分:0)
从RPG / COBOL / JPL作业程序写入AS / 400端的文件将导致文件锁定(我认为默认情况下)。在你阅读时,这份工作将无法获得这种锁定。我们使用的解决方案是...在作业运行时不读取文件。我们在excel中创建了一个大的计划表,并将所有sql服务器和/ 400的作业放在时间槽上,用于重要性和服务器的颜色编码。这样,没有冲突或过时提取文件。
答案 2 :(得分:0)
您可能有承诺控制导致可重复读取的锁定。检查与<linkedServerName>
关联的SQL Server ODBC连接以更改承诺控制。