ugriff eines anonymen Nutzer vom IIS auf MS-SQL Server Datenbank

26/09/2007 - 12:04 von plongo | Report spam
Hi,

gehen wir von einer üblichen Webseite aus (auf einem IIS) die im Web für
anonyme Nutzer bereitgestellt wird. Auf dieser Webseite hat der anonymer
Nutzer die Möglichkeit sich zu registrieren und irgendwelche Daten in eine
MS-SQL Server Datenbank einzutragen.

Die Seite ist mir ASP.NET programmiert. Der Zugriff auf die Datenbank
erfolgt über ADO.NET.

Meine Frage ist jetzt, wenn der anonymer Nutzer Daten in die DB schreiben
will, muss für diesen eine einzelne Verbindung aufgebaut werden oder kann ich
für mehrere anonyme Nutzer eine Verbindung üfr mehere anonyme Nutzer nutzen?

Ich trage in der web.Config die Connectionstring ein:
<connectionStrings>
<add name="default"
providerName="System.Data.SqlClient"
connectionString="Data Source=sql\sql2005;Initial
Catalog=datenbank;User Id=bentuzer;Password=pdw;Pooling=true"/>
</connectionStrings>

Dient dieses Pooling=true dazu eben mehrere Verbindungen zu poolen und für
n-Nutzer zu verwenden?

Der Hintergedanke ist folgender. Die WebEdition 2003 des Windows Servers
bietet ja unbeschrànkten Zugriff, wiederum ist der MS-SQL Server von der
Lizenzierung anders aufgebaut.

D.h. wenn ich 100 Zugriffe auf meine Webseite habe und diese wiederum
Zugriff auf die Datenbank, bedeutet das auch das 100 einzelne Verbindungen
zur Datenbank aufgebaut werden, oder dient das Pooling evtl. dazu die
Zugriffe auf n-Verbindungen zu minimieren.
 

Lesen sie die antworten

#1 Anonimo
27/09/2007 - 11:33 | Warnen spam
Hallo "plongo"!

BTW1: Da kommt bestimmt wieder einer daher und erzàhlt dir was von
wegen Realnamen usw.

BTW2: ich hàtte für diese Frage empfohlen
microsoft.public.de.german.entwickler.dotnet.asp
microsoft.public.de.german.entwickler.dotnet.datenbank

Meine Frage ist jetzt, wenn der anonymer Nutzer Daten in die DB schreiben
will, muss für diesen eine einzelne Verbindung aufgebaut werden oder kann
ich
für mehrere anonyme Nutzer eine Verbindung üfr mehere anonyme Nutzer
nutzen?

Ich trage in der web.Config die Connectionstring ein:
<connectionStrings>
<add name="default"
providerName="System.Data.SqlClient"
connectionString="Data Source=sql\sql2005;Initial
Catalog=datenbank;User Id=bentuzer;Password=pdw;Pooling=true"/>
</connectionStrings>

Dient dieses Pooling=true dazu eben mehrere Verbindungen zu poolen und für
n-Nutzer zu verwenden?



ADO.NET verwaltet pro (Anwendung und) ConnectionString einen separaten Pool.
Wenn du für jeden Nutzer den ConectionString entsprechend anpasst (User ID,
Password) dann wird auch für jeden Nutzer ein eigenstàndiger Pool angelegt.
Wenn du (was ich eher denke) für alle "registrierten" Nutzer den selben
SQL Server-Nutzer "benutzer" verwendest, dann wird ein Pool für alle
Benutzer verwendet. Oder legst du für jeden "registrierten" Nutzer einen
eigenstàndigen SQL Server-Nutzer an?

D.h. wenn ich 100 Zugriffe auf meine Webseite habe und diese wiederum
Zugriff auf die Datenbank, bedeutet das auch das 100 einzelne Verbindungen
zur Datenbank aufgebaut werden,



Das ist aus Sicht der (Web-)Anwendung auf jeden Fall so. Aber ...

oder dient das Pooling evtl. dazu die
Zugriffe auf n-Verbindungen zu minimieren.



ADO.NET schließt (bei aktiviertem Pooling) bei einem "Connection.Close"
nicht wirklich die Verbindung, sondern gibt diese "zur Wiederverwendung" in
einen Pool. Ein darauffolgendes "Connection.Open" schaut dann zuerst, ob im
Pool noch eine passende (bereits geöffnete) Verbindung vorhanden ist.

Ach so ... "Pooling=true" ist der Standard und braucht daher nicht angegeben
zu werden. Interessanter dürfte für dich eher "MaxPoolSize" (o.à.) mit dem
Standard "100" sein, jedoch nur wenn du für alle registrierten Nutzer den
selben SQL Server-Nutzer verwendest.

Mit freundlichen Grüßen
Daniel Barisch

Ähnliche fragen