# Saturday, May 26, 2007

Meine bisherigen Gedanken zu diesem Tool: Visual Studio 2005 Team Edition for Database Professionals und VSTS Database Professional (2)

Jetzt gehe ich mal davon aus, dass wir mit dem Schema in dem SQL Projekt zufrieden sind. Jetzt soll das Ganze aber wieder in eine Datenbank kommen. Dazu definiert man bei den Build Eigenschaften des Projektes, welche Verbindung und welche Datenbank das Ziel sein soll. Die Datenbank muss dabei noch nicht existieren.

Die für mich wichtigste Option bei den Einstellung ist dabei Always re-create database. Falls diese Option aktiviert ist, wird bei jedem Deployment tatsächlich die vorhandene Datenbank entfernt und komplett neu aufgebaut. Man kann sich dann also sicher sein, dass in der neuen Datenbank nichts enthalten ist, was nicht über das SQL Projekt definiert wurde. Bei deaktiviert Option, werden nur die Änderungen durchgeführt.

Das eigentlich Deployment geht dann denkbar einfach. Rechte Maustaste auf dem Projekt und deploy gewählt.

Das funktioniert natürlich nur während der Entwicklung so einfach. Das ist der SQL Server typischerweise auf dem gleichen Rechner, in jedem Fall ist er aber direkt erreichbar. Der produktive SQL Server ist aus Sicherheitsgründen meist nicht über den SQL Port ansprechbar. Also geht man den Umweg über ein T-SQL Skript. Bei einem Build des SQL Projektes mit der Always re-create database Option wird die komplette Datenbank in einem T-SQL Skript erzeugt. Diese Skript bringt man auf den Ziel SQL Server und führt es dort aus.

Falls man auch Daten in den Skripten erzeugt, muss man mit den Sonderzeichen aufpassen. Zum Import bietet sich nämlich der sqlcmd Kommandozeilen-Befehl an. Mit "sqlcmd -i inputfile" könnte man die Datenbank ganz schnell erzeugen. Nur sqlcmd spricht den SQL Server über ODBC an. Dabei passieren aber alle möglichen lustigen Dinge mit Sonderzeichen. Deswegen habe ich davon die Finger gelassen. Besser geht es mit dem SQL Server Management Studio  im SQLCMD Mode:

Einfach über "File - Open" das Skript auswählen und im SQLCMD Mode ausführen. Dabei sind mir bisher noch keine Sonderzeichen verloren gegangen.

Saturday, May 26, 2007 1:38:39 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Friday, May 25, 2007

Kritisch, Kompetent, Unabhängig?

Die Rede ist von dem deutschen Ableger von Tom's Hardware Guide. Früher war die englische Version eine der besten Adressen für gute Hardware Tests. Fundiert und detailliert. Inzwischen ist die englische Variante unübersichtlich und nervös.

Schlimm empfinde ich aber die Entwicklung bei der deutschen Seite. Die ist übrigens nicht einfach die übersetzte englische Version, sondern sehr eigenständig. Leider.

Schon einige der dortigen Artikel zum Thema Windows Vista empfand ich unsäglich schlecht. Alle sehr laut und aufdringlich geschrieben und aus meiner Sicht völlige Thema Verfehlungen. Das heutige Highlight und Grund für diesen Rant: Vista-Radikalkur: Abspecken um 60%

10 GB für ein Betriebssystem? Wo ist hier eine Spur von Effizienz zu erkennen?

Effizienz laut Wikipedia:

Effizienz (v. lat.: efficere = bewirken) ist das Verhältnis eines in definierter Qualität vorgegebenen Nutzens zu dem Aufwand, der zur Erreichung des Nutzens nötig ist. Als effizientes Verhalten bezeichnet man ein Verhalten, das sowohl tatsächlich zur Erreichung des Nutzens führt (Effektivität) als auch den dafür notwendigen Aufwand möglichst gering hält.

Aufwand wäre in diesem Zusammenhang die benötigte Zeit das Betriebssystem so zu installieren, dass alle denkbaren Anwender danach möglich viel Nutzen, also ein funktionierendes Vista haben. Mit in die Rechnung müssen natürlich nach die Kosten für die belegte Festplattenkapazität eingebracht werden.

Gerade kostetet ein pro GB relativ teure 80 GB Platte 38 Euro. Gerundet die 10GB Vista Installation also 5 Euro! Dass spielt also bei vernünftiger Betrachtung wohl keine Rolle. Damit versteht man auch, wieso Microsoft direkt und ohne Nachfrage einfach alles installiert. Der Plattenplatz ist inzwischen billig genug. Dafür spart man sich Unmengen an Erklärungen und Dokumentation, wieso nun ein Anwender dieser oder jenes auswählen kann. Der Support wird einfacher. Man kann davon ausgehen, dass alles vorhanden ist.

