2011-02-05 19 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を無視し、UDI/PWD属性を追加した後に 'dbi:ODBC'の後の文字列をSQLDriverConnectに渡します。 – bohica

+0

@bohicaあなたの提案ごとに答えが更新されました。今はもっと正しいと思っています。 – bvr

関連する問題