Update: Wenn Sie ausführen, ein Programm oder ein Web Browser-Skript, das Command-Objekt in der ADO-Programmierschnittstelle, verwendet um eine SQL Server auszuführen, gespeicherte Prozedur, wird möglicherweise eine Fehlermeldung "EXECUTE-Berechtigung verweigert für Objekt..." in SQL Server 2000

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 819829 - Produkte anzeigen, auf die sich dieser Artikel bezieht
# Fehler: 469385 (SQL Server 8.0)

Microsoft stellt Updates für SQL Server 2000 als downloadbare Datei. Da die Updates kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die mit früheren SQL Server 2000 enthalten waren.
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn Sie ein Programm ausführen, oder die gespeicherte Prozedur ein Web-Browser-Skript, dass verwendet das Command -Objekt in der Microsoft ActiveX Data Objects (ADO)-Programmierung, Schnittstelle um eine SQL Server auszuführen, erhalten Sie eine Fehlermeldung, die der folgenden ähnelt:

EXECUTE-Berechtigung für Objekt '< Geschachtelten Prozedur Name >', verweigert Datenbank '< Datenbankname >', Besitzer '< Besitzer Name >'.

Dieses Problem tritt auf, wenn alle folgenden Bedingungen erfüllt sind:
  • Mithilfe der Prepare -Eigenschaft des Command -Objekts ist die EXECUTE Transact-SQL-Anweisung, die zum Aufrufen der gespeicherten Prozedur verwendet wird vorbereitet.
  • Die primäre gespeicherte Prozedur, die aus dem Programm oder aus der Web-Browser-Skript ausgeführt wird, wird aufgerufen, eine geschachtelte gespeicherte Prozedur.
  • Das Benutzerkonto, das für die Verbindung zu SQL Server-Datenbank die primäre gespeicherte Prozedur EXECUTE Berechtigungen hat jedoch keinen verwendet wird, EXECUTE Berechtigungen für die geschachtelte gespeicherte Prozedur.

Lösung

Informationen zu Service Packs

Installieren Sie das neueste Service Pack für Microsoft SQL Server 2000, um dieses Problem zu beheben. Weitere Informationen finden Sie die folgende KB-Artikelnummer:
290211So erhalten Sie das neueste Service Pack für SQL Server 2000

Hotfix-Informationen

Die englische Version dieses Hotfixes weist die Dateiattribute (oder höher Dateiattribute), die in der folgenden Tabelle aufgelistet werden. Die Datums- und Uhrzeitangaben für diese Dateien werden in Coordinated Universal Time aufgeführt (UTC). Wenn Sie sich die Dateiinformationen ansehen, werden diese Angaben in die lokale Zeit konvertiert. Um die Differenz zwischen UTC und der Ortszeit zu ermitteln verwenden Sie die Registerkarte Zeitzone des Tools ? Datum und Uhrzeit in der Systemsteuerung.
   Date         Time   Version            Size    File name
   -----------------------------------------------------------------------
   31-May-2003  06:15  2000.80.818.0      78,400  Console.exe      
   24-Jun-2003  12:31  2000.80.818.0      33,340  Dbmslpcn.dll     
   24-Apr-2003  13:42                    786,432  Distmdl.ldf
   24-Apr-2003  13:42                  2,359,296  Distmdl.mdf
   29-Jan-2003  13:25                        180  Drop_repl_hotfix.sql
   23-Jun-2003  10:10  2000.80.837.0   1,557,052  Dtsui.dll        
   23-Jun-2003  10:10  2000.80.837.0     639,552  Dtswiz.dll       
   23-Apr-2003  14:21                    747,927  Instdist.sql
   02-May-2003  13:26                      1,581  Inst_repl_hotfix.sql
   07-Feb-2003  18:10  2000.80.765.0      90,692  Msgprox.dll      
   31-Mar-2003  13:37                      1,873  Odsole.sql
   04-Apr-2003  13:16  2000.80.800.0      62,024  Odsole70.dll     
   07-May-2003  08:11  2000.80.819.0      25,144  Opends60.dll     
   02-Apr-2003  09:18  2000.80.796.0      57,904  Osql.exe         
   02-Apr-2003  10:45  2000.80.797.0     279,104  Pfutil80.dll     
   22-May-2003  10:27                     19,195  Qfe469571.sql
   12-Jun-2003  04:07                  1,083,989  Replmerg.sql
   04-Apr-2003  09:23  2000.80.798.0     221,768  Replprov.dll     
   07-Feb-2003  18:10  2000.80.765.0     307,784  Replrec.dll      
   04-May-2003  11:35                  1,085,874  Replsys.sql
   31-May-2003  12:31  2000.80.818.0     492,096  Semobj.dll       
   31-May-2003  05:57  2000.80.818.0     172,032  Semobj.rll
   28-May-2003  11:59                    115,944  Sp3_serv_uni.sql
   31-May-2003  12:31  2000.80.818.0   4,215,360  Sqldmo.dll       
   07-Apr-2003  05:14                     25,172  Sqldumper.exe    
   19-Mar-2003  05:50  2000.80.789.0      28,672  Sqlevn70.rll
   01-Jul-2003  11:48  2000.80.834.0     180,736  Sqlmap70.dll     
   07-Feb-2003  18:10  2000.80.765.0      57,920  Sqlrepss.dll     
   23-Jun-2003  10:10  2000.80.837.0   7,553,105  Sqlservr.exe     
   07-Feb-2003  18:10  2000.80.765.0      45,644  Sqlvdi.dll       
   24-Jun-2003  12:31  2000.80.818.0      33,340  Ssmslpcn.dll     
   31-May-2003  12:31  2000.80.818.0      82,492  Ssnetlib.dll     
   31-May-2003  12:31  2000.80.818.0      25,148  Ssnmpn70.dll     
   31-May-2003  12:31  2000.80.818.0     158,240  Svrnetcn.dll     
   31-May-2003  06:29  2000.80.818.0      76,416  Svrnetcn.exe     
   30-Apr-2003  11:22  2000.80.816.0      45,132  Ums.dll          
   01-Jul-2003  11:49  2000.80.834.0      98,816  Xpweb70.dll      
