连接到SQL Server数据库

时间:2013-07-10 09:03:44

标签: perl odbc dbi

从昨天开始,我一直在尝试连接到Perl中的SQL Server数据库,这是一个失败。我使用DBI->connect函数,但是我收到错误,说找不到数据源和驱动程序。我用那个字符串:

'dbi:ODBC:mydb:myhost\myinstance'

我不确定字符串是否正确。有什么想法吗?

编辑:这是我得到的错误:

DBI connect('***:***\***','',...) failed: [Microsoft][ODBC Driver
Manager] Data source name not found and no default driver specified (SQL-IM002)
at Collector.pl line 137

2 个答案:

答案 0 :(得分:3)

ODBC的DBI连接字符串的格式是'dbi:ODBC:DSN_name'或'dbi:ODBC:DSN = DSN_name'(对于使用数据源名称(DSN)的连接。在这种情况下,DSN_name需要是名称您使用ODBC管理员创建的数据源。在Windows 64位环境中,这种情况稍微复杂一些,因为有2个ODBC管理员,一个用于32位应用程序,一个用于64位应用程序(不能将两者混合使用)。

所以,首先,如果Perl是32位或64位可执行文件,你可以解决这个问题 - 你通常可以从perl -V的输出中看到这一点(寻找archname但是还有其他迹象)。然后根据perl的构建方式找到正确的ODBC Administrator,并使用它创建数据源。最后,如上所述更改您的DBI连接字符串。

还有一种所谓的无DSN连接,它不需要DSN,而是命名DRIVER以及连接数据库所需的任何属性。

如果您使用'dbi:ODBC:DSN_name'而不是'dbi:ODBC:DSN = DSN_name',那么DBD :: ODBC会有什么不同,您可以阅读ODBC - The Connection Process

您可以在64 bit ODBC找到有关32/64位ODBC以及在哪里找到合适的驱动程序管理器的更多信息。您可以在Drivers, Data Sources and Connection - Perl DBI/DBD::ODBC Tutorial Part 1找到有关DBD :: ODBC和连接的信息。

答案 1 :(得分:0)

这似乎没问题,

use DBI;
 #
$dbh = DBI->connect( "dbi:mysql:DBNAME", "root", "password" )
  or die "Connection Error $DBI::errstr\n";

N.B。请检查您是否安装了所需的模块。