Sql server 在unix上使用perl和freetds访问mssql数据库时出现问题
我正在尝试使用perl和freetds连接到MS-SQL数据库。我已经使用unix命令行测试了freetds的安装Sql server 在unix上使用perl和freetds访问mssql数据库时出现问题,sql-server,perl,dbi,freetds,Sql Server,Perl,Dbi,Freetds,我正在尝试使用perl和freetds连接到MS-SQL数据库。我已经使用unix命令行测试了freetds的安装 `/usr/local/exec/bin/tsql -S myDB -I freetds.conf -U userName -P passw0rd -D DataBase1 -o q < query.sql` 但是跑步 $set | grep SYBASE产生SYBASE=/usr/fsf/freetds 下面是我的perl代码: #!/usr/bin/perl5/cor
`/usr/local/exec/bin/tsql -S myDB -I freetds.conf -U userName -P passw0rd -D DataBase1 -o q < query.sql`
但是跑步
$set | grep SYBASE
产生SYBASE=/usr/fsf/freetds
下面是我的perl代码:
#!/usr/bin/perl5/core/5.8.8/exec/bin/perl
use lib qw(/usr/perl5/core/5.8.8/exec/lib);
use lib qw(/usr/perl5/DBI/1.607/exec/5.8/lib/perl5);
use lib qw(/usr/perl5/DBD-Sybase/1.09/exec/5.8/lib/perl5);
use DBI;
use DBD::Sybase;
my $user = "userName";
my $passwd = "passw0rd";
my $server = "myDB";
`export SYBASE=/usr/fsf/freetds`;
`export LD_LIBRARY_PATH=/usr/fsf/freetds/0.82/exec/lib`;
`export FREETDSCONF=./freetds.conf`;
my $dbh = DBI->connect("DBD:Sybase:server=$server", $user, $passwd, {PrintError => 0});
unless ($dbh) {
die "ERROR: Failed to connect to server ($server).\nERROR MESSAGE: $DBI::errstr";
}
else {
print "\n";
print "Successful Connection.";
}
非常感谢任何帮助 到您的驱动程序的路径显示为5.10。您可能下载了错误版本的perl驱动程序。要么更新到5.10.1,要么获取5.8.8的驱动程序。我已经找到了答案。在安装DBD SYBASE之前,首先需要设置SYBASE环境变量。这就是为什么当sybase主目录指向freetds安装位置时,
的sybase主目录是/opt/sybase
。Ref:哪个版本的perl“perl-v”?驱动程序路径是5.10。您可能下载了错误版本的perl驱动程序。更新到5.10.1或获取5.8.8的驱动程序。谢谢@AKHolland。我已经改正了。这个问题已经解决了,但现在它显示,您的sybase主目录是/opt/sybase。如果环境变量SYBASE不是您想要的,请检查它!无法访问文件/opt/sybase/config/objectid.dat
但运行$set | grep sybase
会产生sybase=/efs/dist/fsf/freetds
我是否遗漏了什么?我不确定。。。不过,我将把我之前的评论作为一个答案,对任何遇到这种情况的人来说。
#!/usr/bin/perl5/core/5.8.8/exec/bin/perl
use lib qw(/usr/perl5/core/5.8.8/exec/lib);
use lib qw(/usr/perl5/DBI/1.607/exec/5.8/lib/perl5);
use lib qw(/usr/perl5/DBD-Sybase/1.09/exec/5.8/lib/perl5);
use DBI;
use DBD::Sybase;
my $user = "userName";
my $passwd = "passw0rd";
my $server = "myDB";
`export SYBASE=/usr/fsf/freetds`;
`export LD_LIBRARY_PATH=/usr/fsf/freetds/0.82/exec/lib`;
`export FREETDSCONF=./freetds.conf`;
my $dbh = DBI->connect("DBD:Sybase:server=$server", $user, $passwd, {PrintError => 0});
unless ($dbh) {
die "ERROR: Failed to connect to server ($server).\nERROR MESSAGE: $DBI::errstr";
}
else {
print "\n";
print "Successful Connection.";
}