Bei THG schwelgt man aber erbsenzählend bitszählend in Ballast Orgien und Microsoft Beschimpfungen. Als Lösung darf dann der Anwender ein paar DVD-Rohlinge brennen und sich ein Betriebssystem basteln, dass er früher oder später neu installiert darf. Eine der abgewählten Funktionen braucht man dann doch. Armer Leser!

Auf dieser Seite wird gezeigt, was man bei THG nicht im Betriebssystem braucht. Die grünen Häkchen sind die entfernten Komponenten. Übrig bleiben auf den ersten Blick im Wesentlichen der Kernel und der Explorer. Sprich ein gerade noch funktionierendes System. Da kann ich ja dann gleich Linux installieren! (1)

Tom rette uns!

 

(1) Vorsicht der Satz ist böse und nicht ernst gemeint!

 

Update:

Ich wollte auch im THG Forum eine kurzen Beitrag mit meiner Meinung hinterlassen: >>>>edit by mod<<<<

Schade eigentlich :)

Friday, May 25, 2007 10:37:54 AM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Wednesday, May 23, 2007

IsolatedStorage funktioniert bei mir unter Vista x64 nicht wie erwartet. Ich arbeite als Administrator mit ausgeschaltetem UAC. Ich kann in der IsolatedStorage Dateien erzeugen und anschließend wieder lesen. Was ich nicht kann, ist die abgelegten Dateien auslesen oder löschen.

Zuerst habe ich erfolgreich eine Datei LoginTicket.xml angelegt. Eine Datei Test.xml existiert nicht. Bei folgendem Beispiel Code passiert dann etwas seltsames:

IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null);
// liefert keine Einträge:
string[] test = isoStore.GetFileNames("*");
// liefert den richtigen Stream:
IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("LoginTicket.xml", FileMode.Open);
// Wirft wie zu erwarten eine FileNotFoundException:
IsolatedStorageFileStream isoStream2 = new IsolatedStorageFileStream("Test.xml", FileMode.Open);

Bei isoStore.GetFileNames("*") sollte eigentlich auch die Datei LoginTicket.xml im Ergebnis dabei sein. Ist sie aber nicht.

Danach kann ich problemlos die Datei öffnen. Der Inhalt würde auch stimmen. Natürlich kann ich keine nicht vorhandene Datei Test.xml öffnen. An der Stelle bin ich dann schon verzweifelt :).

Was geht da schief?

Wednesday, May 23, 2007 3:49:16 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [1]  | 
# Tuesday, May 22, 2007

Jeff Atwood hat ein paar Zahlen zusammengetragen, die ich nachempfinden kann: Productivity Tip: Upgrade Your Pentium 4

Das Ergebnis einiger Compilation Benchmarks: Weg mit dem P4.

Die aktuellen Core 2 Duo CPUs lassen die letzte Generation der P4 Dual Core Prozessoren wirklich alt aussehen. Subjektiv merke ich das auch deutlich. In der Arbeit werkelt ein Pentium D 950 (oder 940?). Der Heimarbeitsplatz hat schon einen Core 2 Duo E6600. In dem WorldBench - Mozilla 1.4 Benchmark ergibt sich 470 (D950) zu 259 (E6600). Oder ein Faktor von 1,8.

In Kombination mit der WD Raptor HD die zu Hause flitzt, ist es fast schon eine Strafe in die Arbeit zu gehen. Rein hardwaremäßig natürlich :)

Tuesday, May 22, 2007 1:58:13 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Monday, May 21, 2007

Jetzt ist es ja doch schon einige Tage her. Eine vernünftige Entschuldigung für die Verzögerung gibt es ohnehin nicht :)

Am 3.3.2007 bin ich mit meiner Frau Renate vor den Altar getreten!

Die Fotos wurden auch alle am gleichen Tag gemacht. Nur bis wirklich die Zeit gefunden ist, alle Bilder zusammenzutragen. Ähem...

Hochzeit von Renate und Christian

Nix Flickr oder Zooomr. Ganz einfach HTML 4.irgendwas aus IrfanView exportiert.

Monday, May 21, 2007 3:11:31 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Saturday, May 19, 2007

Visual Studio Edition Team Edition for Database Professionals ist (noch) kein Werkzeug zur Datenbank Modellierung. Das Tool spricht eigentlich nur reines T-SQL. Wobei hilft es dann dem Datenbank Entwickler?

Die Datenbank oder genauer das Datenbank Schema wird sehr weitgehend in die Entwicklungsumgebung integriert. Am wichtigsten ist dabei die gelungene Integration in die Versionsverwaltung. Wie der restliche Source Code auch, steckt das Datenbank Schema im Source Control.

