Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

6. Januar 2008 um 20:23

Bilder mit .Net im SQL-Server ablegen

Kurz vor meinem Urlaub fragte mich ein Kollege, wie man Bilder mit .Net im SQL-Server speichern kann. Eine zwar knappe, aber sehr verständliche Anleitung steht auf Codeproject.com: "Store/Save images in SQL Server".

Die Beispiele machen sehr gut deutlich, wie einfach das ist.

4. Januar 2008 um 20:22

LINQ mit der SQL-Server-Compact-Edition

Wer sich für LINQ interessiert (und wer sollte das nicht?), der wird sich möglicherweiase über den Artikel "LINQ Challenges and SQL Server Compact Edition" auf CodeProject.com freuen. Er eignet sich meiner Ansicht nach nicht für Einsteiger in das Gebiet. Man sollte wenigstens eine Einführung in LINQ und die Basistechnologien gelesen/gehört haben. Dann ist es aber sehr gut verständlich. Der Source-Code kann dort bezogen werden.

18. Dezember 2007 um 11:09

SQL-Beautifier ins Management-Studio integrieren

Der ins SQL-Server-Management-Studio integrierbare SQL-Beautifier von Ubitsoft (nicht zu verwechseln mit Ubisoft, die stellen Spiele her!) ist mit 135$ nicht ganz billig. Aber weil ich dienstlich andauernd nicht oder schlecht formatierten SQL-Code bekomme, lohnt sich das für mich vermutlich schon.

Merker an mich: Wenn wieder gesund, dann Demo-Version downloaden und testen!

4. Dezember 2007 um 22:52

Updates auf unterschiedliche Datensätze: klare Sache?

Preisfrage zum SQL-Server:

Auf Verbindung 1 wird in einer etwas längeren Transaktion (ja, macht man nicht, aber nur mal angenommen..) der Datensatz mit ID "0815" geändert.

Auf Verbindung 2 wird jetzt ein UPDATE-Befehl auf den Datensatz mit der ID "4711" abgesetzt (… WHERE ID = 4711).

Geht der UPDATE auf der Verbindung 2 glatt durch oder wird er von Verbindung 1 blockiert?
Wer wagt eine Prognose?

UPDATE: Hier steht die Antwort…

4. Dezember 2007 um 22:43

Framework für Datenbank-Trafos

Bei "RikMigrations" findet man ein Framework für Datenbank-Trafos. Echt spannend.

Ich habe es mit aber nicht wirklich angeschaut, weil wir gerade untersuchen, ob wir zukünftig die Windows-Workflow-Foundation (WF) (und hier) bei Trafos verwenden. Die finde ich gerade extrem cool.

Vorher war ich auf den Tripp die SQL-Server-Integration-Services zu verwenden. Aber leider ist darf man die ja nicht einfach auf jedem Client installieren. Man benötigt schon eine Standard-Edition. Da aber etliche unserer Kunden die Express-Edition verwenden…

4. Dezember 2007 um 00:12

SQL Server 2005 Books Online (September 2007)

Die neue Ausgabe der Books-Online ist erschienen. Zur großen Verwirrung aller großen Geister erschien am 30.11. die September-Ausgabe der Books-Online.

Da sind sie: SQL Server 2005 Books Online (September 2007)

Danke an meinen Kollegen Matthias
29. November 2007 um 23:33

Reguläre Ausdrücke in TSQL

Eigentlich finde ich alle Artikel von Robyn Page und Phil Factor (ein Pseudonym) von sehr gut. Sie sind gut durchdacht und bieten gerne unkonventionelle Ansätze. Erst neulich las ich den Artikel A T-SQL Regular Expression Library for SQL Server 2005 in dem Steve Abraham eine TSQL-Funktion beschreibt, um damit reguläre Ausdrücke in TSQL zu ermöglichen. Schon zu dem Zeitpunkt nahm ich mir vor das mal zu testen.
Robyn und Phil machen das gleiche einfach über OLE-Automation. Natürlich hat das den Nachteil, dass man das am Server erlauben muss, aber es ist einfach und flexibel. Die Performance habe ich nicht gemessen, nach deren Aussage sollte CLR aber schneller sein. Dennoch gefällt mir der Ansatz sehr gut. Egal für welches der beiden Modelle man sich entscheidet, der Artikel ist für beide lehrreich.

Ein Beispiel für eine schon recht komplexe Abfrage mittels TSQL:

