Announcement

Collapse
No announcement yet.

Neuen Benutzer im SQL-Server anlegen und einer DB zuweisen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Neuen Benutzer im SQL-Server anlegen und einer DB zuweisen

    Ich benutze den SQL-Server 7.0 und 2000 und möchte mittels SQL-Script einen neuen Benutzer hinzufügen und diesen einer bestimmten Datenbank als Besitzer zuweisen. <br>Das Zuweisen kann man mit <b>sp_changedbowner <i>Benutzername</i></b> ausführen. Soweit sogut.<br>
    Wie sieht es aber mit dem Erzeugen eines neuen Benutzers aus. Ich habe bis jetzt nur im Enterprise Manager unter Sicherheit - Benutzernamen ein neues Konto erstellt.

    Das ganze mache ich, um mittels einer ASP.NET anwendung auf die Datenbank zuzugreifen. Wenn ich die Windowsauthorisierung benutze (Integrated Security=SSPI), bricht er den Verbindungsaufbau mit der Fehlermeldung ab, dass der Benutzer ASPNET keinen Zugriff auf die Datenbank hat. Kann man da was dran ändern, das ich keinen extra Benutzer benötige?<br><br>
    Andreas Gräfe

  • #2
    Hallo,

    &gt;..Kann man da was dran ändern, das ich keinen extra Benutzer benötige?

    Ja - wobei des zwei verschiedene Wege gibt: <br>
    1. Die Web.config legt ein alternatives Benutzerkonto anstelle von ASPNET fest, das bereits Zugriff auf den MS SQL Server hat.<br>
    2. Die ASP.NET-Anwendung ruft in eigener Regie <b>LogonUser</b> und <b>Impersonate</b> auf, um zu einem Benutzerkonto zu wechseln, dass bereits Zugriffsrechte auf den MS SQL Server hat.<br>
    Ein Beispiel für den 2. Weg ist im .NET-Bereich des FORUMs zu finden

    Comment


    • #3
      Ich habe in der Web.config folgende Einstellungen gespeichert.
      <pre>
      <appSettings>
      <add key="VArt" value="sql" />
      <add key="connsql" value="Data Source=test2000; Provider=SQLOLEDB; Initial Catalog=Adminhouse; User ID=Adminhouse; PWD=*********" />
      <add key="connaccess" value="Data Source=C:\Inetpub\wwwroot\AdmInHouse2000\intranet. mdb; Provider=Microsoft.Jet.OLEDB.4.0" />
      </appSettings>
      </pre>

      Ich hole dann den String mittels eigener Funktion aus der Datei raus und benutze ihn zum Aufbau. Jetzt wollte ich entweder den Zugriff über die Integrierte NT-Sicherheit aufrufen oder mittels Script einen neuen User anlegen?
      Was wäre da am Besten und wie löst man das

      Comment


      • #4
        Hallo,

        in meiner vorherigen Antwort muss die <i>Web.config</i> durch die <b>machine.config</b> ersetzt werden. Das Konto für den Worker-Prozess von ASP.NET (<i>aspnet_wp.exe</i>) wird im <b>processModel</b>-Abschnitt der <b>machine.config</b>-Datei (Unterverzeichnis <i>Config</i> im Windows-Verzeichnisbaum des .NET-Frameworks) gesetzt. Der als Vorgabe gesetzte <b>userName</b>-Eintrag <b>machine</b> steht dabei für das Benutzerkonto <i>ASPNET</i>, wobei bei diesem speziellen Benutzer als passwort der Wert <b>AutoGenerate</b> genutzt wird. Im Kommentarblock oberhalb dieses Eintrags sind alle Optionen ausführlich beschrieben.

        Damit nun ASP.NET anstelle von ASPNET unter einem Benutzerkonto läuft, das bereits Zugriffsrechte auf den MS SQL Server (Windows-Authentifizierung) hat, muss dieser Eintrag nur geändert und der Rechner dann neu gebootet werden:

        <b>Vorher</b>
        <pre>&lt;<font color="#ff0000">processModel</font> enable=&quot;true&quot; timeout=&quot;Infinite&quot; idleTimeout=&quot;Infinite&quot;
        shutdownTimeout=&quot;0:00:05&quot; requestLimit=&quot;Infinite&quot; requestQueueLimit=&quot;5000&quot;
        restartQueueLimit=&quot;10&quot; memoryLimit=&quot;60&quot; webGarden=&quot;false&quot; cpuMask=&quot;0xffffffff&quot;
        userName=&quot;<font color="#ff0000">machine</font>&quot; password=&quot;<font color="#ff0000">AutoGenerate</font>&quot; logLevel=&quot;Errors&quot;
        clientConnectedCheck=&quot;0:00:05&quot; comAuthenticationLevel=&quot;Connect&quot;
        comImpersonationLevel=&quot;Impersonate&quot; responseRestartDeadlockInterval=&quot;00:09:00&quo t;
        responseDeadlockInterval=&quot;00:03:00&quot; maxWorkerThreads=&quot;25&quot; maxIoThreads=&quot;25&quot;/&gt;</pre>
        <p><b>Nachher</b></p>
        <pre>&lt;<font color="#ff0000">processModel</font> enable=&quot;true&quot; timeout=&quot;Infinite&quot; idleTimeout=&quot;Infinite&quot;
        shutdownTimeout=&quot;0:00:05&quot; requestLimit=&quot;Infinite&quot; requestQueueLimit=&quot;5000&quot;
        restartQueueLimit=&quot;10&quot; memoryLimit=&quot;60&quot; webGarden=&quot;false&quot; cpuMask=&quot;0xffffffff&quot;
        userName=&quot;<font color="#ff0000">BereitsVorhandenerUser</font>&quot; password=&quot;<font color="#ff0000">DasUserPasswort</font>&quot; logLevel=&quot;Errors&quot;
        clientConnectedCheck=&quot;0:00:05&quot; comAuthenticationLevel=&quot;Connect&quot;
        comImpersonationLevel=&quot;Impersonate&quot; responseRestartDeadlockInterval=&quot;00:09:00&quo t;
        responseDeadlockInterval=&quot;00:03:00&quot; maxWorkerThreads=&quot;25&quot; maxIoThreads=&quot;25&quot;/&gt;</pre&gt

        Comment


        • #5
          Danke für die schnelle und umfassende Antwort

          Comment

          Working...
          X