如何用Perl连接到SQL Server?

问题描述 投票:10回答:2

我有一个用户ID,密码,数据库名称和数据源的详细信息。我想用Perl连接到MSSQL服务器。我刚刚使用了下面的代码段,但我得到了一个错误。

#!/usr/bin/perl -w
use strict;

use DBI;

my $data_source = q/dbi:ODBC:192.168.3.137/;
my $user = q/bharani/;
my $password = q/123456/;

# Connect to the data source and get a handle for that connection.
my $dbh = DBI->connect($data_source, $user, $password)
    or die "Can't connect to $data_source: $DBI::errstr";

我的错误是

DBI connect('192.168.3.137','bharani',...) failed: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (SQL-IM002) at my sqlconnect.pl line 14
Can't connect to dbi:ODBC:192.168.3.137: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (SQL-IM002) at mysqlconnect.pl line 14.

SQL服务器是在另一个系统上运行的,我只是想用上面的细节来连接。请告诉我,我应该在我的系统中设置DSN,还是我的程序中缺少什么?

perl dbi
2个回答
17
投票

下面的所有内容 'dbi:ODBC:' 中的连接字符串传递给ODBC驱动程序。对于MSSQL,可以试试这个连接字符串。

DBI->connect("dbi:ODBC:Driver={SQL Server};Server=192.168.3.137;UID=$user;PWD=$password")

你可以在 connectionstrings.com


0
投票

我在Ubuntu(20.04)上,按照说明在docker容器中安装SLQ服务器。https:/docs.microsoft.comen-ussqllinuxquickstart-install-connect-docker?view=sql-server-ver15&pivots=cs1-bash。

我创建了 TestDB 和表格 Inventory 根据教程,我安装了ODBC驱动。

我按照以下步骤安装了ODBC驱动程序 https:/docs.microsoft.comen-ussqlconnectodbclinux-macinstalling-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15。

驱动库文件是 /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.5.so.2.1

就这样,下面的脚本成功连接到DB,并返回表的内容。

 #!/usr/bin/perl
use strict;
use warnings;

use DBI;
my $user = 'SA';
my $password = '<YourNewStrong@Passw0rd>';

my $dbh = DBI->connect("dbi:ODBC:Driver={/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.5.so.2.1};Server=localhost;Database=TestDB;UID=$user;PWD=$password");

my $sth = $dbh->prepare("SELECT * FROM Inventory");
$sth->execute();

while ( my @row = $sth->fetchrow_array ) {
      print "@row\n";
}
© www.soinside.com 2019 - 2024. All rights reserved.