Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

4. September 2007 um 18:19

Power Tools für DB-Pro

Aufmerksame Leser haben sicher schon den Kommentar von Spencer (13.8.) entdeckt und wissen schon, dass die Power-Tools für das "Visual Studio for Database Professionals" verfügbar sind. Urlaubsbedingt kam ich erst jetzt dazu mir die Tools anzusehen und bin voll begeistert. Die Features können sich wirklich sehen lassen:

  • Data/Schema Compare als Batch mittels MS-Build ausführen
  • Dependency Tool Window
  • Mehr Möglichkeiten im Refactoring
5. August 2007 um 20:55

Infosammlung zu den Integration Services

Auf dem letzten bzw. ersten Regionalgruppentreffen der PASS-Franken empfahl schilderte jemand (war es Klaus Oberdalhoff?) Wilfried Färber als den absoluten Fachmann für die "SQL Server Integration Services" (SSIS). Beim erneuten Lesen des PASS-Newsletters vom Juli fiel mir die Adresse seiner Webseite ins Auge: www.SQLIS.de

Die Artikel auf seiner Webseite sind absolut beeindruckend. Wenn ich dann endlich dazu komme mit den SSIS rum zu spielen, dann kenne ich jetzt eine gute Anlaufstelle…

28. Juli 2007 um 11:41

Visual-Studio: Datenbank-Referenzen

Ab dem jetzt erschienen Service-Release 1 für die "Visual Studio Team Edition for Database Professionals" kann man Datenbank-Referenzen verwenden. Damit muss man nicht alle Tabellen/Views, auf die man zugreifen will, in das eigene Projekt aufnehmen. Das will ich mir unbedingt noch vor meinem Urlaub ansehen.

Daher als kleiner Merker für mich und andere ein Link auf eine erstklassige Anleitung zur Verwendung von Datenbank-Referenzen von Gerd Drapers: "Data Dude : Database References"

24. Juli 2007 um 23:57

Service Release 1 für DB-Pro

Das erste Service-Release für die "Visual Studio 2005 Team Edition for Database Professionals" ist gestern erschienen.

Will man es installieren, dann benötigt man das SP1 für Visual Studio 2005. Neben einigen Fehlerbereinigungen und neuen Fehlern, die freundlicherweise schon im KB-Artikel beschrieben sind, bringt es auch drei neue Features:

  • Cross-database references – Mal sehen, ob wir das auch dazu benutzen können, Objekte in der gleichen Datenbank zu referenzieren, die aber nicht im Projekt sind…
  • Improved file support within SQL Server file groups – schön, brauche ich aber nicht…
  • Variables – hier geht es um Variablen, die dann beim Einspielen gefüllt werden.

Vielen Dank an Spencer Tracy für den Hinweis!

21. Juli 2007 um 22:20

neue Features für DB-Pro

Ich warte ja immer noch darauf, dass endlich die Freigabeversion des SP2 für das "Visual Studio for Database Professionals" (DB-Pro) rauskommt. Da veröffentlichen die Kameraden jetzt schon eine Liste der elf Features, für die demnächst als "Power Tools" zum "Visual Studio for Database Professionals" (DB-Pro) erscheinen werden.

Worauf ich mich in dieser Zusammenhang schon freue ist das Tools "Data / Schema Compare Build Tasks". Damit kann ich den Schema-Vergleich direkt in das Build einbauen und damit dann allerlei Unsinn treiben.
Ich könnte es aber zum Bleistift auch als Test für unsere Datentrafo verwenden. Eine trafierte DB soll genauso aussehen, wie eine die frisch mit dem neuesten Stand angelegt wurden…

Dienstlich ist vermutlich auch das "API Access to Schema View" nützlich um damit eine Schnittstelle zu unserem Architektursystem zu basteln…

Mit dem "Dependency Tree" kann man endlich genau sehen, welches Objekt von anderen verwendet/referenziert wird.

Schau mal auf der Seite "Visual Studio Team System – Future Releases"…

6. Juni 2007 um 20:47

SQL Server: neue Version der "Books Online"

Mein Kollegen Marus amchte mich heute darauf aufmerksam, dass es eine neue Version der "SQL Server 2005 Books Online" gibt. Ganz untypisch für Microsoft wurde die Version 9.00.3062 zwar "May 2007" genannt, aber erst am 4.6.2007 bereit gestellt… 😉

Achtung: bisher ist nur die englische Version neu, die deutsche hat immer noch den Februar-Stand.

30. Mai 2007 um 18:12

Easy SQL Scripter

Das Werkzeug "Easy SQL Scripter" scheint mir recht nützlich zu sein. Das "SQL Server Management Studio" (SSMS) bietet ja auch schon einige Script-Generierungen an, aber immer nur für einzelne Datenbank-Objekte. Mit dem Plugin wird das SSMS so erweitert, dass man für eine ganze Liste von Objekten die Create-Befehle erzeugt bekommt. Als Bonbon werden auch Insert-Statements für die Daten erzeugt.