Das ging vorher auch schon ansatzweise. Über den Server Explorer konnte man sich alle Objekte aus der Datenbank in ein SQL Server Projekt als Skript importieren lassen. Dabei hat man ein paar Nachteile:

  • Aus den Skripten kann man nicht direkt die Datenbank erzeugen.
  • Die Daten aus der Datenbank stehen nicht zur Verfügung.
  • Die erzeugten T-SQL Skripte enthalten meist mehrere Datenbank Objekte.
  • Änderungen sind schwer nachzuvollziehen.
  • Man hatte keinerlei Unterstützung bezüglich des Inhalts der Skripte.
  • Es ist nicht sichergestellt, dass die Schema Version zum restlichen Code passt.

Natürlich ist es trotzdem wichtig, dass die Datenbank unter Versionskontrolle kommt. Aber bisher war das eher eine Einbahnstraße. Die T-SQL Skripte sind zwar gesichert und versioniert. Man kann mit einiger Handarbeit daraus auch wieder die gewünschte Datenbank erzeugen. Eine echte Integration ist das aber nicht.

Falls man die erzeugenden Skripte einer Datenbank hat, kann man diese einfach mit einem Wizard importieren:

Bei dem Import wird die Information in möglichst kleine Einheiten aufgeteilt, die einzeln als SQL Skripte gespeichert werden.

Eine Testtabelle wird dann wie hier automatisch in unterschiedliche Skripte zerlegt abgespeichert. Dadurch lassen sich Änderungen später leichter nachvollziehen. Der Vergleich mit älteren Versionen im Source Control fällt leichter und ist sinnvoller.

Falls man anschließend an der originalen Datenbank weiter arbeitet, dann ist es nicht praktisch, jedesmal das Schema über diesen Import Wizard zu laden. Dazu gibt es ein sehr mächtiges Tool, den Schema Compare.

Update: Hier geht es weiter: VSTS Database Professional (3)

Saturday, May 19, 2007 7:43:07 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Friday, May 11, 2007

Ursprünglich gab es für die Visual Studio Team System 3 Editionen:

  • Team Edition for Software Architects
  • Team Edition for Software Develepers
  • Team Edition for Software Testers

Mittlerweile hat Microsoft eine weitere Edition nachgereicht, die Team Edition for Database Professionals.

Ich bin kein Database Administrator (DBA) und erst recht kein Database Professional. Dennoch ist die meiste Zeit das SQL Server Management Studio offen, denn das Datenbank Design kann ich leider nicht delegieren. Somit ist jede Tool-Unterstützung willkommen, insbesondere in Form einer integrierten Team Edition.

Der Einstieg in die Team Edition begann mit einer Enttäuschung. Ich habe eine neues Database Projekt angelegt und Add New Table gewählt:

Ups, kein Table-Designer? T-SQL ist nicht meine Muttersprache. Die üblichen Selects und Joins kriege ich schon hin. Meine Tabellen möchte ich aber mit mehr Unterstützung entwerfen. Wir werden später noch erfahren, dass hier ein anderes Konzept verfolgt wird. Hinter vorgehaltener Hand erfährt man auch, dass für spätere Versionen eventuell mehr Unterstützung geplant ist. Im Moment sollten man seine Schema Objekte anders erzeugen.

Wenn auch ohne Designer kriegt man aber bezüglich Schema Visualisierung und Validierung schon einiges geboten:

Schema View

Im Schema View sieht man alle Schema Objekte, die in vielen einzelnen sql-Dateien definiert werden, übersichtlich angeordnet. Änderungen am Schema werden direkt validiert und man erhält entsprechende Warnungen.

Man kann auch die Eigenschaften der Objekte sich im Property Grid darstellen lassen:

Properties

Es hat einige Zeit gedauert, aber irgendwann habe ich aufgegeben dieser Eigenschaften Anzeige das graue Mäntelchen auszuziehen. Es ist nur eine Anzeige. Ändern kann man nichts.

An der Stelle sollte man aber nicht aufgeben. Wie bei vielen Tools, muss man erst die Philosophie verstehen. Dann arbeitet man nicht mehr gegen das Tool, sondern damit. In Kürze werde ich mehr dazu schreiben, wie ich mittlerweile den Datenbank Profi einsetze. (Update: VSTS Database Professional (2))

Friday, May 11, 2007 11:34:29 AM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Thursday, May 10, 2007

Wieso nur müssen Programme ungefragt überall rumtrampeln? Wenn der kleine Programmierer mal nicht alle Nebenwirkungen seiner Installation im Griff hat, dann ist das nicht schön, aber verständlich. Adobe sollte aber mal dazu lernen. Bloatware die langsam startet und sich an versteckte Sektoren der Festplatte krallt.

