2011-02-05 4 views
10

사용자 ID, 암호, 데이터베이스 이름 및 데이터 소스 세부 정보가 있습니다. Perl과 MSSQL 서버를 연결하고 싶습니다. 방금 다음 코드 조각을 사용했지만 오류가 발생했습니다.Perl을 SQL Server에 어떻게 연결합니까?

#!/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을 겹쳐서 붙여야합니까, 아니면 프로그램에 누락 된 것이 있습니까?

답변

17

연결 문자열에있는 'dbi:ODBC:' 다음의 모든 내용이 ODBC 드라이버에 전달됩니다. 이 사이트에서 찾을 수없는하고, 조언을 위해, THX를

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

당신은 난 그냥 내 로컬에서 DSN을 생성 connectionstrings.com

+0

에 좀 더 대안을 찾을 수 있습니다, 그것은 발견했다 : MSSQL의 경우,이 연결 문자열을 시도 perl + mssql 스 니펫, 나중에 .NET 및 db와 관련이 있습니다. – Bharanikumar

+1

먼저 'DBI : ODBC'가 아닌 'dbi : ODBC'여야합니다. 둘째로 'dbi : ODBC'가 드라이버와 확실히 데이터베이스에 전달 된 후에 모든 것을 말하는 것이 정확하지 않습니다. 'dbi : ODBC : mydsn'을 사용하고 DRIVER = 또는 DSN =을 포함하지 않으면 DBD :: ODBC는 mydsn, username, password를 사용하여 이전 SQLConnect API를 먼저 호출합니다 (역사적인 이유로). 'dbi : ODBC'다음에 연결 문자열에 DRIVER = 또는 DSN =을 입력하면 DBD :: ODBC는 SQLConnect를 무시하고 UDAD/PWD 특성을 추가 한 후에 'dbi : ODBC'문자열을 SQLDriverConnect에 전달합니다. – bohica

+0

@bohica 귀하의 제안에 대한 답변을 업데이트했습니다. 희망은 지금 더 정확합니다. – bvr

관련 문제