私は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
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 に戻します。
あなたが提案した接続文字列は私にはうまくいきません。まったく。(私は私のものを1年以上使用していますが、その問題の前は問題ありませんでした)これは6.0バージョンの問題クエリのエラーログです(ここにはその他の警告があります)ここに7.0バージョンの問題クエリのエラーログがあります(警告はありません。ただし、結果は0行です) TDS_version to 7.0
7.2
ANSI_NULLS