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

Delphi东京版FireDAC连接MSSQL2000提示对象名 'SYS.DATABASES' 无效

时间: 2024-11-06 06:35:30

Delphi东京版FireDAC连接MSSQL2000提示对象名 'SYS.DATABASES' 无效的相关文章

[Oracle][ODBC SQL Server Driver][SQL Server]对象名 'RECOVER.HS_TRANSACTION_LOG' 无效(转)

原帖由 qingyun 于 2010-6-21 15:44 发表 在写pl/sql的时候,有个很重要的注意点:比如:begin  update  某个sqlserver的表@dblink名字 .....;  update 某个oracle的表...;end; 这段pl/sql执行会报错:错误信息是:-----------------------------------------------------------------执行失败:ORA-02054: 事务处理 2.12.27634 有问题

问题-FireDAC连接Sqlite3提示“unable to open database file”

相关资料:http://www.dfwlt.com/forum.php?mod=viewthread&tid=1497&extra= 问题现象:FireDAC连接Sqlite3在开发电脑上没有问题,但将程序放在XP上就提示“unable to open database file”(后来发现别的WIN7也不行). 问题原因:可能是因为字符串编码问题. 问题处理:在FDConnection1控件上双击,出现的设置中,必须设置二项,"OpenMode=CreateUTF8"

Navicat Premium 连接oracle 提示ORA-01017:用户名/口令无效;登陆被拒绝

Navicat Premium 连接oracle,密码明明是对的,还是提示 ORA-01017:用户名/口令无效:登陆被拒绝.而用Pl/SQL 连接没有问题. 其实用户名和密码是对的,但还是会报错,这时,打开选项卡高级,默认角色为“SYSBDA”改为“Default”,重新“测试连接”即可. 原文地址:https://www.cnblogs.com/downmoon/p/11988531.html

FIREDAC连接MSSQL 2000报不能支持连接MSSQL2000及更低版本的解决办法

FIREDAC连接MSSQL 2000的时候会报错,原因是MSSQL CLIENT11或MSSQL CLIENT10客户端驱动程序已经不支持连接MSSQL2000及更低版本的数据库. 解决办法: 设置FDPhysSQLiteDriverLink1的ODBCDriver为“SQL Server”,这样FIREDAC将通过ODBC的方式连接上MSSQL2000数据库.

Delphi XE FireDac 连接池

在开发Datasnap三层中,使用FireDac 连接  MSSQL数据库. 实现过程如下: 1.在ServerMethods 单元中放入 FDManager.FDPhysMSSQLDriverLink1.FDGUIxWaitCursor1等控件. 2.自定义过程: private var oParams: TStrings; procedure TSrvMethods.SetupFDManager; //加载数据库链接信息. begin //*****初始化***** oParams := T

Delphi 中的DLL 封装和调用对象技术(刘艺,有截图)

Delphi 中的DLL 封装和调用对象技术本文刊登2003 年10 月份出版的Dr.Dobb's 软件研发第3 期刘 艺摘 要DLL 是一种应用最为广泛的动态链接技术但是由于在DLL 中封装和调用对象受到对象动态绑定机制的限制使得DLL 在封装对象方面有一定的技术难度导致有些Delphi 程序员误以为DLL 只支持封装函数不支持封装对象本文着重介绍了DLL 中封装和调用对象的原理和思路并结合实例给出了多种不同的实现方法关键字动态链接库DLL 对象接口虚方法动态绑定类引用面向对象1 物理封装与动

xe6+firedac 连接sybase

一.Win7 X64系统安装sybase odbc: 1.  下载对应包至c:\system_odbc(文件夹名自己取,在后面注册表内容需要用到),接着需要将该目录添加至path环境变量下: 2.  将值信息写入到注册表内: WindowsRegistry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\ODBCDrivers] "SYBASEASE ODBC Driver"=

(FireDAC) 连接定义

Defining Connection (FireDAC) 连接定义就是应用程序使用特定的FireDAC驱动连接数据库的参数集合.相当于BDE的别名,ADO的UDL,或者ODBC的DSN. For the list of supported database management systems and corresponding parameters, see FireDAC Database Connectivity. FireDAC支持三种连接定义: Type Description Pr

连接Mysql提示Can’t connect to local MySQL server through socket的解决方法

mysql,Mysqldump,Mysqladmin,php连接mysql服务常会提示下面错误: 1 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 这是由于修改mysql服务的了socket文件mysql.sock位置,而导致无法通过mysql socket文件连接到mysql服务引起的,具体解决办法如下:1.查看mysql服务的sock