문제가 CGI 스크립트로 ODBC 실패 2003 SP2는 아파치 2.2.17에서 Win32 액티브 펄 5.12.2 (안 Perl64) 는 ODBC DSN은 SQL 서버에 생성됩니다펄 스크립트는 명령 프롬프트에서 확인을 작동하지만,
상세 사항 : 명령 프롬프트에서 Phone.pl 확인을 실행 - 예상대로 쿼리 결과를 얻을 수 - 이는 DBI가 잘 작동 함을 의미합니다.
을 CGI 스크립트로, Ph one.pl은 ODBC 초기화 코드 전에 예상대로 HTML을 인쇄합니다. (아파치 설정은 비 ODBC 스크립트에 대한 확인을 작동합니다.) 여기
아파치의하는 error.log[화 11월 13시 27분 57초 2010 23] [오류] [고객 127.0.0.1] DBI의 MSG의 connect ('SQLSVR206', 'administrator', ...) 실패 : [Microsoft] [ODBC 드라이버 관리자] C : /CGI/Phone.pl에서 데이터 원본 이름을 찾을 수없고 기본 드라이버가 지정되지 않았습니다 (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 : 문제점의 일부이며 I는 ODBC를 설정 한 후에는 그러나 http://support.microsoft.com/kb/942976
볼 64 비트 ODBC 문제 VS 32 비트, I 여전히 아파치 로그에 다음과 같은 오류가 발생했습니다. [Wed 11 월 24 일 01:38:48 2010] [오류] [클라이언트 127.0.0.1] DBI 연결 ('SQLSVR206-32', '', ...) 실패 : [Microsoft] [ODBC SQL Server 드라이버] [SQL Server] 'MYDOMAIN \ GARY $'사용자 로그인에 실패했습니다. (SQL-28000) C에서 : 나는 MYDOMAIN \ 관리자로 로그인하고 아파치를 시작 15
/CGI/test.pl 라인. ODBC가 "네트워크 로그인 ID를 사용하여 Windows NT 인증"을 사용하도록 설정되었습니다. "MYDOMAIN \ GARY $"는 어디서 왔습니까? 감사!
============================================== ============ 최종 업데이트 : Apache 서비스는 "로컬 시스템 계정"을 사용하여 실행되며 "MYDOMAIN \ GARY $"의 출처입니다. 문제는 게리 회사와 함께하지 않고 문제가 1) 32/64 비트 ODBC의 회선이었다 자신의 ID가 SQL 서버에서 삭제되었지만, CGI에서 ODBC 코드 그래서 오류 28000. 의 결과로, 아파치에서 게리을 상속입니다 DSN 및 2) Apache에서 사용하는 기본 계정
그것은 매우 유용 할 것이다 : 뭔가를 찾고 ODBC 파일로
. –
코멘트 주셔서 감사합니다. 방금 소스 코드를 추가했습니다. –