Hinweis: Aufgrund von Dateiabhängigkeiten enthält das aktuellste Update oder Feature, das diese Dateien enthält, möglicherweise auch weitere Dateien.

Abhilfe

Verwenden Sie um das Problem zu umgehen, eine der folgenden Methoden.

Methode 1

Bereiten Sie die Anweisung zum Aufruf der gespeicherten Prozedur vor, in das Programm oder in Ihrer Web-Browser-Skript. Zu diesem Zweck legen Sie die Prepare -Eigenschaft des Command -Objekts auf FALSE fest.

Methode 2

Gewähren Sie in der SQL Server-Datenbank EXECUTE Berechtigungen für die geschachtelte gespeicherte Prozedur auf das Benutzerkonto, von der Anwendung oder durch das Web-Browser-Skript verwendet wird, eine Verbindung zu der Datenbank herstellen.

Hinweis: Kontaktieren Sie Ihren SQL Server-Datenbankadministrator, bevor Sie EXECUTE erteilen Berechtigungen für das Benutzerkonto.

Methode 3

Legen Sie eine dummy SELECT-Anweisung in main gespeicherten Prozedur, kurz vor die EXECUTE-Anweisung die geschachtelte ruft Prozedur gespeicherte, und anschließend kompiliert die primäre gespeicherte Prozedur. Die dummy SELECT-Anweisung kann ähnlich der folgenden sein:
select 1

Status

Microsoft hat bestätigt, dass dies ein Problem in Microsoft-Produkten handelt, die im Abschnitt "Gilt für" aufgeführt sind.Dieses Problem wurde erstmals in Microsoft SQL Server 2000 Service Pack 4.

Weitere Informationen

Wenn das Benutzerkonto für die primäre gespeicherte Prozedur EXECUTE Berechtigungen verfügt, muss die primäre gespeicherte Prozedur geschachtelte Prozedur erfolgreich aufrufen selbst wenn das Benutzerkonto EXECUTE Berechtigungen für die geschachtelte gespeicherte Prozedur verfügt.

Schritte zum Reproduzieren des Verhaltens

  1. Starten Sie SQL Query Analyzer.
  2. Melden Sie sich SQL Server-Datenbank als die System-Administrator.
  3. Führen Sie das folgende Transact-SQL-Skript mithilfe von SQL Query Analyzer.

    Hinweis: Wenn Testlogin ein gültiger Benutzername ist und Mainproc und Nestedproc gültige gespeicherte Prozedurnamen für Ihre SQL Server-Datenbank sind, ersetzen Sie Sie mit einem anderen Benutzernamen und andere gespeicherte Prozedur Namen.
    use pubs
    go
    
    -- Create the nestedproc stored procedure
    create procedure nestedproc
    as
    begin
    	declare @i int
    	select 'OK'
    end
    go
    
    -- Create the mainproc stored procedure
    create procedure mainproc 
    as
    begin
    	declare @i int
    	set @i=1
    
    	--  Nested stored procedure call
    	exec nestedproc
    end
    go
    
    -- Create login and grant access
    exec sp_addlogin 'testlogin'
    exec sp_grantdbaccess 'testlogin','testlogin'
    exec sp_defaultdb 'testlogin','pubs'
    
    grant execute on mainproc to testlogin
    go
    
  4. Erstellen Sie eine Microsoft Visual Basic-Skriptdatei, die Test.vbs mithilfe des folgenden Codes benannt ist.

    Hinweis: Ersetzen Sie SQL Server Name durch den Namen einer Instanz von SQL Server.
    Dim cn
    Dim cmd
    Dim rs
    Dim params
    Dim param
    set cn=createobject("ADODB.Connection")
    set cmd=createobject("ADODB.Command")
    set rs=createobject("ADODB.Recordset")
    
    cn.Provider = "SQLOLEDB"
    cn.Open "Data Source = <SQL Server Name>", "testlogin"
    
    Set cmd.ActiveConnection = cn
    cmd.CommandType = &H0004
    cmd.CommandText = "mainproc"
    cmd.CommandTimeout = 0
    
    ' Prepare the command
    cmd.Prepared = True
         
    Set rs = cmd.Execute
    Wscript.echo rs(0)
    cn.Close
    
    Set cmd = Nothing
    Set cn = Nothing
  5. Führen Sie die Microsoft Visual Basic- Test.vbs -Skriptdatei.

Informationsquellen

Weitere Informationen über Softwareupdates finden Sie die folgende KB-Artikelnummer:
824684Erläuterung von Standardbegriffen bei Microsoft Softwareupdates
Weitere Informationen zu Berechtigungen auf geschachtelte gespeicherte Prozeduren ausführen, die folgende Microsoft-Website und finden Sie im Abschnitt Berechtigungen :
http://msdn2.microsoft.com/en-us/library/aa258848(sql.80).aspx

Eigenschaften

Artikel-ID: 819829 - Geändert am: Freitag, 2. November 2007 - Version: 5.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Keywords: 
kbmt kbhotfixserver kbqfe kbqfe kbstoredproc kbsqlprog kbscript kbprogramming kbappdev kberrmsg kbcode kbsqlserv2000presp4fix kbfix kbbug KB819829 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 819829
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com