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單元進行修復:spa

首先從delphi目錄下把FireDAC.Phys.MSSQL.pas文件複製出來,而後打開它,註釋掉 {$I FireDAC.inc},而後查找到「procedure TFDPhysMSSQLConnection.InternalSetMeta;」,再找到「sCompatLvl := '(SELECT COMPATIBILITY_LEVEL FROM SYS.DATABASES WHERE LOWER(NAME) = ' +AnsiLowerCase(sCurCatalog) + ')';」,將其修改成:code

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

通過以上步驟,就完成FireDAC兼容MSSQL2000的修改了。對象

這是網上抄的,但還有一些細節工做要作的。ci

1.將你的Delphi安裝目錄下的 FireDAC.Phys.MSSQL.dcu文件刪除,記錄一下FireDAC.Phys.MSSQL.dcu的路徑。string

2.這時候再編譯會提示找不到FireDAC.Phys.MSSQL.pas文件,將這個文件複製到你的程序的目錄入,編譯生成FireDAC.Phys.MSSQL.dcuit

3.將生成的FireDAC.Phys.MSSQL.dcu文件複製到原先的目錄裏。這樣之後就不須要每個工程都放一份FireDAC.Phys.MSSQL.pas文件io

相關文章
相關標籤/搜索