0

我一直在尝试让 dbext 使用 MacVim 连接到 OSX 上的外部 SQL 服务器实例。到目前为止,我已经尝试了几次不同连接字符串的迭代,所有这些都返回 /usr/local/bin/osql: 非法选项 -- 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 使用时,这些似乎工作正常(仍然)。

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

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

4

1 回答 1

0

我能够使用 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'

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

于 2017-02-27T21:39:36.477 回答