Schade ist nur, dass es immer mit dem ganzen Paket "Easy Deploy" installiert werden muss. Deswegen konnte ich mich nicht dazu durchringen, das "mal eben" zu testen, sondern lege es auf meinen Stack…

gefunden bei "The Daily Grind"
29. Mai 2007 um 20:19

ReportViewer Control

Mittlerweile hat es sich herumgesprochen, dass Microsoft mit dem Visual Studio 2005 auch ein ReportViewer-Control bereitstellt, dass man einfach so in seinen Anwendungen einsetzen kann. Damit kann drei Dinge, eines davon wird von Microsoft aber nicht groß beschrieben…

  • Man kann Berichte ansehen, die in einem Reporting-Service aufbereitet wurden.
    Diese Nutzung beschreibt Microsoft super ausführlich. Immerhin wird der Reporting-Service inzwischen sogar mit der Express-Edition ausgeliefert.
  • Man kann in seinem Projekt einen Bericht erstellen und ihn in seine Anwendung reinkompilieren. Das wird von Microsoft leidlich beschrieben. Man kann damit einen Bericht am erstellen und aufbereiten (mit allen schicken Features der Reporting-Services ohne ihn installieren zu müssen). Leider kann man damit nur genau einen Bericht pro Control ansehen.
  • Außerdem kann man den Control dazu nutzen viele verschiedene Berichte anzuzeigen. Im Prinzip kann man sogar beliebige Berichte anzeigen, wenn man bereit ist, den Aufwand zu erbringen. Damit kann man aus den Reporting-Services das schickste nutzen, die Anzeige und das Rendering der Berichte (inkl. Export nach PDF, Excel usw.), ohne eine Server-Anwendung installieren und konfigurieren zu müssen. Warum das von Microsoft nicht an die große Glocke gehangen wird, ist klar, oder? Sie erwähnen zwar mal die Möglichkeit, aber eine Anleitung fand ich nicht…

Zum letzteren fand ich lediglich einen brauchbaren Artikel, der in Visual-Basic kurz skizziert, wie man das anstellen muss: "Take Control of Your Reports with ReportViewer, Part 2". Er ist kostenpfichtig, die Code-Fragmente sind frei zugänglich. Leider wird darin alles in Visual-Basic gemacht. Es hat eine Weile gedauert bis ich das Prinzip verstanden habe. Ich habe folgende Erkenntnisse gewonnen:

Das ReportViewer-Control übernimmt nur die Anzeige des Berichts: also das Rendering und die Aufbereitung der Daten. Alles andere muss die eigene Anwendung erledigen:

  • Zusammenstellen des SQL-Statements, mit dem die Daten gelesen werden. Die Query kann man eigentlich auch aus dem Bericht rauslesen, wenn man sich nicht scheut, sie aus dem XML-File zu entnehmen.
  • Die Übergabe der im Bericht enthaltenen Parameter. In dem Beispiel wird gezeigt, wie man dem Bericht-Objekt die Parameter entlocken kann.
  • Bereitstellen einer Datasource, die dynamisch erstellt werden kann. Nur der Name muss so sein, wie im Bericht angegeben.

Im ersten Schritt kann man so eine Hülle für das ReportViewer-Control schreiben, die dem Entwickler anhand von bestimmten Namens-Konventionen das Leben leicht macht, z.B. DataSource1 oder Param01.
Andererseits ist die Struktur der Berichte (XML-Datei) sehr einsichtig, deswegen kann man sie auch im ersten Schritt auswerten und die Query, deren Parameter und den Namen der Data-Source ermitteln. Im zweiten Schritt muss man das Control lediglich initialisieren und schon hat man ein Universal-ReportViewer-Control.

17. Mai 2007 um 12:49

neue Demo-DB

Kaum passt man mal nicht auf, da verpasst man etwas wichtiges. Aber zum Glück hat mich der Newsletter des SQL-Server-Magazine noch darauf hingewiesen: Es gibt eine neue Demo-Datenbank für den SQL-Server-2005.

Sie heißt "AdventureWork Light" und ist eine kleine niedliche DB, die alles enthält, was man braucht. Tatsächlich fand ich die neue Adventure-Works auch so klobig, das ich für meine Schulungen immer noch die "Northwind" verwendete. Und das nicht bloß aus Faulheit, damit ich meine Schulungen nicht ändern muss, sondern auch für völlig neue Schulung, wie die zum Thema "XML mit dem SQL-Server-2005".

Die AdventureWorks ist zwar viel vorbildlicher als die Northwind, aber eben so komplex, dass ich schon eine ganze Stunde investieren müsste, um den Schulungsteilnehmer die DB-Struktur zu erklären…

Die Neue ist hingegen klein und recht leicht zu verstehen. Ob das eine Alternative ist, muss ich mal schauen, wenn ich versuche meine erste Schulung darauf umzustricken…

Der Dwnload findet sich auf der Seite "SQL Server 2005 Samples and Sample Databases February 2007" gut versteckt. deswgeen hier auch noch der direkte Link.

