首页 > 解决方案 > 使用 DBI 使用 Perl 连接到 SQL Server?

问题描述

我正在尝试使用 Perl DBI 模块连接到 SQL 服务器,我已经尝试了所有连接字符串格式,但 Perl 仍然抛出无效连接字符串错误。

我已经尝试过 perl 僧侣网站上提供的代码片段。

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

# Set up variables for the connection
my $server_name = '00.120.124.1;3181';

my $database_name = 'abcd';
my $database_user = 'kkkk';
my $database_pass = 'password';

my $DSN = 'driver={SQL Server};server=$server_name;da
+tabase=$database_name;uid=$database_user;pwd=$database_pass;'; 
my $dbh = DBI->connect("DBI:ODBC:$DSN") || die "Couldn't open database
+: $DBI::errstr\n";

预期结果是连接到数据库。

失败:[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server 不存在或访问被拒绝。[Microsoft][ODBC SQL Server 驱动程序][DBNETLIB]ConnectionOpen (Connect())。(SQL-01000) [state was 01000 now 01S00] [Microsoft][ODBC SQL Server Driver]perl.pl 第 16 行的连接字符串属性 (SQL-01S00) 无效。无法打开数据库 +:[Microsoft][ODBC SQL服务器驱动程序][DBNETLIB]SQL Server 不存在或访问被拒绝。(SQL-08001) [状态为 08001 现在为 01000] 无效的连接字符串属性 (SQL-01S00)

标签: sqlsql-serverperldbi

解决方案


您的帖子中以+

+tabase=$database_name;uid=$database_user;pwd=$database_pass;'; 

+: $DBI::errstr\n";

从 perlmonks.org 错误地复制和粘贴。前导+符号是一个约定,表示一条长线被分割了。您应该删除+并将该行加入上一行,以便您的代码将读取

my $DSN = 'driver={SQL Server};server=$server_name;database=$database_name;uid=$database_user;pwd=$database_pass;'; 
my $dbh = DBI->connect("DBI:ODBC:$DSN") || die "Couldn't open database: $DBI::errstr\n";

推荐阅读