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 驱动程序设置为使用“使用登录 ID 进行 SQL Server 身份验证...”而不是“Windows NT...”

经典的 ASP 连接和查询很好。我可以通过 ASP 经典和 SQL Server Management Studio 使用连接字符串中的 SQL 帐户访问/查询数据库。

它可能也适用于 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