Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

30. November 2012 um 17:17

SQL Server Management Studio mit Parametern starten

Auf meinem Privatrechner mag ich den SQL Server nicht dauernd laufen haben. Daher richtete ich einen Batch ein, der den SQL-Browser, den SQL Server und das SQL-Server-Managment-Studio (SSMS) auf einen Schlag startet.
Dabei kann man dem Management-Studio mittels Parametern sagen, zu welchem Server er sich verbinden soll:
"C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe" -S MYPC\SQL2012 -E -nosplash
Man könnte hier auch Username/Passwort (-U und -P) angeben, aber das würde ich eher nicht in einen Batch schreiben.

19. November 2011 um 20:27

TSQL-UnitTests mit T.S.T.

Wieder ein Tipp von meinem Kollegen Robert: Bei Codeplex findet sich ein ein Framework für automatische Tests mit TSQL: T.S.T.
Das klingt interessant. Bislang verwenden wir das Visual Studio für UnitTests unserer STPs/Views/etc. Das ist recht einfach in der Handhabung. Daher habe ich mit das TST nicht weiter angeschaut, aber wer das nicht nutzen kann/will, dürfte an dem Framework seine Freude haben.

14. Februar 2011 um 22:42

Database Firewall

Bei Heise.de wurde ich heute auf die "Firewall" für Datenbanken von Oracle aufmerksam. Offenbar soll man sich damit gegen SQL-Injection- und andere Angriffe schützen können: "verdächtige" SQL-Befehle können abgefangen und durch andere (z.B. mit garantiert leerer Ergebnismenge) ersetzt werden.

In dem Whitepaper "Oracle Database Firewall" werden Details beschrieben. So sind drei Arten von Reaktion auf verdächtige Befehle möglich (O-Ton Oracle):

  • Block the SQL statement
  • Modify the request using SQL statement substitution
  • Alert on all out of policy SQL statements, in addition to blocking or in lieu of

Das ist eine nette Idee. Ich bin mal gespannt, ob sich das durchsetzt. Leider ist absolute Sicherheit bei Systemen nur sehr schwer machbar, daher wird diese Art der Firewall schon eine signifikante Verbesserung ausmachen. Aber sind die Firmen bereit den Aufwand und die Kosten nur für die Sicherheit zu erbringen?

Auf der Seite Oracle Database Firewall – First Line of Defense for Databases werden die bisher unterstützten Systeme beschrieben:

  • Oracle Database 11g
  • IBM DB2 for Linux, UNIX and Windows (versions 9.x)
  • Microsoft SQL Server 2000, 2005 and 2008
  • Sybase Adaptive Server Enterprise (ASE) (versions 12.5.4 to 15)
  • Sybase SQL Anywhere V10

Komischerweise wird mit MySQL das neue "Flagschiff" bei Oracle nicht unterstützt. Dabei wurde das System doch kürzlich erst von Oracle besonders für kommerzielle Anwendungen ausgestattet. 😉

19. Juli 2010 um 19:49

SQL-Server-ODBC-Treiber für Linux

Mein Kollege Slawomir machte mich auf die ODBC-Treiber von EasySoft aufmerksam. Die Firma bietet es buntes Sammelsurium rund um ODBC an. Hier ein paar Beispiele:

  • SQL-Server ODBC-Treiber für Linux und Unix
  • ODBC-Access-Treiebr für Linux und Unix
  • ODBC Join Engine – Mehrere ODBC-Datenquellen in einer zusammenfassen

Wer nicht nicht wusste, dass es auch 64-Bit-ODBC-Treiber gibt, der findet dort auch ein paar Erläuterungen. ODBC wurde zwar zunächst nur für 32-Bit-Systeme konzipiert, funktioniert aber auch durchaus in 64-Bit-Software, wenn es einen entsprechenden 64-Bit-ODBC-Treiber gibt.

15. August 2009 um 16:36

Liste kostenloser Werkzeuge für den SQL-Server

In der aktuellen Ausgabe des SQL-Server Magazine wird ein "Mega Guide to Free SQL Server Tools" veröffentlicht. Die wirklich lange Liste wirkt etwas lieblos zusammengestellt, aber da kann ich mich täuschen. Sie ist jedenfalls so lang, dass ich nur wenige Einträge wirklich las. Vermutlich muss ich mir irgendwann mal die Zeit nehmen, um sie ganz durch zu arbeiten und die relevanten Werkzeuge mal anzusehen. Einige kenne und nutze ich ja auch tatsächlich schon…

23. April 2009 um 20:05

Visual Studio Team System 2008 Database Edition GDR R2 verfügbar

