MSSQL + ODBC + PHP = 0行中的结果(MSSQL+ODBC+PHP = 0 row

2019-10-17 20:37发布

我使用的是通过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工作室直接在服务器上执行相同的查询工作完美。 任何想法,可能是一个问题? 谢谢。

更新:
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 ??????????TDS_version=7.0odbc.ini也无可奈何。

我查询这里 。 而我的连接字符串是: $conn=odbc_connect('sy_odbc','t','t');

更新2:
我的一些PHP页面停止工作时,我改变了TDS_version to 7.07.2 ,所以我将其返回到6.0。
连接字符串为您建议不要为我工作。 在所有。 (我用我的比一年多了,这是罚款,这个问题之前)
下面是错误日志问题查询与6.0版本(在这里我们有ANSI_NULLS等警告)
下面是错误日志问题查询与7.0版本(没有警告,但0行的结果)

Answer 1:

有两件事我能想到塞尔吉的:

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

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

所以我想给一个尝试第一,看看是否有帮助。

2)您有您应该启用日志记录的ODBC连接问题,这样你就可以捕捉错误消息的任何时间。 要做到这一点下面的行添加到您的/etc/odbcinst.ini文件:

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

如果您的查询仍然不能正常工作,请编辑您的问题,并从odbc.log文件添加输出(假设有错误消息在它)。



文章来源: MSSQL+ODBC+PHP = 0 rows in result