dbext 连接到 OSX 上的 SQL 服务器(/usr/local/bin/osql:非法选项 -- w)

dbext Connection to SQL Server on OSX (/usr/local/bin/osql: illegal option -- w)

我一直在尝试使用 MacVim 让 dbext 连接到 OSX 上的外部 SQL 服务器实例。 到目前为止,我已经尝试了几次不同连接字符串的迭代,所有这些都是 return /usr/local/bin/osql: illegal option -- w.

这让我觉得这可能不是连接字符串问题,而是连接堆栈中涉及 osql 或其他内容的问题。但是,我能够在终端(使用 osql)中的 tsql 和 isql 中连接到服务器,并且能够使用 DBI 从 PERL 脚本中获取结果。 /usr/local/bin/osql 是我机器上 osql 的正确路径。

完整错误示例:

Connection: T(SQLSRV)  H(<hostname>)  D(<db name>)  U(<user name>)   at 13:18
/usr/local/bin/osql: illegal option -- w
Syntax: osql -S server -U user -P password
To change connection parameters:
:DBPromptForBufferParameters
Or
:DBSetOption user|passwd|dsnname|srvname|dbname|host|port|...=<value>
:DBSetOption user=tiger:passwd=scott
Last command(rc=1):
osql -w 10000 -r -b -n -U <username>  -P<password>  -H <hostname>  -d <dbname>  -i <temp file path>/dbext.sql
Last SQL:
SELECT TOP 5 * FROM <table_name>
go

我试过的连接字符串格式 (.vimrc):

let g:dbext_default_profile_Test0=DBI:user=<username>:passwd=<password>:dsnname=<TDS named DSN>'

let g:dbext_default_profile_Test1='type=SQLSRV:user=<username>:passwd=<password>:host=<host address>'

let g:dbext_default_profile_Test2='type=SQLSRV:user=<username>:passwd=<password>:dsnname=<TDS named DSN>:srvname=<boxname>'

我已经尝试重新安装 FreeTDS、UnixODBC 和 DBI。当独立于 dbext 使用时,这些似乎工作正常(仍然)。

我错过了什么? 正确的答案是任何导致连接的事情:要么改变其中一个辅助。产品(FreeTDS、UnixODBC 等)或我可以通过 dbext(一个适合我当前设置的连接字符串)解决 dbext 中的非法选项错误的方法。

我已经用头撞墙好几个小时了,在此先感谢。

我能够使用 DBI ODBC 功能解决问题。出于性能原因,文档似乎也更喜欢这种方法。

对于遇到同样问题的任何其他人,请确保返回的错误字符串是您计算机上最新版本的 TDS 和 Perl。在我的例子中,它正在寻找一个没有必要的 DBI/DBD/ODBC 驱动程序的旧 Perl 目录。

在我通过删除旧目录让 DBI 端工作后,我能够使用以下连接字符串进行连接。

let g:dbext_default_profile_<Profile_Name> = 'type=ODBC:user=<username>:passwd=<passwrd>:dsnname=<freeTDS DSN name>:driver=FreeTDS'

希望这有助于节省一些我不得不花在弄清楚配置上的时间。