--A valid email address?
SELECT dbo.RegexMatch('^(([a-zA-Z0-9!#\$%\^&\*\{\}''`\+=-_\|/\?]+(\.[a-zA-Z0-9!#\$%\^&
\*\{\}''`\+=-_\|/\?]+)*){1,64}@(([A-Za-z0-9]+[A-Za-z0-9-_]*){1,63}\.)*(([A-Za-z0-9]+[A
-Za-z0-9-_]*){3,63}\.)+([A-Za-z0-9]{2,4}\.?)+){1,255}$','Phil.Factor@simple-Talk.com')

Wer gerne solche Dinge machen würde, der sollte unbedingt den Artikel "TSQL Regular Expression Workbench" lesen…

28. November 2007 um 23:37

AddIns für das Management-Studio

Passend zu der Diskussion neulich über die AddIn-Programmierung des Visual-Studio kann man noch tiefer in die Trickkiste greifen und AddIns für das SQL-Server-Management-Studio schreiben. Wenn man sich nicht davon abschrecken lässt, dass es weder supported noch dokumentiert ist, dann scheint es ganz gut zu klappen.

  • In dem Artikel "The Black Art of Writing a SQL Server Management Studio 2005 Add-In" beschreibt Joseph Cooney ganz gut , wie man selber so ein AddIn schreiben kann. Wenn ich mal irgendetwas in dem Tool vermissen sollte, dann probiere ich das mal aus. Meinen besten Dank schon mal vorab an Joseph.
    Das dort beschriebene AddIn sieht auch ganz nützlich aus. Das werde ich sicher dienstlich nutzen können.
  • Wenn man gerne ein Datenbank-Snapshots mit dem Management-Studio anlegen will, dann kann man sich bei Sean Price ein AddIn laden.
  • Dateien in einem Projekt sortieren kann man mit einem AddIn von Jasper Smith. OK, es ist eigentlich ein externes Tool, aber trotzdem nützlich.
  • Mit dem AddIn Data-Scripter kann man sich für Tabelle die Daten "skripten" lassen. Das Ergebnis ist ein SQL-File mit vielen INSERTs.

Kennt jemand noch weitere AddIns?

Kostenpflichtige AddIns, wie z.B. SQL-Prompt habe ich übrigens absichtlich weggelassen, weil es mit hier eher darum geht die Community an dieser Stelle zu fördern.

22. November 2007 um 22:58

SQL Server 2008: Transparent data encryption

Nachdem der CTP5 des SQL-Servers-2008 frisch draußen ist, kommt mir der Artikel von Laurentiu Cristofor über eines der ganz großen Features ganz gelegen: "Transparent data encryption".

Dazu muss man lediglich pro Datenbank festlegen, dass die Datenbank verschlüsselt werden soll und schon muss man sich um weiter nichts kümmern. Naja, fast nichts…

ALTER DATABASE SET ENCRYPTION [ON | OFF].

Sehr schade, dass das nicht schon im SQL-Server-2005 drin war…

Update: Mein Kollege Markus machte mich darauf aufmerksam, dass dieses schicke Feature nur in der Enterprise-Edition (und der Developer-Edition) verfügbar sein soll. Echt schade.

21. November 2007 um 19:54

kostenlose Werkzeuge für den SQL-Server

Die von Mladen Prajdić zusammengetragene Liste mit kostenlosen Werkzeugen für den SQL-Server ist wirklich lang. Für mich waren vorwiegend die Tools in der Rubrik "Non MS stuff" interessant. Einige davon scheinen für meine tägliche Arbeit nützlich zu sein. Bzw. adressieren Probleme von denen mir Kollegen berichteten…

Schau mal da: Free SQL Server tools that might make your life a little easier

14. November 2007 um 22:20

Besser nicht auf die Angabe "Query cost" verlassen

Bei einer Sache bin ich in den letzten Monaten böse reingefallen. Ich beschreibe das mal hier, vielleicht erspare ich anderen damit Kummer…

Beim SQL-Server-2005 kann man sich für einen oder mehrere SQL-Batches, die man in einem Query-Fenster hat mit einem Klick auf "Include actual query plan" den Zugriffsplan anzeigen lassen. Wenn es mehrere Zugriffspläne sind, dann bekommt man pro Query/Zugriffsplan jeweils oben den Wert "Query cost (relative to the batch)" angezeigt. Leider sind die angegebenen Prozentwerte nicht das, was ich erwartet hatte.

Nehmen wir mal an, es seien 3 Queries, für die jeweils die Werte 49%, 42% und 9% angezeigt werden. Dann muss man wissen, dass diese Prozentwerte auf den geschätzen Kosten des Optimizers beruhen. Die echten Zeiten werden nicht gemessen.
Die Prozentwerte beruhen auf den jeweiligen "Estimated Subtree Costs" des obersten Knotens des jeweiligen Ausführungsplanes.
Im Beispiel waren das die Werte 0.266, 0.225 und 0.046.

Wegen des Namens "Query cost" dachte ich, es seien die echten Kosten. Es sind aber die geschätzten Kosten auf denen der Optimizer seinen Zugriffsplan aufbaut.

Und tatsächlich musste ich erst nachmessen: Die tatsächlich gemessenen Zeiten waren in meinem Beispiel 220ms (estimated 49%), 140ms (estimated 42%) und 343ms (estimated 9%).

Resümee: Die als "Query cost" angegebenen Werte darf man nur als Hinweis nehmen, wie der Optimizer damit umging ("estimated"). Man kann daraus keine Performanceaussagen "der unterste ist der Beste" ableiten…

Wer mehr darüber erfahren will, wird auf dem Blog vom SQL Server Query Processing Team fündig.

14. November 2007 um 21:35

Profiler-Traces in einer Tabelle auswerten

Im SQL-Team-Blog von Mladen Prajdić wird ein guter Tipp veröffentlicht, wie man in einer Tabelle gespeicherte Profiler-Traces etwas lesbarer machen kann: Durch einen Join auf die View sys.trace_events.

Hier stehts: "Map SQL Server Profiler EventClass ID to its name in a saved trace table"