代码之家  ›  专栏  ›  技术社区  ›  Ta01

从SQLServer2000到DB2/AS400的OpenQuery导致锁

  •  3
  • Ta01  · 技术社区  · 16 年前

    每天早上,我们都有一个进程在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]与我们发出的查询一致。

    这种情况最近才开始发生。我们的select语句是否可能导致AS400升级锁?问题是,如果没有人工干预,它们不会被释放。

    3 回复  |  直到 15 年前
        1
  •  3
  •   Mike Wills    16 年前

    尝试将“FOR READ ONLY”添加到查询中,这样在检索记录时不会锁定记录。

        2
  •  0
  •   Booji Boy    16 年前

    从RPG/COBOL/JPL作业程序写入AS/400端的文件将导致文件锁定(我认为默认情况下)。当您阅读时,作业将无法获取此锁。我们使用的解决方案是。。。作业运行时不要读取文件。我们在excel中创建了一个大的时间表表,并将所有sql server和as/400的作业放在时间槽中,并对重要性和服务器进行颜色编码。这样也不会有冲突或过期的提取文件。

        3
  •  0
  •   Paul Morgan    16 年前

    您可能有承诺控制,导致可重复读取被锁定。检查与关联的SQL Server ODBC连接 <linkedServerName> 更改承诺控制。