Create Database Wrapper unter SqlServer (2005) geht nicht

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Create Database Wrapper unter SqlServer (2005) geht nicht

    hi

    Ich wollte meine Datenbank mit einem User "A" erstellen der nicht das Recht hat eine Datenbank zu erstellen.
    Der User A bekommt nur ein Recht auf eine Procedure mit dem Namen CreateMyDatabase.

    die Procedure CreateMyDatabase erstellt dann anhand der Parameter die Datenbank.

    Der DBAdmin hat dem User A das recht zum login gegeben.

    Unter Oracle ist so ein Wrapper ziemlich einfach, andere Datenbanken habe ich bis auf MS SqlServer noch nicht ausprobiert.

    Weiß einer wie das unter MS-SqlServer 2000/2005 geht. Wichtig ist das der User A keine SysAdmin rechte bekommt.



    Danke für eure Antworten... ich bin ziemlich ratlos.... btw inpersonate as sa geht auch nicht. User A hat zuviele Rechte.
  • das geht auch temporär? also in der SP einmal dem User zuweisen und dann wieder enziehen.

    Wie kann man denn automatisch einem User pro LoginSession die Rechte Create DB und Crate Table vergeben ohne das man als DBA eingelogged ist oder der DBA dort im Script sein password im klartext reinschreibt?

    Und angenommen User A erstellt eine Datenbank. das dauert 5 min. Währenddessen connected sich User A ein 2tes Mal erstellt auch eine DB. Die 1te Session ist dann fertig und entzeiht wieder die Session. Das ist dann für den 2ten doof gelaufen

    Dann anders. User A bekommt permanent die Rechte.

    Das ist aber eigentlich nicht der Tenor eines Wrappers.

    Da muss es doch was geben oder ?

    (Bei Oracle hat der User A nur das Recht auf die SP und das Recht des Logins.)
  • Also mit dem Befehl "GRANT CREATE DATABASE TO UserA" kannst du ihm dynamisch die Rechte geben.
    Das setzt aber voraus, dass der Benutzer der dieses Statement ausführt, das Recht "GRANT" auf "GRANT" hat :)
    Wenn sich dann natürlich ein Befehl überschneidet, hat der 2. User A Pech gehabt.
    Kannst du dein Szenario inhaltlich vielleicht etwas näher spezifizieren? Wieso willst du soviele DBs auf einmal anlegen? Kann die SP nicht im Kontext eines DBA ausgeführt werden????
    There's no place like 127.0.0.1
  • Meine Anwendung funktioniert wie folgt:

    Es gibt viele Anwender, die sich bei meiner Anwendung (c#) ammelden können. Nicht alle Anwender der Anwendung bekommen das Recht auf die Funkionalität der Anwendung eine Datenbank anlegen zu können.

    Nur die Anwendung bekommt einen Datenbankbenutzer(myUserLikeDBA), der nun das Recht hat auf einer Datenbank z.B. SqlServer 2000/2005 eine Datenbank anzulegen.
    Die Anwendnug hat die Sourcen um ein Project anzulegen.

    Der myUserLikeDBA ist ein beschränkert Benutzer der Datenbank. Er soll nur ein Login und Zugriff auf eine SP (Create / Drop DB) bekommen.

    Warum will ich das der Datenbankbenutzer eingeschränkte Rechte bekommt. Ein DBA hat es nicht so gerne, das im produktiven System Datenbankbenutzer existiseren, die Rechte haben das System stillzulegen. Man kann sich vorstellen, das wenn das Password des myUserLikeDBA herrausgefunden wird, dann kann der böse Mensch alles auf dem DB-Server veranstallten. Das möchte ich nicht.

    Drum wäre das mit einem Zugriff auf eine SP und dadrin gekappselt das Create DB ziemlich cool. Der maximale Schaden wären x mal DB´s auf dem DBServer ... das wäre übel aber ich würde wissen das nicht mehr passiert ist, und auch der User nicht noch mehr erstellt / geändert hat.
  • Had3s schrieb:

    Nur die Anwendung bekommt einen Datenbankbenutzer(myUserLikeDBA), der nun das Recht hat auf einer Datenbank z.B. SqlServer 2000/2005 eine Datenbank anzulegen.
    Die Anwendnug hat die Sourcen um ein Project anzulegen.
    Meinst du eine "Tabelle in einer DB anlegen" oder "eine neue DB im selben Tablespace anlegen"?
    Handelt es sich um eine Web Applikation oder um eine normale Standalone Applikation?
    Evtl. könntest du dir helfen, indem du auf dem DB Server ein WebService installierst, welches nur von der Applikation verwendet werden kann.
    Dieses WS ist für den Aufruf der SP zuständig, und nur das WS weiß Username und Passwort für die SP.
    Der Client redet mit dem WS und du musst dir keine Sorgen machen, dass jemand das PW rausfindet (z.B. nimmt das WS nur Anfragen über https nach Authentifizierung etc. entgegen)???
    There's no place like 127.0.0.1