1

昨日から Perl で SQL Server DB に接続しようとしていますが、失敗しています。関数を使用しました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
4

2 に答える 2

3

ODBC の DBI 接続文字列の形式は、'dbi:ODBC:DSN_name' または 'dbi:ODBC:DSN=DSN_name' (データ ソース名 (DSN) を使用する接続の場合) です。この場合、DSN_name はデータの名前である必要があります。 ODBC アドミニストレーターで作成したソース. Windows 64 ビット環境では、32 ビット アプリケーション用と 64 ビット アプリケーション用の 2 つの ODBC アドミニストレーターがあるため、この状況は少し複雑になります (2 つを混在させることはできません)。

したがって、最初に、Perl が 32 ビットまたは 64 ビットの実行可能ファイルであるかどうかを調べます。これは通常、perl -V の出力から確認できます (archname を探しますが、他の兆候もあります)。次に、perl の構築方法に応じて適切な ODBC アドミニストレータを見つけ、それを使用してデータ ソースを作成します。最後に、上記のように DBI 接続文字列を変更します。

DSN を必要としない、いわゆる DSN レス接続もありますが、代わりに DRIVER とデータベースへの接続に必要な属性を指定します。

ODBC - The Connection Processについて読むことができる 'dbi:ODBC:DSN=DSN_name' の代わりに 'dbi:ODBC:DSN_name' を使用する場合、DBD::ODBC の動作に違いがあります。

32/64 ビット ODBC の詳細と、 64 ビット ODBCで適切なドライバー マネージャーを見つける場所を見つけることができます。DBD::ODBC と接続については、Drivers, Data Sources and Connection - Perl DBI/DBD::ODBC Tutorial Part 1で確認できます。

于 2013-07-10T12:28:26.263 に答える
0

まあ、これはうまくいくようですが、

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

注意:必要なモジュールがインストールされていることを確認してください。

于 2013-07-10T10:54:11.653 に答える