Serverprinzipal [SYSADMIN] [...] aktuellen Sicherheitskontext nicht auf die [DATENBANK] zugreifen

Neokil

Benutzer
Beiträge
6
Hallo,

ich habe ein paar Check-Prozeduren, die per Trigger aufgerufen werden. Da diese Prozeduren aber mehr Zugriffsrechte benötigen, als der normale User haben darf wollte ich an den Anfang der Prozedur ein "EXECUTE AS USER=XXX" setzen, und dem User XXX die passenden Rechte erteilen.
Zum Testen habe ich meinen Sysadmin-Account eingetragen. Allerdings kommt hierbei immer folgende Fehlermeldung:
ERROR_NUMBER(): 916
ERROR_SEVERITY(): 14
ERROR_STATE(): 1
ERROR_LINE(): 20
ERROR_MESSAGE(): Der Serverprinzipal '[Mein Sysadmin]' kann unter dem aktuellen Sicherheitskontext nicht auf die [DB]-Datenbank zugreifen.
USER: [Mein Sysadmin]

Der Trigger sieht wie folgt aus:
Code:
ALTER TRIGGER [dbo].[SH_trPruefung]
  ON  [dbo].[Table]
  WITH EXECUTE AS '[Mein Sysadmin]'
  AFTER INSERT,UPDATE
AS
BEGIN <--Line 20
END

Jemand nen Tipp, wo ich ansetzen muss?

Gruß
Neokil
 
Werbung:

gurbelunder

Datenbank-Guru
Beiträge
136
Wenn ich noch richtig in der Materie von MSSQL stecke, dann musst du den Trigger definitiv als User ausführen, der die Rechte hat. Da reicht ein

Code:
EXECUTE AS USER=XXX

nicht wirklich, wenn dein User "hans" (oder wer auch immer) nur normale User Rechte hat.
 

ukulele

Datenbank-Guru
Beiträge
4.394
Hört sich für mich auch so an das ein Trigger der unter User x ausgeführt wird keine höheren Rechte erlangen kann als User x.
 

gurbelunder

Datenbank-Guru
Beiträge
136
Wird sicher gefährlich, einem User einfach SYSADMIN Rechte zu geben... Man sollte dem User vielleicht einfach nur die Rechte auf die Tabelle oder View oder was auch immer geben, für die der Trigger ist.
 
Werbung:
Oben