Blog Home  Home Feed your aggregator (RSS 2.0)  
HP's Blog - Friday, October 05, 2007
Hans-Peter Schelian's Weblog
 
# Friday, October 05, 2007

Immer wieder taucht die Frage auf, wie man auf einfache Art und Weise eine Datensicherung einer SQL Datenbank anlegen kann.

Auch wenn Heute viele gar nicht mehr genau wissen wozu man die Eingabeaufforderung, Batch Dateien und Kommandozeilen (das sind Programme die keine GUI haben) Programme verwendet ist die Zeit dieser Tools noch lange nicht zu Ende, wie auch dieser Beitrag wieder einmal beweist.

Und eines dieser Kommandozeilen Programme, das osql tool des SQL Server, ist auch die Basis dieses Artikel.

Das osql tool des Microsoft SQL Server (sowohl im SQL Server 2000, der MSDE und auch in allen SQL 2005 Versionen enthalten) bietet die Möglichkeit Transact SQL Befehle (T-SQL) direkt von der Kommandozeile auszuführen.

Nutzen wir doch diese Möglichkeit und erstellen wir uns eine Batch Datei (Datei die auf Kommandozeilen Ebene ausgeführt werden kann), mit der wir eine Datenbank eines SQL Server's sichern können.

Ich Denke nicht dass man jede Zeile der Batch Datei erklären muss, deshalb hier nun den Inhalt der Batch Datei:

@ECHO OFF
rem Für die Verwendung mit SQL Server 2000 oder der MSDE in der nachfolgenden Zeile  das rem am Anfang entfernen
rem set SQL_UTIL_HOME="%ProgramFiles%\Microsoft SQL Server\80\Tools\Binn\osql"
rem Für die Verwendung mit SQL Server 2005 oder SQL Server 2005 Express in der nachfolgenden Zeile  das rem am Anfang entfernen
set SQL_UTIL_HOME="%ProgramFiles%\Microsoft SQL Server\90\Tools\Binn\osql"
rem Tragen Sie in der nachfolgenden Zeile den Namen des SQL Server ein z.B. (localhost)
set SQL_SERVERNAME=HP-DN01\SQL2005
rem Tragen Sie in der nachfolgenden Zeile den Namen der zu sichernden Datenbank ein
set SQL_DBNAME=FASC
rem Tragen sie den Namen inkl. Pfad der Backup Datei ein
set SQL_BACKUP_FILE='C:\temp\fasc.bak'
@ECHO ON
%SQL_UTIL_HOME% -E -S%SQL_SERVERNAME% -n -Q "BACKUP DATABASE %SQL_DBNAME% TO DISK = %SQL_BACKUP_FILE% WITH INIT"

Hier kann man die Datei herunterladen Backup.Bat.

Einfach herunterladen, das ZIP File entpacken und dann die Backu.BAT Datei öffnen und die darin gesetzten Environment Variablen auf die eigenen Bedürfnisse anpassen.

 

Code | Tips und Tricks | Tools
Friday, October 05, 2007 10:40:01 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Thursday, October 04, 2007

Im Zusammenhang mit einem DotNetNuke Update (Version 3.1.1 --> Version 4.5.3) welches ich für einen Kunden durchführe ist folgendes Problem aufgetaucht:

In der DotNetNuke Installation 3.1.1 war unter anderem das FAQ Module von SpohnSoftware in der Version 1.06.00 eingesetzt.

Während des Update des DotNetNuke Portals auf die Version 4.5.3 traten auch keine merklichen Probleme mit diesem Modul auf. Selbst bei den ersten Tests (es handelt sich um ein umfangreiches Portal) wurden zuerst noch keine Probleme festgestellt. Dann aber stellte man fest, dass beim Versuch durch anklicken der Frage die Antwort zu öffnen nur eine Meldung "Fehler auf dieser Seite" vom Browser ausgegeben wurde, aber der Antwort nicht angezeigt wurde.

Nach einer kurzen Recherche im Internet war klar, es gibt eine neue Version (mittlerweile die Version 03.00.00) die auch laut Angaben des Herstellers für DotNetNuke 4.X funktioniert.

Also neue Version des Moduls gekauft (wie sich kurz drauf herausstellen sollte, Gott Sei Dank gleich die Source Version) und auf einem Test-Portal installiert.

  • Frage und Antwort eingegeben
  • Seite aufgerufen
  • Auf die Frage geklickt um die Antwort anzuzeigen

