Anmelden
Ich möchte für die nächsten 30 Tagen angemeldet bleiben
Deutsch
Several pages in the usergroup are available in English. Click on english to visit these pages.

Veröffentlichungen

Alle Artikel | Suche | Newsfeeds

DotNetNuke, SQL Express und User Instances
Benjamin Hermann, Dienstag, 10. April 2007 11:46, Article Rating

Nun, bisher z.B. unter DNN 3, musste man immer einen klassischen Connection-String  angeben (DB Server Name, DB, User und Password). Wenn man nun verschiedene DNN Portale (Installationen) auf einem Webserver betreibt, dann braucht man pro Installation einen DB; und alle betriebenen DBs laufen dabei unter Windows unter einem Prozess. Musste man diesen anhalten, standen alle DNN Installationen still. Und wenn es z.B. nur einen SA User gibt, dieser aber für mehrere DNN Installationen als DB User angegeben wurde, dann können die einzelnen Host-User einer DNN Installation in die DB einer anderen Installation schauen … und das will ja keiner ;). Man konnte natürlich mehrere Instanzen des SQL-Servers bzw. der MSDE installieren, was die meisten Anwender verständlicherweise aber nicht machen.

Unter DNN 4 fällt in diesem Zusammenhang der andere Connection-String in der Web.Config auf: 

<add name="SiteSqlServer" connectionString="Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Database.mdf;" providerName="System.Data.SqlClient" />. 

Das Schöne daran ist, dass die DB hier direkt über den Dateinamen abgesprochen wird. Beim ersten Aufruf wird sie automatisch an den laufenden SQL Express Dienst angehängt. So kann man z.B. DNN inkl. DB leicht von einem Server auf einen anderen kopieren. Auch beim Erstellen von Backups beitet das einige Vorteile. Ein weiterer Vorteil sind die angesprochenen „User Instances“. Letztlich bedeutet das, dass pro Datenbank (sprich pro DNN) ein eigener Prozess gestartet wird. Hält man diesen an, laufen alle anderen DNN Installationen weiter. Auch die Sicherheit ist deutlich erhöht, da Host User nicht auf die Datenbanken anderer DNN Installationen zugreifen können.

Jetzt stellt sich doch letztlich die Frage, ob man bestehende DNN 4 Installationen die einen klassischen SQL-Connection-String  verwenden auf SQL Express unter Verwendung des „neuen“ Connection-Strings umziehen kann: Ja, kann man.

Im Enterprise Manager (Verwaltungs-Tool für den SQL Server) hängt man die betroffene Datenbank ab (detach). Jede Datenbank des SQL-Servers (2000, MSDE) hat auf dem Dateisystem zwei Dateien (DBNAME.mdf, DBNAME.ldf). Bei einer Standardinstallation findet man diese unter C:\Program Files\Microsoft SQL Server\MSSQL\Data o.ä.  . Die zur abgehängten Datenbank gehöhrenden Dateien (beide) kopiert man nun die das DotNetNuke Verzeichnis APP_DATA. Die dort bereits liegende Database.mdf kann man ruhig löschen. So, nun muss man nun noch die Web.Config anpassen. Natürlich muss man den SQL Express Connection String benutzen und diese entsprechend verändern. Der Wert „AttachDBFilename=|DataDirectory|Database.mdf;" muss in AttachDBFilename=|DataDirectory|DBNAMEmdf;" geändert werden. Natürlich eurem DB Dateinamen entsprechend. Und nicht vergessen: In DNN 4 gibt es zwei Connection-Strings. Beide anpassen nicht vergessen.

Für DNN3 habe ich dieses Vorgehen noch nicht getestet.

Noch zur Ergänzung: Wenn die DB unter Verwendung von User Instances eingebunden wird, dann kann man nicht gleichzeitig per Web (DNN) und per Admin Tool auf die DB zugreifen.
Dennoch: Es ist ein Zugriff auf eine DB mit dem SQL Manager im laufenden Betrieb möglich. Dazu müsst Ihr einfach die User Instances abschalten. Das sieht dann ca. so aus:
<add name="SiteSqlServer" connectionString="Data Source=.\SQLExpress;Integrated Security=True;User Instance=False;AttachDBFilename=|DataDirectory|Database.mdf;" providerName="System.Data.SqlClient" /> . und der Unterschied: nicht jede DB läuft in einem eigenen Prozess unter Windows.

http://msdn2.microsoft.com/en-us/library/ms345154.aspx
http://www.dotnetnuke.com/Community/BlogsDotNetNuke/tabid/825/EntryID/1202/Default.aspx

Space
Space Space
Kategorien  

Autoren  

Archiv