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

标签 tsql ubuntu odbc freetds

我正在尝试使用 Ubuntu 16.04 服务器通过 PHP 5.6 连接到 MS SQL Server。我被迫使用此版本的 PHP,以确保与“古老”应用程序的兼容性。

我通过 ondrej 的 PPA 安装了 PHP 5.6 及其模块(pdo、pdo_mysql、readline 等),没有任何问题,但我无法找到并安装“mssql.so”我正在尝试运行的应用程序所需的模块包。

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

为了这样做,我安装了 freetdsunixodbc 并像这样配置我的文件:

'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”打开 session

当我尝试将 isql 与我的连接器之一一起使用时,同样的问题发生了 我在“odbc.ini”文件中配置了:

enter image description here

这似乎是与密码有关,但我找不到问题,你能帮帮我吗?

最佳答案

我找到了部分答案,它与密码有效相关:当出现在为 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 并不容易......

关于tsql - FreeTDS - TSQL 在选项中给出密码时失败,但在键入时成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38454890/

相关文章:

sql - 使用变量的名称创建数据库

sql - 为每一行创建 7 位代码作为 ID

PHP:重命名没有扩展名的文件

python - 无法在 Ubuntu 18.04 上安装 Python-Rocksdb

tsql - 表值函数 [XML 阅读器] 非常慢 - 替代方案?

sql-server - 使用 T-SQL,从字符串中返回第 n 个分隔元素

Ubuntu repo 同步错误

PHP ODBC 错误 : tried to allocate 4294967293 bytes

用于 Excel 加载项的 MySQL,无法追加

mysql - MS Excel 2003 可以用来//编辑//MySQL 数据库吗?