SQL Server

Geniales SQL Tutorial

Auf folgendes geniale Tutorial bin ich heute zufällig gestossen. Auf den ersten Blick sieht es zwar eher auf Anfänger ausgerichtet aus, auf den zweiten geht es aber schön in die Tiefe und erklärt auch komplexere Statements anhand von guten Beispielen. Daumen hoch. http://www.sql-und-xml.de/sql-tutorial/index.html

Tool der Woche: SQLRecon

Alle Jahre wird in grösseren Firmen das unbeliebte "Such-die-Lizenz" Spiel durchgeführt, bei welchem gegenüber dem Management, aufgeführt werden muss wieviele SQL-Instanzen welchen Kalibers auf wievielen Prozessoren sich gegenwärtig im Betrieb befinden. Natürlich ist die Ausgangslage für den verantwortlichen SQL-Fuzzi ebenfalls wiederkehrend die selbe: obwohl man fleissig Buch führt stimmt die Liste nie. Da ein paar Testserver die immer noch laufen, dort ein paar Leichen und dann noch die ganzen virtualisierten Servern mit neuer CPU-Bestückung... Was also tun? Per Zufall bin ich auf folgendes Juwel gestossen, welches einen Netzbereich durchforsten kann und sauber alle SQL Instanzen inkl. Patchlevel etc. identifiziert. Ihm...

Leiden am Freitag

Bei meinen letzten zwei Leiden kamen gleich mehrere Problematiken zusammen. Der Verständlichkeit wegen hier noch die ganze Vorgeschichte dazu: Alles fing damit an, dass ich für eine grosse Tabelle mit ~1.6 Mio. Records im SQL Server einen Volltextindex angelegt habe. Da die importierten Daten nicht über einen dafür erforderlichen "single row unique identifier" (eine Spalte als PK) verfügte, nahm ich eine zusätzliche Spalte mit einem autoincrement Wert zur Hilfe. Zu solch speziellen Daten gelangt man im übrigen, indem man verschiedene Fileserver auf vergebene Berechtigungen scannt. Benutzer, Gruppen, Verzeichnisnamen, Laufwerke, Servername - alles ist in Fülle mehrfach vorhanden... aber soweit, so gut. Die Daten der Tabelle werden täglich...

Hashwerte mittels checksum eindeutiger machen

Checksum ist eine nützliche Funktion des SQL Servers um einen Hashwert aus einer Menge von Daten zu erzeugen. Ein gutes Anwendungsbeispiel dafür beschreibt Arthur Fuller auf www.simple-talk.com. Will man mittels Checksum jedoch möglichst einzigartige Werte erzeugen die reproduzierbar sind, scheitert man relativ rasch an der Tatsache, dass Hashwerte halt eben doch schnell mal doppelt vorkommen. Man spricht in dem Fall von einer so genannten "hash collision". Mit dem Prinzip des salzen (was nicht nur bei Rechnungen funktioniert: http://de.wikipedia.org/wiki/Salted_Hash) lassen sich die Ausgangswerte (und somit in aller Regel der späterne Hash) einzigartiger machen. Dazu nimmt man am einfachsten zu jeder Spalte welche gehasht...

Zwei Tabellen abgleichen ohne unique identifier

Wie kann ich zwei Tabellen einer Datenbank miteinander abgleichen? Eine häufig gefragte Frage zu der es einen pragmatischen Lösungsansatz gibt. Zunächst werden anhand des primary keys die Datensätze in Tabelle 1 (t1)  ermittelt die nicht in Tabelle 2 (t2) vorhanden sind und in selbige mittels INSERT reingeschrieben. Anschliessend sucht man alle Datensätze in t2 welche in t1 nicht vorkommen und löscht diese mittels DELETE. Dies lässt sich am einfachsten mittels IN und NOT IN bewerkstelligen: http://www.w3schools.com/sql/sql_in.asp Was aber macht man wenn man keinen primary key besitzt, mittels dem man die beiden Tabellen vergleichen kann? Ganz einfach - man bastelt sich einen. Gegeben seien die...

Fehler beim Erstellen eines Backupjobs für MSDE 2000 über den Maintenance Wizard

Mit einem sehr sonderbaren Problem hatte ich heute zu kämpfen. Auf einer MSDE 2000-Instanz (SP4) liess sich über den Maintenance Wizard kein Backupjob wie gewohnt einrichten. Der Bug offenbahrt sich wie folgt: Durch das fehlen des default Backup Dirs wird der Job (wenn überhaupt) mit Fehlern angelegt. Etwas googeln brauchte dann die Lösung. Folgender Registry-Eintrag behebt den Umstand (wobei das gewünschte default Dir je nach Server anzugeben ist):--[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]"BackupDirectory"="E:\\SQL Server\\MSSQL\\Backup"--