Und der Browser zeigt in der Statuszeile an: Fehler auf dieser Seite

Wie bereits erwähnt, ich hatte die Source Version gekauft. Also das Modul in einem Entwicklungsportal installiert und die Source in das Projekt integriert.

Fehlersuche......!

Nach einigen Minuten war klar, das Problem liegt daran dass beim Aufruf von Java Script Funktionen kein gültiges Objekt der Seite an diese als Parameter übergeben wurden, aber warum.

Aber auch diese Frage war nach kurzer Zeit geklärt:

SpohnSoftware hat in seinem Modul eine Funktion GetTableName die dazu verwendet wird den durch das APS.NET Framework generierten Namen für das Control zu ermitteln. Die Funktion sieht so aus:

        Public Function GetTableName() As String
            Try
                Return Replace(UniqueID & "_tblQA", ":", "_")

            Catch ex As Exception
                ProcessModuleLoadException(Me, ex)
            End Try
        End Function

Wenn wir uns nun den Replace anschauen sehen wir auch sehr schnell das eigentliche Problem:

Die UniqueID enthält den eindeutigen Namen, welcher vom NET Framework erzeugt wurde. Das NET Framework 2.0 verwendet hierbei zur Trennung zwischen den einzelnen Namen das $ Zeichen und nicht das : Zeichen.

Das kann nicht gehen und ich frage mich wie das Modul jemals funktioniert haben soll.

Hier nun die Funktion wie sie richtig ist und auch funktioniert:

        Public Function GetTableName() As String
            Try
                Return Replace(UniqueID & "_tblQA", "$", "_")

            Catch ex As Exception
                ProcessModuleLoadException(Me, ex)
            End Try
        End Function

Ich habe hierzu auch sehr intensiv im Internet recherchiert, konnte aber keine Erklärung finden, warum das jemals so funktioniert haben soll.

Mal sehen, eventuell gibt es ja jemand der meinen Artikel liest und mir darauf eine Antwort geben kann.

DotNetNuke | Module | Programmierung | Code
Thursday, October 04, 2007 8:12:05 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Wednesday, October 03, 2007

Während der Umsetzung eines Projektes bin ich damit konfrontiert worden, dass es notwendig war ein kleines Windows Programm, dass vom Hersteller der Hardware (Barcode Scanner Terminals) zur Verfügung gestellt wurde, auf einem Rechner permanent laufen zu lassen.

Da es sich um ein Windows Programm und nicht um einen Windows Service handelte smile_sad musste ich das Programm in der Autostart eines Benutzers unterbringen.

Das hat aber dazu geführt, dass:

  • Immer ein Benutzer angemeldet sein musste (was in diesem Fall nicht so schlimm war)
  • Das es möglich war das Programm einfach zu beenden (das ist nicht so klasse, da das Programm ständig laufen musste im die Scanner Terminals abzufragen)´

