Delphi东京版FireDAC连接MSSQL2000

在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) + ')';”,将其修改为:

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 div10000000);

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

时间 2018.07.21
评论