【问题标题】:How to debug an intemittent error using Progress OpenEdge database如何使用 Progress OpenEdge 数据库调试间歇性错误
【发布时间】:2015-08-05 19:14:15
【问题描述】:

我有一个程序在复杂查询中间歇性失败。

错误显示:

System.Data.SqlClient.SqlException:无法从链接服务器“LinkedServer”的 OLE DB 提供程序“MSDASQL”获取一行。

查询如下所示:

    SELECT Replace([JOB-NO],'M0','') as KeyTaskID,
                                                     dbo.SFGET_UniqueTaskID([CLIENT-CODE],Replace([JOB-NO], 'M0', ''), 0, [TRADE-CODE]) AS HMSUniqueTaskID,
                                                     [LATEST-PRIORITY] AS PriorityCode,
                                                     [KeyProperty] AS KeyProperty,
                                                     Replace([JOB-NO],'M0','')  AS KeyJob,
                                                     [JOB-TYPE] as TaskSubType,
                                                     CONVERT(varchar(6),[MAINT-OFFICER]) AS Officer,
                                                     LEFT(FORENAME + ' ' + SURNAME, 50) AS OfficerName,
                                                     [JOB-NO] + '  ' + LEFT(RTRIM(REPLACE([TEXT-LINE], ';', CHAR(13))), 480) AS Description,
                                                     dbo.SFGET_FormattedDate([TARGET-DATE],0) AS DueDateTime,
                                                     [CURRENT-STAGE-CODE] AS CurrentStageCode
                                                FROM openquery(LinkedServer, '
                                              SELECT DISTINCT
                                                     "RM-JOB"."JOB-NO",
                                                     "RM-JOB"."CLIENT-CODE",
                                                     "RM-JOB"."LATEST-PRIORITY",
                                                     "RM-JOB"."TRADE-CODE",
                                                     "RM-JOB"."JOB-TYPE",
                                                     "RM-JOB"."TARGET-DATE",
                                                     "RM-JOB"."MAINT-OFFICER",
                                                     "RM-JOB"."TEXT-LINE",
                                                     "RM-JOB"."CURRENT-STAGE-CODE",
                                                     "RM-JOB"."PLACE-REF",
                                                     "IH_OFFICER".FORENAME,
                                                     "IH_OFFICER".SURNAME
                                                FROM "PUB"."RM-JOB"
                                                LEFT OUTER JOIN "PUB"."IH_OFFICER"
                                                  ON ("IH_OFFICER"."OFFICER-CODE" = "RM-JOB"."MAINT-OFFICER") 
                                               WHERE "RM-JOB"."JOB-TYPE" = ''GASS''
                                                 AND "RM-JOB"."JOB-STATUS" = 06
                                                 AND "RM-JOB"."CONTRACTOR" = ''NWH001'' ') as ibsTasks
                                               INNER JOIN [SVSExtract].[dbo].Property prop
                                                  ON ibsTasks.[PLACE-REF] = prop.UserCode

我一直在使用 SQL Server Management Studio 手动测试它。它偶尔会失败,但它主要工作正常。

我不知道如何调试无法随意重现的错误。

有什么建议吗?

【问题讨论】:

  • 是完全相同的查询(包括 where)随机失败还是不同的 where 子句失败?根据您的 OE 版本和您对实际 OE 服务器的访问级别,可以检查/启用各种日志。
  • 是的。失败时出现各种错误。最常见的是“[DataDirect][ODBC Progress OpenEdge Wire Protocol driver][OPENEDGE]Failure getting record lock on a record from table PUB.RM-JOB.”。我已经尝试在select语句之前添加 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 但这也不起作用。
  • 您是否尝试在查询中添加 WITH (NOLOCK)?我发现通过多个层(DSN、链接服务器等)控制隔离级别充其量是有问题的。

标签: sql openedge progress-db


【解决方案1】:

我自己对 SqlClients 和 Progress 不是很精通,但是:Progress Knowledgebase 可能会给你一个解决方案!

This entry 例如描述了一个类似的错误,即使提到的版本可能比您使用的版本旧? (在询问 OpenEdge 时总是发布版本 - 那里有很多较旧的安装,并且在过去几年中 Progress 已经发展了很多)。

老实说,最好使用 Google 搜索知识库:

搜索例如:site:knowledgebase.progress.com MSDASQL,你会得到48 results

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多