为什么在PHP中链接服务器查询需要将ANSI_NULLS和ANSI_WARNINGS设置为on?

Llo*_*nks 6 php sql-server

我有一个使用OpenQuery的链接服务器语句:

SELECT mycol1, mycol2, mycol3 
FROM OPENQUERY(MYLINKEDSERVER, 'SELECT * FROM mysqldb.table')
Run Code Online (Sandbox Code Playgroud)

以上工作在SSMS中没有任何疑虑.当我使用PHP MySQL包装器在Web应用程序上运行此查询(使用相同的SQL Server凭据)时,我必须插入以下2个语句:

SET ANSI_NULLS ON

SET ANSI_WARNINGS ON

我已经阅读了ANSI_NULLS和ANSI_WARNINGS的定义,但是不太明白为什么必须将它们设置为on才能使查询在PHP中运行.

有谁知道原因?

我的链接服务器是一个MySQL实例.

Llo*_*nks 5

做了一些挖掘。简而言之,这意味着如果您对不是 SQL Server 框的链接服务器运行查询,那么您很可能需要打开这两个功能以标准化处理某些比较运算符的方式不同的数据库。

据说,未来版本的 SQL Server 将默认将 SET_NULLS 设置为 ON,没有选项可以更改它