从PHP使用freetds时的SQL Server连接设置

我在FreeTDS库的帮助下使用PHP从Linux环境连接到SQL服务器。 并且看起来某些连接参数被明确禁用。 具体来说,正在运行的过程中的某些地方:</ p>

  set quoted_identifier off 
set ansi_warnings off
set ansi_padding off
set ansi_nulls off
set concat_null_yields_null off
</ code> </ pre>

如何全局调整连接参数(在PHP级别或FreeTDS级别)以将上述所有内容设置为ON,而无需更改任何服务器上的任何应用程序 方式?</ p>

编辑:</ strong> </ p>

尝试使用odbc.ini建议,似乎无法正常工作。 </ p>

这是我的freetds.conf:</ p>

  [Servername] 
host = hostname.example.com
port = 1433
tds version = 7.0
timeout 3600客户端字符集UTF-8文本大小64512
</ code> </ pre>

odbc.ini:</ p>

  AnsiNPW = YES

QuotedID = YES
</ code> </ pre>

odbcinst.ini为空</ p>
</ div>

展开原文

原文

I'm connecting to SQL server from Linux environment using PHP with help of FreeTDS library. And looks like some connection parameters are being explicitly turned off. Specifically, somewhere in the process these are being ran:

set quoted_identifier off
set ansi_warnings off
set ansi_padding off
set ansi_nulls off
set concat_null_yields_null off

How can I adjust connection parameters globally (either on PHP level or on FreeTDS level) to set all of the above to ON, without having to change any of the applications on the server in any way?

EDIT:

Tried suggestion with odbc.ini, does not seem to work.

Here's my freetds.conf:

[Servername]
host = hostname.example.com
port = 1433
tds version = 7.0
timeout 3600    client charset UTF-8    text size 64512

odbc.ini:

AnsiNPW = YES
QuotedID = YES

odbcinst.ini is empty

php

1个回答



尝试将这些设置添加到服务器DSN中的 odbc.ini </ code>文件中(而不是freetds.conf) :</ p>

  [myserver] 
...我的服务器设置...
AnsiNPW = NO
QuotedID = NO
</ code> </ pre>
\ n

您可以在此处看到更多可以更改的设置:</ p>

https://msdn.microsoft.com/en-us/library/ms811006.aspx </ p>

祝你好运!</ p> \ n </ div>

展开原文

原文

Try adding these settings to your odbc.ini file in your server DSN (rather than freetds.conf):

[myserver]
... my server settings ...
AnsiNPW = NO
QuotedID = NO

You can see more of the settings you can change here:

https://msdn.microsoft.com/en-us/library/ms811006.aspx

Good luck!

dongyunshan4066
dongyunshan4066 - 完成
4 年多之前 回复
dongzhouhao4316
dongzhouhao4316 你能否修改你的问题以包括freetds.conf,odbc.ini和odbcinst.ini的内容? 它们通常都保存在/ etc中。
4 年多之前 回复
dp198879
dp198879 好的,不知道。 试过这个,并没有帮助。 另外,doc中没有提到concat_null_yields_null,它是导致问题的其中之一。
4 年多之前 回复
dpziir0079
dpziir0079 实际上,这是来自Linux。 FreeTDS + unixODBC一起工作以连接到SQL Server。 你的odbc.ini很可能是在/etc/odbc.ini中。 试试看?
4 年多之前 回复
duanou2016
duanou2016 这适用于Windows环境。 对不起,我没有在原帖中包含这个细节,但现在进行了调整,以澄清我是从Linux内部连接的。
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问