FreeTDS - 在选项中给出密码时TSQL失败,但在键入时成功?

时间:2016-07-19 09:43:39

标签: tsql ubuntu odbc freetds

我试图通过PHP 5.6与Ubuntu 16.04服务器连接到MS SQL Server。我被迫使用这个版本的PHP,以确保与古老的版本兼容。应用

我通过 ondrej的PPA 安装了PHP 5.6及其模块(pdo,pdo_mysql,readline等),没有任何问题,但我无法找到并安装' mssql.so'应用程序所需的模块包我试图开展工作。

这就是为什么我决定使用 ODBC(和PDO_ODBC)驱动程序来连接数据库的原因。

为了做到这一点,我使用 unixodbc 安装了 freetds 并配置了我的文件:

' ODBCINST.INI'档案:

enter image description here

' ODBC.INI'档案:

enter image description here

最后是' freetds.conf'档案:

enter image description here

好吧,我猜我的所有文件配置都很好,但下一部分开始有点奇怪,让我解释一下:当我尝试使用tsql 连接到MS SQL数据库未在选项中提供密码,但在询问时输入密码,连接工作正常:

enter image description here

但是当我尝试提供与选项相同的密码( - P)时,它不起作用(我用正确的密码尝试了至少10次)!

enter image description here - > tsql无法为用户打开会话&#; WIPSOS-PHP'

发生同样的问题当我尝试将isql与我的某个连接器一起使用我在“odbc.ini”中配置了档案:

enter image description here

似乎与密码相关,但我无法找到问题,能帮助我吗?

1 个答案:

答案 0 :(得分:0)

我找到了部分答案,并且它与密码有效相关:当出现在为tsql命令的-P选项指定的密码中时,特殊字符似乎没有得到很好的解释

因此,取决于您的shell ,您必须在完成选项的字符串中转义这些字符。在我的情况下,使用bash,我不得不使用' \'逃避特殊性格:

tsql -S hostname -D Database -U User -P pa\$\$word

它现在有效!

enter image description here

但是当我试图用' \'在' odbc.ini'文件,它似乎仍然无法运作:

enter image description here

我的下一个问题是:'如何逃避' .ini'中的特殊字符?文件?' '我的配置有问题?'

编辑:我知道这是很久以前的事了,但我在" freetds.conf"中遇到了与主机名相关的配置问题。文件。事实上,我使用的是服务器的本地网络DNS名称,而不是IP地址(可以使用)。

我希望我的问题至少可以帮助一些人,处理TSQL和FreeTDS并不容易......