zoukankan      html  css  js  c++  java
  • Delphi东京版FireDAC连接MSSQL2000提示对象名 'SYS.DATABASES' 无效

    在Delphi 10.2.1 东京 版中,FireDAC默认不兼容MSSQL2000,会提示“[FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driver][SQL Server]对象名 'SYS.DATABASES' 无效。”的错误,对此需要修改FireDAC.Phys.MSSQL.pas单元进行修复:

    首先从delphi目录下把FireDAC.Phys.MSSQL.pas文件复制出来,然后打开它,注释掉 {$I FireDAC.inc},然后查找到“procedure TFDPhysMSSQLConnection.InternalSetMeta;”,再找到“sCompatLvl := '(SELECT COMPATIBILITY_LEVEL FROM SYS.DATABASES WHERE LOWER(NAME) = ' +AnsiLowerCase(sCurCatalog) + ')';”,将其修改为:

    1
    2
    3
    4
    5
    if oConnMeta.ServerVersion >= svMSSQL2008 then
       sCompatLvl := '(SELECT compatibility_level FROM sys.databases WHERE name = '
       + AnsiLowerCase(sCurCatalog) + ')'
    else // MSSQL2005、MSSQL2000没有sys.databases表
       sCompatLvl := IntToStr(oConnMeta.ServerVersion div 10000000);

    经过以上步骤,就完成FireDAC兼容MSSQL2000的修改了。

    这是网上抄的,但还有一些细节工作要做的。

    1.将你的Delphi安装目录下的 FireDAC.Phys.MSSQL.dcu文件删除,记录一下FireDAC.Phys.MSSQL.dcu的路径。

    2.这时候再编译会提示找不到FireDAC.Phys.MSSQL.pas文件,将这个文件复制到你的程序的目录入,编译生成FireDAC.Phys.MSSQL.dcu

    3.将生成的FireDAC.Phys.MSSQL.dcu文件复制到原先的目录里。这样以后就不需要每一个工程都放一份FireDAC.Phys.MSSQL.pas文件

  • 相关阅读:
    XMPP核心协议客户端
    平安中国
    读写XML的API们
    IM只是可以用来玩的东西
    再骂自己一句
    淡定
    自己打造SAX和DOM Parser
    Nickel Instant Messeging System
    XMPP RFC阅读笔记(二)
    think in java 笔记
  • 原文地址:https://www.cnblogs.com/wuxi15/p/7956018.html
Copyright © 2011-2022 走看看