問題としてODBCに失敗:Perlスクリプトは、コマンドプロンプトで正常に動作しますが、CGIスクリプトとしてODBCにPerlスクリプトは、コマンドプロンプトでOK動作しますが、CGIスクリプト
セッティング失敗: ウィンXP Proの64ビット版を2003 SP2は はApache 2.2.17のWin32 のActive Perlの5.12.2(ないPerl64) ODBC DSNは、SQL Server用に作成され
詳細は:コマンド・プロンプトから、Phone.plはOK走る - 予想通り、それはクエリ結果を取得します - これは、DBIは、CGIスクリプト、pHなど
正常に動作します意味しますone.plは、ODBCの初期化コードの前にHTMLを期待通りに表示します。 (Apacheの設定は、非ODBCスクリプトのOK働く。)
ここではApache
のerror.logファイルでMSG [火11月23日午後01時27分57秒2010] [エラー] [クライアント127.0.0.1] DBIですconnect( 'SQLSVR206'、 'administrator'、...)が失敗しました:[Microsoft] [ODBC Driver Manager] C:/CGI/Phone.pl 32行目にデータソース名が見つかりません。デフォルトドライバが指定されていません(SQL-IM002)
それは異なった動作を、なぜ任意のアイデア?
#!c:/perl/bin/perl.exe
use CGI qw(:standard);
use strict;
use warnings;
use DBI;
my ($sqlstr, $sql_UNITED, $dbh206);
# 206
# select * from getProvFINON('270762789')#TIN
my @colUNITED = qw/ADR_LN_1_TXT PROV_SYS_ID ZIP_CD FULL_NM SOURCE PROV_TIN BILL_TEL/;
sub Init(){
$dbh206 = DBI->connect ("dbi:ODBC:SQLSVR206",'USER','PASSWORD',{RaiseError=>1})
or die $DBI::errstr;
$sqlstr = qq/ select * from getProvFINON(?) /; #parameters TIN
$sql_UNITED = $dbh206->prepare($sqlstr)
or die "prepare failed: " . $dbh206->errstr();
}
sub test1{
my $tin = shift();
$sql_UNITED->execute($tin) or die $sql_UNITED->errstr;
my $row = $sql_UNITED->fetchrow_hashref;
while(defined ($row)){
foreach(@colUNITED){
print $row->{$_}."~~~";
}
print "<p>";
$row = $sql_UNITED->fetchrow_hashref;
}
}
print header;
print "test text<p>";
Init();
test1('270762789');
print "999999999999<p>";
=========================================== =============== UPDATE:問題の一部は、私はODBCを設定した後、64ビットODBCの問題 VS 32ビットは、しかしhttp://support.microsoft.com/kb/942976
を見ている、私はまだODBCは[[マイクロソフト]:失敗した [水曜日11月24日午前一時38分48秒2010] [エラー] [クライアント127.0.0.1] DBI接続( ' 'SQLSVR206-32を''、...)ログのApacheで、次のエラーを得ましたSQL Server Driver] [SQL Server]ユーザー 'MYDOMAIN \ GARY $'のログインに失敗しました。 (SQL-28000)Cで:/CGI/test.plライン15
私はMYDOMAIN \管理者としてログインし、Apacheを開始しました。 ODBCは「ネットワークログインIDを使用してWindows NT認証で」使用するように設定されました。この「MYDOMAIN \ GARY $」はどこから来たのですか?ありがとう!
============================================== ============ 最終更新:Apacheサービスは「ローカルシステムアカウント」を使用して実行され、それは「MYDOMAIN \ GARY $」の由来です。事はGARYが会社ではなく、問題が 1)32/64ビットODBCの畳み込みだった彼のIDは、SQL Serverからの削除されているが、CGIでのODBCコードがだから、エラー28000 結果としては、ApacheからGARYを継承していますDSNと 2)Apacheで使用される既定のアカウント
それはあなたの質問にスクリプトを投稿することができれば、非常に便利であるか、または少なくとも関連する部分になりますような何かを探しているODBCファイルと
。 –
コメントありがとうございます。私はちょうどソースコードを追加しました。 –