MSSQL サーバーに接続できますが、データベースにクエリを実行しようとするとアクセス許可エラーが発生します。以下のスクリプトに「YAY」が表示されますが、次のエラーが発生します。
*[Microsoft][ODBC SQL Server Driver][SQL Server]The SELECT permission was denied on the object 'TICKET_TYPES', database 'DBNAME', schema 'dbo'. (SQL-42000)(DBD: st_execute/SQLExecute err=-1)*
DBO アクセスで「DOMAIN\DOMAIN Users」を追加すると機能しますが、削除すると機能しません。接続文字列に設定されているが正ではないSQLユーザーではなく、ログオンユーザーとしてデータベースに接続していると思います。
SQL ドライバは、「Windows NT...」ではなく「ログイン ID を使用した SQL Server 認証を使用...」を使用するように設定されています。
従来の ASP は正常に接続してクエリを実行します。ASPクラシックおよびSQL Server Management Studioを介して、接続文字列のSQLアカウントを使用してDBにアクセス/クエリできます。
SQL2005 に対しては完全に機能しますが、アップグレードしようとしている SQL2008 に対しては機能しないことが関連している可能性があります。いくつかの Perl スクリプトがテーブルに入らないことを除いて、すべてがアップグレードに問題ありません。
use lib "cgi-bin";
use DBI;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
require "Babel.pm";
my $y = new Babel;
my $q = new CGI;
$SERVER_N = $q->server_name() ;
### CONNECT
$database = "DBNAME";
$dbusername = "SQLUSERNAME";
$dbpassword = "SQLUSERPASSWORD";
$server="SQLSERVERIP";
print "Content-type: text/html\n\n";
$dbh = DBI-> connect( "DBI:ODBC:driver={SQL Server};
Server=$server;
Database=$database;
UID=$dbusername;
PWD=$dbpassword") || die &DBerror;
if ($DBI::errstr) {print "Error: Connecting to the Database!";
exit;}else{
print "YAY! <br><br>";
}
### END: CONNECT
$v2SQL = "select distinct ROUTE from TICKET_TYPES";
$css1 = $dbh->prepare ($v2SQL);
$css1->execute () || print $css1->errstr;
while ((@row) = $css1 ->fetchrow_array) {
$MANA = @row[0];
print "$MANA";
}
$css1->finish () || print $css1->errstr;