Bis ich den Namen aussprechen konnte, musste ich echt lange üben: "Visual Studio Team System 2008 Database Edition GDR R2". Zur Erinnerung: Das ist die Visual-Studio-Edition mit der man Datenbank-Projekte komfortabel erstellen kann und die Unit-Tests für Datenbank-Objekte ermöglicht. Weil die Edition asynchron zu den anderen Studio-Editionen erscheint, haben die ein Namensproblem. Mit dem Visual-Studio-2008 erschien im Prinzip die bisherige 2005er Version in leicht neuem Gewand. Kurze Zeit später erschien die "echte" neue Version für Visual-Studio-2008, sie wurde "GDR" genannt, um den Unterschied deutlich zu machen.

Jetzt erschien davon das zweite Release, also "R2". Das steht nun zum Download bereit und kann von allen genutzt werden, die entweder damals eine Lizenz für die Database-Edition kauften, die gleich die ganze Team-Suite haben oder (seit ein paar Monaten) auch alle, die eine Developer-Lizenz haben.

Die Liste der Fehlerbehebungen ist echt lang, die Features klingen wenig spektakulär, aber extrem nützlich. Auf einer Clip-Seite von Microsoft stehen sie:

Zusätzlich zur Unterstützung für SQL Server 2008-Datenbankprojekte beinhaltet diese Version eine Vielzahl zuvor veröffentlichter Power Tools sowie mehrere neue Features, etwa getrennte Build- und Bereitstellungsphasen, Analyse von statischem Code und eine verbesserte Integration mit SQL CLR-Projekten.

Wobei ich dachte, das würde schon von der GDR unterstützt. Aber da kann ich mich täuschen.

Hier die Links:

23. März 2009 um 19:34

Die neuen Features in der Visual Studio Team Database Edition GDR

Es ist ja schon ein paar Tage her, dass Microsoft die neue Version der "Visual Studio Team Database Edition" freigab, dennoch wird sie meiner Erfahrung nach nur von einem eingeschworenen Haufen eingesetzt. Eigentlich komisch, weil sie doch jetzt jeder nutzen kann, der eine Lizenz für die Developer-Edition hat.

Deswegen gibt es jetzt im MSDN-Magazine den interessanten Artikel "Datenbankentwicklung: Einführung in neue Features in VSTS Database Edition GDR" als kleine Werbung zu lesen.

21. Oktober 2008 um 22:24

Datenbank-Differenzen

Wer hat schon mal mit dem Gedanken spielte ein eigenes Werkzeug zu schreiben, um die Differenzen in den Strukturen von zwei Datenbanken zu ermitteln? Das sollte man lieber nicht machen. Erstens kann die "Database Edition" des Visual Studio das und die Lizenz ist seit 1.10 auch in der Developer-Edition enthalten. Außerdem gibt es dazu schon ein Open-Source-Projekt bei Codeplex. Wer also zu viel Zeit hat und wem das Visual-Studio nicht reicht, der sollte sich in dem Projekt engagieren: Open DBDiff

Ich finde, die Features hören sich ganz ordentlich an. Im aktuellen Zustand ist das immer noch die Beta 5 zur ersten Version.

Open DBDiff is an open source database schema comparison tool for SQL Server 2005. It reports differences between two database schemas and provides a synchronization script to upgrade a database from one to the other.

Die Liste der abgleichbaren Datenbank-Objekte ist erstaunlich vollständig. Alle Achtung.

Danke an Spencer.
30. September 2008 um 21:36

COUNT, aber schnell!

Über den aktuellen SQL-Pass-Newsletter wurde ich auf den absolut interessanten Trick aufmerksam, wie man sehr schnell (im Sinne von "sehr performant") die Anzahl von Datensätzen in einer Tabelle ermittelt. Aber leider ist der Autor dem gleichen Fehler aufgesessen, wie ich zu Beginn meiner SQL-Server-Zeit.

Der erwähnte Trick ist sehr ausführlich im Artikel "Speeding up the Performance of Table Counts in SQL Server 2005" beschrieben. Möglicherweise ist er mit richtig vielen Datensätzen auch wirklich schneller als COUNT, aber ich kann es mir kaum denken. Das ist aber gar nicht so wichtig, weil meine Message ist: Vorsicht vor den geschätzten Kosten. Sie sind nicht richtig.

Wenn ich den Trick ausführe und den COUNT, dann zeigt auch mein Zugriffsplan in den geschätzten Werten an, dass der Trick schneller sei (der Code ist aus dem Artikel abgeleitet, nur leicht vereinfacht):

-- Trick:
SELECT SUM( p.rows )
FROM sys.partitions p
LEFT JOIN sys.allocation_units a
ON p.partition_id = a.container_id
WHERE p.index_id IN (0,1) – 0 heap table , 1 table with clustered index
AND p.rows IS NOT NULL
AND a.type = 1 – row-data only , not LOB
AND p.object_id = object_id('Person.Address')
– Hat "estimated subtree cost" von 0.028
go
– regulär:
SELECT COUNT(*)
FROM Person.Address
– Hat "estimated subtree cost" von 0.055

