Jump to content

SQL - Execute As


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

gerne möchte ich die Funktion sp_who2 benutzen, um den Benutzern der Datenbank alle aktuell angemeldeten Benutzer bzw. aktive Transaktionen anzeigen lassen.
Testweise habe ich einigen Benutzern die Berechtigung 'VIEW SERVER STATE' erteilt, so dass die benutzerdefinierte Procedure die gewünschte Liste liefert.
Nun wollte ich aber nicht jedem Benutzer diese Rechte erteilen, sondern besser die Procedure mittels 'EXECUTE AS-Klausel' ausführen lassen.
Vorgegangen bin ich dabei nach der Anleitung von Microsoft: "Anpassen von Berechtigungen durch Identitätswechsel in SQL Server".
Leider gelingt es mir nicht der Anmeldung 'proxyUser' die erforderliche Berechtigung zu erteilen.
Die Anweisung : GRANT VIEW SERVER STATE TO "proxyUser" schlägt mit folgender Meldung fehl: 'Suchen des Anmeldung-Objekts 'proxyUser' ist nicht möglich, weil das Objekt nicht vorhanden ist oder Sie nicht die erforderliche Berechtigung haben.'
Über Hinweise zur Lösung des Problems oder alternativer Vorgehensweise würde ich mich freuen.
Vielen Dank.

Grüße Wolfgang

Link zu diesem Kommentar
vor 16 Stunden schrieb MDD:

Hallo

Der User "proxyUser" existiert bereits und ist aktiv?

 

du schreibst schon: 


GRANT VIEW SERVER STATE TO proxyUser

ohne die Hochkommas bzw. Anführungszeichen?

 

Hallo,

vielen Dank für Deine Antwort.

 

Der User wird wie folgt erstellt.

 

USE DbName

CREATE USER proxyUser WITHOUT LOGIN
USE master
GRANT VIEW SERVER STATE TO proxyUser

 

Es ist unerheblich, ob mit oder ohne doppelte Anführungszeichen. Beides ist zulässig.

 

Die Fehlermeldung dazu lautet:

Meldung 15151, Ebene 16, Status 1, Zeile 29
Suchen des Anmeldung-Objekts 'proxyUser' ist nicht möglich, weil das Objekt nicht vorhanden ist oder Sie nicht die erforderliche Berechtigung haben.

 

Stutzig macht mich, dass SQL-Server hier nach einem Anmeldungs-Objekt sucht. proxyUser ist ja explizit ein Objekt OHNE Anmeldung.

Die Frage ist also, wie erteile ich einem Nicht-Anmeldungs-Objekt die erforderlichen Rechte?

 

Erstelle ich eine normale Anmeldung "Dieter Müller" funktioniert sowohl


GRANT VIEW SERVER STATE TO [Dieter Müller]

als auch 

GRANT VIEW SERVER STATE TO "Dieter Müller"

 

 

Gruß Wolfgang

Link zu diesem Kommentar

Moin,

 

zu dem User gehört dem Statement nach kein Login. Er kann also nicht zur Anmeldung verwendet werden. Und genau das sagt auch die Fehlermeldung. Du brauchst einen Login, nicht nur einen User. Schließlich willst du ja auf Objekte außerhalb der Datenbank zugreifen.

 

Vielleicht wäre das der richtige Zeitpunkt, mal über Ziel, Sinn und Ansatz nachzudenken. Mir kommt das Vorhaben schon etwas seltsam vor. Wenn man wüsste, was am Ende erreicht werden soll, könnte man vielleicht Lösungswege vorschlagen.

 

Gruß, Nils

 

bearbeitet von NilsK
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...