10. Mai 2007 um 22:21

Unit-Tests für Datenbank-Objekte

Ich bin derzeit total begeistert von den neuen Möglichkeiten der Unit-Tests für Datenbank-Objekte mit der neuen "Visual Studio Team Edition for Database Professionals" (DB-Pro). Einfach unglaublich, wie einfach und komfortabel das geht. Man kann für alle Datenbank-Objekte Unit-Tests erstellen. Ich mache aktuell welche für Stored-Procedures und Functions, aber man kann genauso gut Views automatisch testen.

Für "meine" etwa 50 Prozeduren habe ich schon etwa 180 Unit-Tests geschrieben. Bei Ausdenken der neuen Tests bzw. Umschreiben der alten (ich testete bislang mit einem eigenen Werkzeug) stoße ich immr wiedre auf kleinere Macken, die nach der Umstellung auf SQL-Server-2005 viel eleganter zu machen sind. Mit den Unit-Tests ist das kein Problem: Vorher Tests laufen lassen, Änderung durchführen und wieder die Tests laufen lassen. Wenn dann kein Fehler kommt, dann kann ich sicher sein, dass die Änderung klar ging.

Mit dem sehr guten Artikel "Database Unit Testing with Team Edition for Database Professionals" fiel mir der Einstieg in die Thematik sehr leicht.

Auf dem Weblog des Autors findet sich übrigens ein Beispiel, wie eigene Testbedingungen anlegen kann. Das klappt ganz gut, nachdem ich aus der Datei "SachTestConditions.extensions.xml" das Attribut "xsi:schemaLocation" vom Element "extensions" entfernt hatte.

Ein Beispiel bei SQL-Server-Central (kostenlose Anmeldung erforderlich), dass jedoch leider einige Patzer enthält, z.B fehlt in der Extension-Xml die Angabe des Attributs xmlns, ist der Artikel "Putting Unit Tests to Work".

Alleine schon wegen dieser tollen Möglichkeit rund um Unit-Tests zu SQL-Server-Datenbankobjekten würde ich jedem Datenbank-Entwickler dazu raten sich diese Edition anzuschaffen. Der Preis ist schon ganz schön hoch, aber der Zugewinn in der QS sollte dem Chef die Ausgabe wert sein…

2. Mai 2007 um 19:53

SQL Server 2005 Performance Dashboard

Heute habe ich mal das neue "SQL Server 2005 Performance Dashboard" installiert und damit rumgespielt. Ich bin wirklich begeistert. Die neuen Berichte sind wirklich nützlich. Ich denke, dass sollten wir zur Standard-Ausrüstung eines jeden Test-Systems erklären…

Aufmerksam wurde ich durch den Artikel "Making the Most Out of the SQL Server 2005 Performance Dashboard" bei sql-server-performance.com. Er enthält auch jede Menge Screenshots und eine sehr detaillierte Auflistung der einzelnen Berichte.

Meiner Ansicht nach sind viele der ganz wichtigen Dinge abgedeckt, ein paar Beispiele:

  • die aufwändigsten Anfragen (nach CPU-Zeit, oder IO oder Dauer)
  • Missing Indexes
  • CPU-Auslastung (gesamt und Anteil des SQL-Servers)
  • Waiting Request, kummulative Wartezeiten nach Typ,

Klingt gut? Ist gut!

Link: Download

27. April 2007 um 20:00

SQL-Server: GO 10

Was ich gerade bei Jon Galloway im Artikel "Using 'GO 100' to execute a batch 100 times" las, habe ich nicht gewusst. Microsoft hat in die Werkzeuge des SQL-Servers-2005 ein nettes und undokumentiertes Feature eingebaut: Ein Batch wird in einer Schleife mehrfach wiederholt. Echt cool!

Mal ein Beispiel:

print 'Hello'
go 10

liefert als Ergebnis im Message-Window des Management-Studio:

Beginning execution loop
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Batch execution completed 10 times.

Das geht genauso im sqlcmd (allerdings ohne "Beginning execution loop" und "Batch execution completed x times.") und im mitgelieferten osql (mit "x xacts:" am Ende).

Das "go" ist ein reiner Steuerungsbefehl für die Werkzeuge und dient dazu zwei Batches hintereinander an den SQL-Server zu schicken. Das wurde jetzt aufgebohrt.

Tatsächlich gibt es dazu einige nützliche Anwendungen:

  • Wenn man mal eben schnell ein paar hundert Datensätze einfügen will und keinen Bock auf eine Schleife hat.
  • Protokollieren von dynamischen System-Eigenschaften, wie die Wait Events oder Informationen über Blockierungen
  • Wenn man den SQL-Server unter Last setzen will, um das Verhalten des Systems zu beobachten.

Risiken und Nebenwirkungen: Weil es undokumentiert ist, haftet Microsoft für nix und behält sich vor, das tolle Feature jederzeit wieder einklappen zu können. Das fände ich allerdings ziemlich schade…

gefunden bei TheDailyGrind