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

链接服务器错误的未知原因

  •  1
  • MartW  · 技术社区  · 17 年前

    我们有一个运行SQL Server 2000 Standard Edition SP3的旧Windows 2000 Server。它有一个链接服务器设置,通过ODBC连接连接到Informix数据库。在一年中的大部分时间里,对链接服务器运行OpenQuery都很好,没有任何问题。 但是,每隔几个月,此链接服务器就会失败,并且在SQL Server重新启动之前不会再次工作。 我们在Enterprise Manager中看到的错误是:

    ---------------------------
    SQL Server Enterprise Manager
    ---------------------------
    Error 7399: OLE DB provider 'UNKNOWN' reported an error.  
    
    Memory allocation failure.]
    Memory allocation failure.]
    OLE DB error trace [OLE/DB Provider 'UNKNOWN' IDBSchemaRowset::GetRowset returned 0x80004005:   ].
    ---------------------------
    OK   
    ---------------------------
    

    如果我尝试在查询分析器中对链接服务器运行任何SQL查询,则报告的错误如下:

    [OLE/DB provider returned message: Unspecified error]
    OLE DB error trace [OLE/DB Provider 'MSDASQL'
    IDBCreateCommand::CreateCommand returned 0x80004005:   ].
    Msg 7399, Level 16, State 1, Line 1
    OLE DB provider 'MSDASQL' reported an error.
    

    如果我应用引用的跟踪标志 here 我得到了更多的细节:

    OLE DB error trace [Non-interface error:  OLE DB provider MSDASQL
    returned an incorrect value for DBPROP_CONCATNULLBEHAVIOR which should
    be either DBPROPVAL_CB_NULL or DBPROPVAL_CB_NON_NULL].
    [OLE/DB provider returned message: Unspecified error]
    OLE DB error trace [OLE/DB Provider 'MSDASQL'
    IDBCreateCommand::CreateCommand returned 0x80004005:   ].
    Msg 7399, Level 16, State 1, Line 1
    OLE DB provider 'MSDASQL' reported an error.
    

    有什么可能导致这种情况的想法吗?我们不知道任何服务器故障或对设置的更改,重新启动似乎总能解决这个问题。Informix数据库的版本似乎是Informix Dynamic Server 2000 9.21.uc2,升级或修补它不是一个选项。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Jonathan Leffler    17 年前

    请注意,IDS9.21长期不受支持——事实上,9.30和9.40(IDS的后续版本)也都不受支持。尽管出于政治原因,您似乎无法进行升级,但您的升级已过期数年。

    SQL Server端的某个地方似乎存在内存泄漏,这可能是由您使用的Informix ODBC驱动程序中的内存泄漏引起的。

    如果您不能升级任何东西,那么定期重新启动SQL Server以清除累积的内存是最简单、最可靠的选项。因为你暗示它通常一次工作几个月,所以我会考虑每月重新启动一次左右。

    推荐文章