Sql server FireDAC截断包含!字符(Delphi 10.4+;SQL Server 2017)

Sql server FireDAC截断包含!字符(Delphi 10.4+;SQL Server 2017),sql-server,delphi,sql-server-2017,firedac,delphi-10.4-sydney,Sql Server,Delphi,Sql Server 2017,Firedac,Delphi 10.4 Sydney,FireDAC查询中存在某种SQL文本的预处理,它会截断其包含的字符串文本!人物 很容易复制: 将TFD连接、TFDQuery连接到连接、TDatasource连接到查询和TDBEdit连接到数据源 在TFDConnection上设置服务器配置后,如果在TFDQuery上尝试此SQL:选择“Hel!”!o World'作为列,我只会在TDBEdit上看到他,而不是他!o世界 这是FireDAC的问题,因为同一查询直接在SQLServerManagementStudio上运行良好 有没有办法修复或

FireDAC查询中存在某种SQL文本的预处理,它会截断其包含的字符串文本!人物

很容易复制:

将TFD连接、TFDQuery连接到连接、TDatasource连接到查询和TDBEdit连接到数据源

在TFDConnection上设置服务器配置后,如果在TFDQuery上尝试此SQL:
选择“Hel!”!o World'作为列
,我只会在TDBEdit上看到他,而不是他!o世界

这是FireDAC的问题,因为同一查询直接在SQLServerManagementStudio上运行良好

有没有办法修复或禁用FireDAC的此预处理

它是由SQL Server原生客户端访问的Delphi 10.4和SQL Server 2017(我也在Delphi 10.3上尝试了相同的查询,并返回了相同的错误)


谢谢。

你看到了吗?@AndreasRejbrand。不,我没有看到这个答案。非常感谢。但我已尝试禁用ResourceOptions.MacroExpand,这些文字仍然会被截断。请参阅中的
特殊字符处理部分。第一行提到感叹号。@AndreasRejbrand我不知道我做错了什么,但是在第二次尝试禁用MacroExpand属性时,运行起来很有魅力。谢谢Lanyway,别忘了总是使用参数在查询中输入字符串值。这不适用于这种无表SELECT,但它解决了大多数类似问题,而且更安全(避免SQL注入)和更快(允许重用准备好的语句)。