1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

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

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Neokil, 31 Oktober 2013.

  1. Neokil

    Neokil Benutzer

    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
     
  2. gurbelunder

    gurbelunder Datenbank-Guru

    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.
     
  3. ukulele

    ukulele Datenbank-Guru

    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 gefällt das.
  4. akretschmer

    akretschmer Datenbank-Guru


    In PG kann man Funktionen mit SECURITY DEFINER definieren, dann laufen die im Context des Erstellers. Keine Ahnung von M$SQL und ob das da ähnlich geht.
     
  5. ukulele

    ukulele Datenbank-Guru

    Wie wäre es dem User einfach die Rechte zu geben die er offensichtlich sowieso im Kontext des Triggers bekommt?
     
    gurbelunder gefällt das.
  6. akretschmer

    akretschmer Datenbank-Guru

    Nicht unbedingt eine gute Idee.
     
    gurbelunder gefällt das.
  7. gurbelunder

    gurbelunder Datenbank-Guru

    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.
     
  8. ukulele

    ukulele Datenbank-Guru

    Das meinte ich ja, natürlich keine Sysadmin Rechte sondern spezifische auf Tabellen etc. die gebraucht werden.
     
    gurbelunder gefällt das.
  9. gurbelunder

    gurbelunder Datenbank-Guru

    Wollte dich nur bestätigen ;)
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden