在FreeBSD *上通过PERL连接到MSSQL

时间:2016-02-10 15:11:40

标签: sql-server perl freebsd freetds

我正在 freebsd 上通过 perl 尝试连接 mssql 。 在Linux上很简单:

apt-get install libdbi-perl freetds-bin libdbd-sybase-perl

之后我用设置创建freetds.conf文件。例如:

[MSSQL]
    host = %my server%
    port = 1433
    tds version = 7.0 

它的工作。对于我尝试的相同逻辑:

cd /usr/ports/databases/p5-DBI/ && make install clean
cd /usr/ports/databases/freetds/ && make install clean
cd /usr/ports/databases/p5-DBD-Sybase/ && make install clean

然后我从Linux运行相同的代码:

use DBI;

my $hostname = 'MSSQL';
my $database = %my database%;
my $user = %my user%;
my $pass = %my password%;

my $dbh = DBI->connect("DBI:Sybase:server=$hostname;database=$database", $user, $pass);

我得到了:

DBI connect('server=MSSQL;database=%my database%, %user%, %password%) failed: (no error string)

我会感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您还可以使用pkg工具在freebsd框中安装软件包。 所以,像这样:

pkg install p5-DBI p5-DBD-Sybase freetds

关于你的perl检查脚本,我想你还需要包括:

use DBD:Sybase;

我会尝试将DBI:Sybase:server=...更改为dbi:Sybase:server=...

但如果您需要确认,请查看此网址:http://search.cpan.org/~mewp/DBD-Sybase-1.15/Sybase.pm

希望我的0.002有帮助! ; - )

答案 1 :(得分:0)

似乎不同版本的Sybase.pm具有不同的DBI->连接参数解析逻辑。

我刚刚发现Sybase.pm $ Id 1.115 $不能用于表单调用

DBI->connect('DBI:Sybase:server=mydbhost:database=dbname','username','password')

(注意'mydbhost'和'database'之间的冒号),而Sybase.pm $ Id 1.44 $完全可以。 或者这是DBI的差异?

将其发布给googlers。