1. 程式人生 > >Delphi東京版FireDAC連接MSSQL2000提示對象名 'SYS.DATABASES' 無效

Delphi東京版FireDAC連接MSSQL2000提示對象名 'SYS.DATABASES' 無效

space ring select 需要 工作 工程 pro ces value

在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文件

Delphi東京版FireDAC連接MSSQL2000提示對象名 'SYS.DATABASES' 無效