Die Möglichkeiten die ich hatte waren nun folgende:

  • Einen eigenen Windows Dienst zu schreiben der die Scanner Terminals abfragt (was in Ermangelung fehlender Bibliotheken (API) für die Scanner Terminals sehr aufwendig geworden wäre.
  • Eine Möglichkeit zu schaffen, dass der Aufruf des Programms automatisch geschieht und die Ausführung des Programms überwacht wird und sollte das Programm beendet worden sein, das Programm wieder startet.

Nun bin ich keine 20 mehr und habe gelernt, dass man nicht immer alles neu erfinden muss, und habe bevor ich an die Planung und Entwicklung  eines entsprechenden Programmes (Windows Dienst) gegangen bin, erst einmal ausführlich im Internet nach einer fertigen Lösung gesucht.

Und bin auch fündig geworden. Und nicht als teures Tool irgend eines Herstellers, von dem ich nicht weiß ob es in Übermorgen noch gibt, sondern als Projekt auf www.codeproject.com (Also mit dem Quellcode)

Das Projekt hat den Namen ist in C++ geschrieben und einfach genial.

Man kann diesen Service beliebig oft auf einem Windows Rechner installieren und pro Service jeweils bis zu 127 Windows Programme starten und überwachen.

Und wer es ganz komfortabel möchte, der kann die ebenfalls verfügbare für das Programm verwenden.

Und um es nicht zu vergessen, bedanken können wir uns für dieses kleine Tool bei Xiangyang Liu

Open Source | Tools | Windows Dienste
Wednesday, October 03, 2007 7:24:56 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [2]  
Autor: Hans-Peter Schelian  |  Trackback
# Tuesday, October 02, 2007

Nachdem nun die seit Tagen erwartete Version DotNetNuke 4.6.2 veröffentlicht wurde, habe ich mir diese Version mal etwas näher betrachtet.

Vorab die Essenz meiner Untersuchung:

Man könnte die Version 4.6.2 auch einfach als Pannenhelfer der Version 4.6.0 bezeichnen.

Nein es gibt nichts neues, keine neue Funktion und auch keine Fehlerkorrektur außer den Fehlern die man mit der Pannenversion 4.6.0 selbst erst erzeugt hatte.

Aber was wurde im Detail mit der Version 4.6.2 repariert:
  • Man hat das Problem mit den Schreibgeschützten Eigenschaft ModuleId und TabModuleId wieder gelöst.
  • Eine in der Version 4.6.0 vergessene Prüfung der CaptchaLogin hat man hinzugefügt.
  • Ein End If an die richtige Stelle im Code verschoben, damit die Compression Configuration nicht mehr fehl schlägt.
  • Die aktuelle Version 04.06.00 des HTML Moduls mit in das Package eingebunden
  • Und dann kommt der dickste Hammer, man hat all die Fehler die man in dem SQL Upgrade der Version 4.6.0 eingebaut hat geändert. Das waren nicht weniger als 34 Änderungen in der Datei 04.06.00.SqlDataProvider.SQL.

Nicht dass man die Korrekturen in der Datei 04.06.02.SqlDataProvider vorgenommen hätte, so dass, sollte man bereits ein Update auf die Version 4.6.0 durchgeführt haben, nun mit dem neuen Update alle Datenbanken auf den gleichen Stand bringt, nein man hat doch tatsächlich das 4.6.0 Update Skript geändert.

DotNetNuke
Tuesday, October 02, 2007 9:08:55 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback

DotNetNuke selbst bietet keine Möglichkeit ein ganzes Portal zu kopieren (extrahieren) um es dann an einer anderen Stelle (anderer Web Server) zu betreiben.

Es gibt aber einen ganz einfachen Trick dies zu bewerkstelligen.

Anleitung zum kopieren eines DotNetNuke Portals

Sichern des (der) Portals (Portale)

Man kopiert das gesamte Verzeichnis unterhalb seiner DotNetNuke Installation.

Man erstellt ein Datenbank Backup der DotNetNuke Datenbank.

Neues Portal (Kopie) erstellen

Man erstellt eine neue Datenbank

Spielt die Datensicherung des zu kopierenden Portals in die Datenbank zurück

Erstellt ein neues Verzeichnis für die DotNetNuke installation

Kopiert alle Daten aus der Sicherung des zu kopierenden Portals hinein.

Passt nun in der web.config den (die) connection strings an (für díe neue Datenbank)

Startet das Portal

Wenn mehrere Portale in der Installation waren

Kann man nun in de System-Einstellungen von DotNetNuke das gewünschte Portal zum System-Portal machen und anschließen die anderen Portale über System Einstellungen Portale löschen.

DotNetNuke | Installation
Tuesday, October 02, 2007 6:43:51 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback

Nachdem wohl die DotNetNuke Version 4.6.1 die kürzeste Releasezeit aller Zeiten hatte, wurde letzte Nacht die wohl hoffentlich alle problemlösende Version 4.6.2 veröffentlicht.

Die Version kann wie immer von SourceForge herunter geladen werden.

DotNetNuke
Tuesday, October 02, 2007 6:27:45 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Sunday, September 30, 2007

Am Freitag hatte ich in dem Beitrag DotNetNuke Version 4.6.1 vorübergehend nicht verfügbar über die Probleme mit der aktuellen Version 4.6.1 von DotNetNuke berichtet.

Es handelt sich wohl doch um ein größeres Problem, die nachstehend Meldung ist auch nach 2 Tagen noch immer auf DotNetNuke zu sehen.

image

Mal gespannt wann denn nun eine fehlerbereinigte Version fertig ist.

Je mehr von Qualitätssicherung, Beta Versionen und Release Candidates gesprochen wird, umso häufiger kommt es zu fehlerhaften Versionen die veröffentlicht werden.

Nachdem ich dann solche Meldungen (Wir denken Heute ein Lösung präsentieren zu können), über Tage im Web lesen muss, komme ich zu dem Schluss, dass ich mich getäuscht habe als Ich dachte, es wäre eine "Made in Germany" Eigenart der neuesten Zeit, dass Menschen glauben, schon alleine durch die Quantität Ihrer Aussagen zu einem Thema zum Experten zu werden.  Diese Eigenart gibt es auch außerhalb Deutschland's.

DotNetNuke
Sunday, September 30, 2007 4:55:34 PM (W. Europe Daylight Time, UTC+02:00)  #    Comments [2]  
Autor: Hans-Peter Schelian  |  Trackback
# Friday, September 28, 2007

Eine Meldung wie der Titel dieses Blogs deutet eigentlich immer auf ein negatives Ereignis hin.

So auch in diesem Fall.

Schon in der Version 4.6.0 wurden gravierende Änderungen in den ModuleSettingsBase vorgenommen die dazu führten dass komplexe Module die tief in die DotNetNuke Trickkiste greifen, nicht mehr fehlerfrei ausgeführt werden konnten und erst recht nicht mehr gegen die aktuelle Version von DotNetNuke kompiliert werden konnten.

Als eines der wohl bekanntesten betroffenen Modul-Opfer sei hier exemplarisch das DMX Modul von Bring2Mind genannt.

Das Problem ist unter anderem dass mit der Version 4.6.0 plötzlich die Eigenschaften ModuleID und TabModuleId nur noch Schreibgeschützt sind.

Die nun vorübergehend nicht verfügbare Version soll dann doch schnell noch mal geändert werden, damit dann!

Wie es dazu Ausschnittsweise in der Originalmeldung auf DotNetNuke heißt:

"... corrects the breaking change to modulesettingsbase which was inadvertently introduced in 4.6.0."

Besonderes Augenmerk liegt dabei auf "inadvertently", was soviel wie, unbeabsichtigt oder versehentlich, heißen soll.

Na dann bin ich aber mal gespannt, wann die nachgebesserte Version der gefixten Version zur Verfügung steht und vor allem wie die Version dann letztendlich heißen wird

Übrigens ist die Version 4.6.1 über SourceForge die ganze Zeit verfügbar, nur der Link auf DotNetNuke wurde deaktiviert (was das bringen soll ?)

DotNetNuke
Friday, September 28, 2007 3:28:10 PM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Thursday, September 27, 2007

Nach 6 Monaten gibt es eine neue Version des Open Source Programms Cobian Backup.

Folgendes wurde in der Version geändert / hinzugefügt:

  • Vista Manifeste wurden zu allen ausführbaren Programmen hinzugefügt.
  • Chinesische Sprachaktualisierung
  • Portugiesische Sprachaktualisierung
  • Rumänische Sprache hinzugefügt
  • Französische Sprachaktualisierung
  • Russische Sprachaktualisierung
  • Schwedische Sprachaktualisierung
  • Im englischen Tutorial wurden verschiedene Fehler korrigiert.

 

Wie man sieht nichts bahnbrechendes, aber daran sieht man auch, dass es kam Probleme gibt.

 

Weiter so!!

 

Hier der Link zur aktuellen Version: Download Cobian Backup 8 Version 8.4.0.202

Open Source | Cobian Backup
Thursday, September 27, 2007 4:29:45 PM (W. Europe Daylight Time, UTC+02:00)  #    Comments [1]  
Autor: Hans-Peter Schelian  |  Trackback
# Wednesday, September 26, 2007

Gestern wurde ich von einem neuen DotNetNuke Benutzer wieder nach folgendem Sachverhalt gefragt:

Bei der Einrichtung (Installation) von DotNetNuke (In diesem Fall Version 4.6.0) kommt sofort nach Aufruf der Webseite (localhost/dotnetnuke) der Fehler:

image

Ich könnte ja  nun sagen wer lesen kann ist im Vorteil smile_teeth, aber das wäre sicherlich nicht gerecht, also hier die einfache Erklärung dieser Fehlermeldung:

Die Ursache ist nicht, dass der Name "Config" nicht in der web.config definiert ist, sondern, dass es noch gar keine web.config gibt.

Bei den Versionen DotNetNuke_04.06.00_Upgrade.zip und DotNetNuke_04.06.00_Source.zip sind die web.config Dateien nicht direkt enthalten, sondern es muss je nach Anwendungsfall eine der beiden Dateien:

release.config

development.config

nach web.config umbenannt werden.

DotNetNuke | Installation
Wednesday, September 26, 2007 8:21:54 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
Copyright © 2010 Hans-Peter Schelian - Schelian IT Beratung. All rights reserved.