In der CS3 Suite ist auch der Acrobat 8 dabei. Der hat es in der im Mai ausgelieferten Version noch nicht geschafft, unter Vista x64 zu laufen. Die Installation fragt nach einer dll von der Vista CD und funktioniert dann nicht. Shame on you! Ein guter Vorwand, sich mit XPS anzufreunden :)

Ich habe auch Dreamweaver CS3 mitinstalliert. Eigentlich brauche ich akut nur den Illustrator CS3. Den möchte ich per .NET automatisieren. Also direkt nach der Installation Visual Studio gestartet und das Projekt geladen. Meine Applikation braucht eine Lizenz-Datei. Ist die auch beim Exe gelandet? Doch im Explorer ist Frühling! Alles ist grün. Mit einem kleinen Dw drinnen. Dreamweaver? Für *.cs Dateien? Für *.config Dateien? Für *.apsx Dateien?

ARGH! Die Dateien waren alle schön für Visual Studio registriert. Damit programmiert man. Nicht mit Dreamweaver! Eine Unverschämtheit sich ungefragt so einzunisten.

In den Visual Studio Optionen kann das wieder heile machen. Puh.

Den rote Kringel hat übrigens Photoshop CS3 malen dürfen :)

Thursday, May 10, 2007 11:11:23 AM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Friday, May 04, 2007

Eine der Nebenwirkungen der Softwareentwicklung sind die entstehenden Anwendungen. Es kommt tatsächlich vor, dass die eigene Software verwendet wird. Das erfreut zunächst den Entwickler auch. Für jedes abgeschlossene Projekt gibt es als Bonus oft auch eine neue, spannende Herausforderung.

Doch hin und wieder passiert es: Alte Applikationen müssen erweitert oder angepasst werden. Am Namen erkennt man das Projekt meist noch. Das war doch noch in dieser älteren Version der Entwicklungsumgebung geschrieben? Funktioniert das überhaupt noch? Verstehe ich die Applikation noch? Brrrr.

Wie soll man reagieren?

Den Job hinwerfen? Neuer Arbeitgeber, neue Projekte?

Geht im Moment nicht.

Alles leugnen? Das war doch der andere Programmierer!

Geht nicht, ich war schnell als Übeltäter Urheber identifiziert.

Ausflüchte? Der Source Code ist verloren gegangen!

Glaubt mir keiner. Dafür bin ich zu sehr mit Backups beschäftigt.

Wichtigere Projekte vorschieben?

Das funktioniert sogar. Öfters stimmt das auch. Hilft aber nicht immer.

Gestern hatte ich noch Glück. Die Applikation war nur 2 Jahre alt. Darunter lagen aber noch Teile eines 3 Jahre alten eigenen Frameworks, dass auf dem damaligen Mere Mortals .NET Framework (MM .NET) basiert. Natürlich alles in C# mit dem .NET 1.1 Framework entwickelt.

Visual Studio 2003 läuft nicht mehr unter Vista und MM.NET war für mich eine Sackgasse. Das Framework war zu nahe an seiner Wurzel, dem guten alten Visual Foxpro, und hatte zu wenig Verständnis für .NET selbst. Also habe ich alles nach .NET 2.0 und Visual Studio 2005 portiert und die Abhängigkeiten zu Altlasten minimiert.

Jetzt habe ich einen Tag später die gleiche Funktionalität wie vorher und kann mit den Anpassungen anfangen. Bei der nächsten gewünschten Änderungen an gereifter Software werde ich meine List der möglichen Ausweichstrategien überdenken! :)

Friday, May 04, 2007 10:31:07 AM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  | 
# Tuesday, May 01, 2007

Früher hieß die Seite "The Daily WTF". Inzwischen ist sie bei Worse Then Failure gelandet. Es geht um die Tragödien die rund um die Software Entwicklung passieren können. Schlechter Code, schlechte Manager oder dubiose Applikationen.

Eine willkommene Abwechslung zu den ernsthaften Blogs. Die Seite war sogar im Blogroll dieser Seite.

*Plonk*

Schluss damit. Inzwischen überfliege ich die typischerweise 3 Beiträge pro Tag nur noch. Wirklich lustig oder lehrreich sind die Beispiele nicht mehr. Der Begleittext wird immer dramatischer, der Inhalt immer öder.

Ich glaube: WTF has jumped the shark.

Ein RSS Feed weniger im Reader :)

Tuesday, May 01, 2007 3:46:35 PM (W. Europe Daylight Time, UTC+02:00)  #
  Disclaimer  |  Comments [0]  |