MSSQL+ODBC+PHP = 0 строк в результате

Я использую удаленную базу MSSQL через php + linux ODBC. Все было хорошо, но сегодня я написал запрос с 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=YES а также QuotedID=YES ничего не делай для меня. Если попытаться изменить версию на 8.0 в результате простого запроса, у меня есть ??????????, TDS_version=7.0 в odbc.ini тоже ничего не делаю.

Мой запрос здесь. И моя строка подключения: $conn=odbc_connect('sy_odbc','t','t');

Обновление 2:
Некоторые из моих страниц php перестают работать, когда я изменился TDS_version to 7.0 или же 7.2так что я возвращаю его обратно в 6.0.
Строка подключения, как вы предложили, не работает для меня. Совсем. (Я использую мой более года, и это было хорошо, до этого вопроса)
Вот журнал ошибок для проблемного запроса с версией 6.0 (здесь мы имеем ANSI_NULLS и т.д. предупреждения)
Вот журнал ошибок для проблемного запроса с версией 7.0 (Предупреждений нет, но в результате 0 строк)

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 (при условии, что в нем есть сообщения об ошибках).

Другие вопросы по тегам