我正在通過php + linux ODBC使用遠程MSSQL庫。一切正常,但今天我寫的查詢與SET
+ PIVOT
並得到了錯誤:結果中的MSSQL + ODBC + PHP = 0行
[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工作室直接在服務器上執行的相同查詢完美工作。 任何想法可以成爲一個問題? 謝謝。
UPDATE:
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
之前和之後改變它ü所有的錯誤,如ANSI_NULLS
去了,但我仍然有0行結果。 AnsiNPW=YES
和QuotedID=YES
對我無能爲力。如果嘗試將版本更改爲8.0,則簡單查詢的結果爲??????????
。 TDS_version=7.0
在odbc.ini
也無能爲力。
我的查詢here。 我的連接字符串是:$conn=odbc_connect('sy_odbc','t','t');
更新2:
我的一些PHP頁面停止工作時,我已經改變TDS_version to 7.0
或7.2
,所以我將其返回到6.0。
建議的連接字符串不適用於我。完全一樣。 (我用我的比一年多了,這是罰款,這個問題之前)
Here的錯誤日誌問題查詢與6.0版本(在這裏我們有ANSI_NULLS
等警告)
Here的錯誤日誌問題查詢版本7.0(沒有警告,但結果0行)
[此問題](http://stackoverflow.com/questions/3416814/set-connection-settings-with-pyodbc-unixodbc-freetds)可能對您有所幫助。如果這不能解決你的問題,我建議在你的freetds.conf和/或你的odbc.ini中的「TDS_Version」值中更改'tds version'值。如果這些都不起作用,請使用完整的freetds.conf,odbcinst.ini,odbc.ini,您嘗試執行的SQL語句以及顯示如何連接到數據庫的代碼來更新您的問題。 – 2013-03-18 15:50:07
@BennyHill感謝您的關注。我已更新我的帖子。 – 2013-03-19 08:45:40
對不起Sergii,我不知道:-(我在TDS版本= 7.0的時候沒有看到錯誤信息,我假設你正在檢查你的'odbc_exec()'語句的返回值,它是not === FALSE?如果它返回FALSE,你應該執行'odbc_errormsg()'。 – 2013-03-20 19:02:40