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, отлично работает. Есть идеи, где может быть проблема? Спасибо.

ОБНОВЛЕНИЕ:
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 строк)


person Sergii Rechmp    schedule 15.03.2013    source источник
comment
Этот вопрос может быть вам полезен. Если это вас не исправит, я бы порекомендовал изменить значение tds version в вашем freetds.conf и / или значение TDS_Version в вашем odbc.ini. Если ничего из этого не работает, обновите свой вопрос, указав полный файл freetds.conf, odbcinst.ini, odbc.ini, оператор SQL, который вы пытаетесь выполнить, и код, показывающий, как вы подключаетесь к базе данных.   -  person Benny Hill    schedule 18.03.2013
comment
@BennyHill благодарим за проявленный интерес. Я обновил свой пост.   -  person Sergii Rechmp    schedule 19.03.2013
comment
Извините, Сергий, у меня нет идей :-( Я не видел сообщения об ошибке в журнале, когда у вас была версия TDS = 7.0. Я предполагаю, что вы проверяете возвращаемое значение вашего оператора odbc_exec(), а это не === FALSE ? Если он возвращает FALSE, вы должны выполнить odbc_errormsg().   -  person Benny Hill    schedule 20.03.2013
comment
@BennyHill, в любом случае, спасибо за помощь. Собственно, второй абзац поста - результат echo odbc_errormsg(); :(   -  person Sergii Rechmp    schedule 21.03.2013


Ответы (1)


Есть еще две вещи, которые я могу думать о Сергее:

1) Ваша строка подключения. В manual говорится, что ваша строка подключения должна выглядеть следующим образом:

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

person Benny Hill    schedule 19.03.2013
comment
Попробовала ваше предложение, посмотрите результат в обновлении, пожалуйста. - person Sergii Rechmp; 20.03.2013