2011-02-05 36 views
10

Kullanıcı adı, parola, veritabanı adı ve veri kaynağı bilgilerim var. Perl ile bir MSSQL sunucusuna bağlanmak istiyorum. Sadece aşağıdaki kod parçasını kullandım, ancak bir hata alıyorum.Perl ile SQL Server'a nasıl bağlanırım?

#!/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"; 

Benim hatadır:

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 sunucu başka sisteminde çalışan, sadece yukarıdaki detayları ile bağlanmaya çalışıyorum. Lütfen bana söyle, sistemimde DSN'yi kırmalı mıyım yoksa programımda eksik olan bir şey var mı?

cevap

17

Bağlantı dizenizde 'dbi:ODBC:' izleyen her şey ODBC sürücüsüne iletilir. Bu sitedeki bulmak değilim, tavsiye için, thx

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

Sen ben sadece benim yerel DSN yarattı connectionstrings.com

+0

biraz daha alternatifler bulabilirsiniz ve bulmak çalıştı: MSSQL için bu bağlantı dizesi deneyin perl + mssql snippet, sadece .NET ve db ile ilgili buluyorum. – Bharanikumar

+1

İlk olarak 'dbi: ODBC' değil 'DBI: ODBC' olmalıdır. İkinci olarak, 'dbi: ODBC' sürücüye geçtikten ve kesinlikle veri tabanından geçmedikten sonra her şeyi söylemek doğru değildir. 'Dbi: ODBC: mydsn' komutunu kullanırsanız ve bir DRIVER = veya DSN = içermezseniz, DBD :: ODBC önce eski SQLConnect API'sini mydsn, kullanıcı adı, parola (tarihsel nedenlerle) ile çağırır. DRIVER = veya DSN = 'dbi: ODBC' DBD :: ODBC'den sonra bağlantı dizesine SQLConnect'i yoksa ve UID/PWD özniteliklerini ekledikten sonra 'dbi: ODBC' sonra SQLDriverConnect'e iletir. – bohica

+0

@bohica Yanıtlarınız önerilerinize göre güncellendi. Umarım şimdi daha doğrudur. – bvr

İlgili konular