Re: ASP: IIS 5.1 und Datenbankzugriff mit Web-Control: CreateUserWizard



Hallo Stephan!

"Stephan" <stephan@xxxxxxxx> writes:
vielen Dank für die ausführliche Beschreibung und die Erklärungen. :-)
Das Problem ist jedoch für mich leider noch nicht ganz gelöst. Irgendetwas
muss ich noch falsch machen. Das Problem tritt auch beim dem Control: Login
auf, hat also nicht nur mit dem Anlegen von Daten zu tun. Aber der Reihe
nach...

1) Die eigentliche Ursache für die ursprüngliche Exception habe ich
herausgefunden. Ich musste im Connection-String das Property "User-Instance"
auf false setzen. Damit kam die ursprüngliche Exception nicht mehr. Laut
Literatur soll dieser Parameter aber genau notwendig sein, damit User sich
mit weniger Rechten einloggen können?
Alleine diese Änderung reichte jedoch nicht aus. Ich erhielt dann die
Exception: "System.Data.SqlClient.SqlException: Die CREATE
DATABASE-Berechtigung wurde in der 'master'-Datenbank verweigert." Die Datei
'D:\MyToDos\App_Data\aspnetdb.mdf' kann nicht als ''-Datenbank angefügt
werden.

2) Mit Deiner beschriebenen Anleitung: Punkt (1), also die Verwendung des
Users für den SQL-Server und Verwendung der sysadmin-Rolle trat auch dann
diese Exception nicht mehr auf. Die Web-Seite funktionierte dann, wie
gewünscht. :-)

3) Entfernt man jedoch bei diesem User wiederum die sysadmin-Rolle und
möchte dann den ASPNET-User für die Datenbank, wie unter Deiner Anleitung:
Punkt (2) verwenden, dann tritt erneut die Exception auf:
"System.Data.SqlClient.SqlException: Die CREATE DATABASE-Berechtigung wurde
in der 'master'-Datenbank verweigert." Die Datei
'D:\MyToDos\App_Data\aspnetdb.mdf' kann nicht als ''-Datenbank angefügt
werden.

Hast Du vielleicht noch eine Idee, was hier das Problem sein könnte? Ist das
Setzen des Properties "User-Instance" auf false der richtige Weg?

Du verwendest anscheinend keine Datenbank, die fix im SQL Server
eingebunden ist, sondern ein mdf-File, das dynamisch über
AttachDbFilename eingebunden wird.

Wenn du User-Instance auf false setzt, prüft der SQL Server, ob der
ASPNET-Users das Recht hat, neue Datenbanken einzubinden
bzw. anzulegen; diese Rechte hat der ASPNET-User allerdings nicht,
daher kommt die Fehlermeldung ("Die CREATE DATABASE-Berechtigung wurde
.... verweigert"), außer natürlich, der ASPNET-User ist sysadmin, dann
hat er auch dieses Recht.

Das Problem löst man normalerweise, indem man User-Instance eben auf
true lässt. Dadurch wird eine neue Instanz vom SQL Server gestartet,
die unter den Rechten des entsprechenden Users (z.B. ASPNET) läuft.
Sprich: Durch das Entfernen von User-Instance hast du das
ursprüngliche Problem nicht gelöst sondern verschoben. ;-)

Sprich, du hast jetzt zwei alternative Möglichkeiten:

1. User-Instance wieder auf true setzen und sicherstellen, dass der
ASPNET-User Windows-Dateisystem-Lese/Schreib-Rechte auf dein
mdf-File hat! Die braucht er nämlich, um die Datenbank in seiner
eigenen SQL Server-Instanz verwenden zu kommen.

Das sollte eigentlich funktionieren; mit dieser Methode habe ich
allerdings selbst noch keine praktische Erfahrung (ich verwende
AttachDbFilename nicht).

2. Andere Möglichkeit: Du bindest die Datenbank fix in den SQL Server
ein (über das SQL Server Management Studio) und verwendest statt
AttachDbFilename dann einfach die Database (oder Initial
Catalog)-Eigenschaft des Connection Strings. Falls die Anwendung
produktiv auf diesem IIS laufen soll, ist das meiner Meinung nach
die "sauberere" Lösung.

LG,
Heinzi

PS: Falls du dich im Detail über User-Instance etc. informieren
willst, gibt es hier einen recht umfangreichen Artikel:
http://msdn.microsoft.com/en-us/library/bb264564.aspx
.



Relevant Pages

  • Re: ASP: IIS 5.1 und Datenbankzugriff mit Web-Control: CreateUserWizard
    ... Damit kam die ursprüngliche Exception nicht mehr. ... Setzen des Properties "User-Instance" auf false der richtige Weg? ... Du verwendest anscheinend keine Datenbank, die fix im SQL Server ...
    (microsoft.public.de.german.entwickler.dotnet.asp)
  • Re: ASP: IIS 5.1 und Datenbankzugriff mit Web-Control: CreateUserWizard
    ... Damit kam die ursprüngliche Exception nicht mehr. ... Setzen des Properties "User-Instance" auf false der richtige Weg? ... Du verwendest anscheinend keine Datenbank, die fix im SQL Server ...
    (microsoft.public.de.german.entwickler.dotnet.asp)
  • Re: ASP: IIS 5.1 und Datenbankzugriff mit Web-Control: CreateUserW
    ... Damit kam die ursprüngliche Exception nicht mehr. ... Setzen des Properties "User-Instance" auf false der richtige Weg? ... Du verwendest anscheinend keine Datenbank, die fix im SQL Server ...
    (microsoft.public.de.german.entwickler.dotnet.asp)
  • Re: ASP.NET 2.0 - a newbie question
    ... the exception can be identified using the exception stack trace below. ... established connection failed because connected host has failed to ... connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& ... Microsoft SQL Server? ...
    (microsoft.public.dotnet.framework.aspnet)
  • Re: Authentication problem continued
    ... This is the exception I get if on my test box if I haven't run ... I have a SQL Server login established now and I can log in on my ... SQL Server is configured for Windows Authentication only and not ... I'm still having trouble getting my app to authenticate correctly. ...
    (microsoft.public.dotnet.framework.aspnet)