Wegen der "estimated subtree cost" zeigt das Management-Studio an, dass der erste Batch 33% der Zeit und der zweite 67% in Anspruch nähme. Das stimmt aber gar nicht. Der SQL-Profiler bringt es ans Licht: Der erste Batch dauert 35ms und der zweite nur 9ms. Der Prozentwert im Management-Studio spiegelt nur die geschätzten Kosten wieder. Wenn man die echte Zeit wissen will, dann muss man schon zu Kommissar Profiler gehen… 😉

PS: Schade, dass der Autor weder Kommentare zuließ, noch eine Mail-Adresse angab. Daraus schließe ich, dass er keinen Dialog wünscht. Ist das eine zulässige Annahme?

PPS: Ich sehe gerade, dass sich Steffen Krause ein paar Tage vorher mit dem gleichen Thema beschäftigte. Welch lustige Koinzidenz – er berücksichtigt aber die BLOBs nicht.

30. September 2008 um 19:00

VS Developer- und Database-Edition werden zu einem Produkt

Heute veröffentliche Microsoft eine Pressemitteilung in der alle möglichen tolles Features des Visual-Studio-2010 veröffentlicht werden. Das ist schon interessant, aber was mich glatt von Sockel haute: Die Developer- und Database-Editionen werden zu einem Produkt! Die Database-Edition ist einfach klasse, aber wahnwitzig teuer, weil die meisten Entwickler ohnehin auch schon die Developer-Edition haben. Das kam bei Microsoft inzwischen wohl auch an. Ich bin ziemlich aus dem Häuschen, weil uns damit das Leben zukünftig schon gewaltig erleichtert wird.

In VSTS 2010 werden die derzeit separat verfügbaren Development Edition und Database Edition miteinander zu einem einzelnen Produkt kombiniert. Um den Vorteil dieser Kombination schon jetzt zur Verfügung zu stellen, erhalten alle Software Assurance-Kunden und Besitzer einer Version von Visual Studio Team System 2008 (Developer oder Database Edition) die jeweils andere Vollversion ab 1. Oktober 2008 kostenlos.

Ich bin mir nicht sicher, ob das gut oder schlecht ist. Es ist gut, weil wir die Database-Editon aus Kostengründen nicht in der Firma hätten verteilen können. Es ist schlecht, weil damit die Database-Edition faktisch aufhört zu existieren. Wer weiß, ob die Weiterentwicklung der Database-Teile weiterhin so voran getrieben wird. Wer alles davon profitiert beschriebt Gerd Drapers in seinem Blog:

As an MSDN subscriber we want you to realize the benefit of this merged feature set now, which is why we are extending this exclusive offer. If you have either the Visual Studio Team System 2008 Development Edition with MSDN Premium subscription or the Visual Studio Team System 2008 Database Edition with MSDN Premium subscription, on October 1, 2008 you will have access to both the Development Edition and Database Edition through MSDN Subscriber Downloads. This change also applies to customers who purchased Visual Studio 2005 Team Edition for Software Developers with MSDN Premium Subscription and Visual Studio 2005 Team Edition for Database Professionals with MSDN Premium Subscription.

Der Blog-Artikel hat den Titel "Team Developer + Team Data = Team Developer!". Ich finde, sein Artikel klingt weniger nach Enthusiasmus als nach Wehmut. Das drückt mir dann schon eine Träne aus dem Knopfloch…

8. Juni 2008 um 22:12

SQL-Server: Datenbank-Snapshots leicht gemacht

Kaum rückt der Freigabetemin des SQL-Server-2008 näher, habe ich auch schon langsam alle neuen Features des SQL-Servers-2005 angeschaut…

In dem Zusammenhang möchte ich auf ein Add-In für das SQL-Server-Management-Studio hinweisen mit dem man einfach per Kontextmenü Datenbank-Snapshots erstellen kann: SQL Management Studio Snapshot Add-In

14. Mai 2008 um 09:59

Tool-Tipp: dbConstructor

Auf dem letzten SQLPASS-Treffen der Regionalgruppe Franken in Nürnberg stellte der Referent Peter Döring (MVP) ein nettes Tool vor:

Mit dbConstructor kann man sehr gut Datenbanken von einem System zu anderen migrieren (z.B. von Oracle nach DB/2 und umgekehrt). Man kann es auch einfach zum Entwerfen von Datenbanken verwenden und sogar den Zugriffscode template-gesteuert generieren lassen. Das hat mich schon beeindruckt. Der Preis von 150 USD ist (besonders beim aktuellen Umrechnungskurs) wirklich günstig.