0

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;   
4

0 に答える 0