MSSQL+ODBC+PHP = 0 rows in result


MSSQL+ODBC+PHP = 0 rows in result

我通过php + linux ODBC使用远程MSSQL基地。一切都很好,但今天我用SET + PIVOT写查询,得到错误:

[unixODBC][FreeTDS][SQL Server]SELECT failed because the following SET options have 
incorrect settings: 'ANSI_NULLS, QUOTED_IDENTIFIER, CONCAT_NULL_YIELDS_NULL,
ANSI_WARNINGS, ANSI_PADDING'. Verify that SET options are correct for use with indexed views 
and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or 
XML data type methods and/or spatial index operations.

我试着写SET ANSI_NULLS ON等,但它不起作用,结果有0个字段。通过MSSQL studio直接在服务器上执行相同的查询可以完美地工作。你知道哪里会有问题吗?谢谢。

更新:
freetds.conf

[syserver]
host =192.168.1.200
port = 1433
tds version = 7.0
AnsiNPW=YES
QuotedID=YES

odbc.ini

[sy_odbc]
Driver = FreeTDS
Description  = ODBC connection via FreeTDS
Trace = No
Servername = syserver
Database = Insy
将odbcinst . ini

[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.so
CPTimeout =
CPReuse =
FileUsage = 1

在我got tds version=6.0之前,在将其更改为7.0之后,所有诸如ANSI_NULLS的错误都消失了,但我仍然有0行结果。AnsiNPW=YESQuotedID=YES对我没有任何帮助。如果尝试更改版本8.0在简单查询的结果,我有??????????odbc.ini中的TDS_version=7.0也不做任何事。

我的问题在这里。我的连接字符串是:$conn=odbc_connect('sy_odbc','t','t');

更新2:


当我更改TDS_version to 7.07.2时,我的一些php页面停止工作,所以我将其返回到6.0。
你提出的连接字符串不适合我。在所有。(我用了一年多了,在那个问题之前,它很好)
这是6.0版本问题查询的错误日志(这里我们有ANSI_NULLS等警告)
以下是7.0版本问题查询的错误日志(没有警告,但是结果中有0行)

我还能想到两件事:

1)您的连接字符串。手册说你的连接字符串应该是这样的:

$conn = odbc_connect('Driver={sy_odbc};Server=192.168.1.200;Database=Insy', $username, $password);

所以我想先试一下,看看是否有帮助。

2)当您遇到ODBC连接问题时,您应该打开日志记录,以便捕获错误消息。为此,在/etc/odbbcist .ini文件中添加以下行:

[ODBC]
Trace     = yes
TraceFile = /tmp/odbc.log

如果您的查询仍然不起作用,请编辑您的问题并添加odbc.log文件的输出(假设其中有错误消息)。