2011-02-05 6 views
10

У меня есть идентификатор пользователя, пароль, имя базы данных и данные источника данных. Я хочу подключиться к 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. Для MSSQL, попробуйте это строки соединения:

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

Вы можете найти еще несколько альтернатив на connectionstrings.com

+0

я просто создал DSN в моем местном, и он работал найти, ТНХ за советом, на этом сайте я не нашел perl + mssql snippet, ya просто найти связанный с .NET И db – Bharanikumar

+1

Во-первых, это должно быть «dbi: ODBC», а не «DBI: ODBC». Во-вторых, не совсем правильно говорить обо всем после того, как «dbi: ODBC» передается драйверу и, конечно, не база данных. Если вы используете «dbi: ODBC: mydsn» и не включаете DRIVER = или DSN =, то DBD :: ODBC сначала вызывает старый API SQLConnect с mydsn, username, password (по историческим причинам). Если вы введете DRIVER = или DSN = в строку подключения после «dbi: ODBC», DBD :: ODBC игнорирует SQLConnect и передает строку после «dbi: ODBC» в SQLDriverConnect после возможности добавления атрибутов UID/PWD. – bohica

+0

@bohica Обновлен ответ на ваши предложения. Надеюсь, теперь это будет более правильно. – bvr