我通过 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.
我尝试编写 SETANSI_NULLS ON
等,但它不起作用,结果中有 0 个字段。通过 MSSQL 工作室直接在服务器上执行的相同查询完美运行。知道哪里有问题吗?谢谢。
更新:
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
在 I 之前got tds version=6.0
,以及将其更改为 7.0 之后,所有错误ANSI_NULLS
都消失了,但结果中仍然有 0 行。AnsiNPW=YES
不QuotedID=YES
为我做任何事。如果尝试在简单查询的结果中将版本更改为 8.0,我有??????????
。TDS_version=7.0
在odbc.ini
也无所作为。
我的查询在这里。我的连接字符串是:$conn=odbc_connect('sy_odbc','t','t');
更新 2:当我更改或
时,我的一些 php 页面停止工作,所以我将其返回到 6.0。
您建议的连接字符串对我不起作用。完全没有。(我用我的一年多了,在那个问题之前很好)这是6.0版本的问题查询的错误日志(这里我们有等警告)这是7.0版本的问题查询的错误日志(没有警告,但结果为 0 行) TDS_version to 7.0
7.2
ANSI_NULLS