Archiv

Archiv für Juni, 2009

Textsuche in allen Tabellen der Datenbank

30. Juni 2009 admin Keine Kommentare

Nachdem ich ja bereits einige Scripte

für die Suche nach Objekten in einer Datenbank an dieser Stelle veröffentlicht habe, möchte ich heute abschließend eine Möglichkeit der Textsuche über alle Tabellen einer Datenbank vorstellen.

Das Script erwartet einen Suchstring und versucht dann das Wort in einer der Tabellenspalten der Datenbank zu finden. Als Wort wird hier ein Text definiert, der als Begrenzer alle Zeichen außer den folgenden aufweisen darf:

  • a-z
  • A-Z
  • 0-9
  • den Unterstrich (_)

Mehr…

KategorienSQL-Server 2005

Wordpress Plugin: Dragon’s Print-Hint

23. Juni 2009 admin 10 Kommentare

Ein Freund und Kollege (Presseschauer) bat mich, ob ich vielleicht ein Plugin schreiben könnte mit dem man einen Hinweis-Text beim Ausdruck seiner Blogseiten hinzufügen könnte.

Das Ergebnis ist “Dragon’s Print-Hint”. Das Plugin kann hierhier “http://wordpress.org/extend/plugins/dragons-printhint/” heruntergeladen werden und läßt sich durch einfaches Entpacken in das Pluginverzeichnis installieren. In den Einstellungen findet man nach der Aktivierung einen Menüpunkt mit dem der Text für den Hinweis angegeben werden kann.

Mehr…

KategorienWordpress

T-SQL: Kommentare aus Scripts entfernen

22. Juni 2009 admin Keine Kommentare

Um eine Datenbank nach Objekten zu durchsuchen die einen vorgegebenen String enthalten muss man nur durch die System-View sys.sql_modules parsen. Hier steht im Feld “Definitions” der Quelltext von Funktionen, Prozeduren oder Views.

 T-SQL |  copy code |? 
1
SELECT OBJECT_ID,definition FROM sys.sql_modules WHERE definition like '%[^a-zA-Z0-9_]Contact[^a-zA-Z0-9_]%'
2

Allerdings hat dieses einfache Verfahren einen Nachteil. Wenn der Quellcode sehr gut dokumentiert ist bzw. durch andere Vorgaben viele Kommentarbereiche enthalten sind, kann das Ergebnis eine ganze Menge an Treffern anzeigen die man so vielleicht gar nicht haben wollte.

Um also diese Kommentare aus den Quelltexten (weitestgehend) zu entfernen, habe ich eine scalar Funktion geschrieben die dies bei einer Abfrage direkt erledigen kann. Der Rest des Quellcodes kann man dann nach dem gewünschten Begriff durchsuchen und erhält so hoffentlich eine aussagekräftigere Ergebnismenge.

Mehr…

KategorienSQL-Server 2005

SQL Server 2005 – ShowStatistics über den gesamten Server

19. Juni 2009 admin Keine Kommentare

Wenn man die Statistiken einer Tabelle in SQL-Server überprüfen möchte so kann man dies mit dem Befehl: DBCC ShowStatistics erreichen. 
In unserem Fall war nur von Interesse ob die Statistiken für eine bestimmte Tabelle noch aktuell sind.

 T-SQL |  copy code |? 
1
 DBCC SHOW_STATISTICS ('Person.Address', AK_Address_rowguid) WITH NO_INFOMSGS, STAT_HEADER;
2

 

Wenn man daß allerdings über eine komplette Datenbank machen möchte oder gar über einen ganzen Server, dann hat man schon einiges zu tun.
Desweiteren wird einem zwar das Ergebnis angezeigt, vielleicht will man aber einen schicken Bericht für seinen Chef ausgeben? usw.

Wie auch immer, nachfolgend habe ich einmal eine Stored-Procedure eingestellt, die über einen Parameter eine bestimmte Menge an Datenbanken (mit SQL-Wildcards) übergeben bekommt und daraufhin alle Objekte in diese(r/n) Datenbank(en) ausgibt.

Das Ergebnis kann dann in eine Temp-Tabelle kopiert und z.B. mit einem Bericht ausgegeben werden.

Wie ein Prozedur-Ergebnis in eine Tabelle geschrieben wird, habe ich an früherer Stelle ja bereits beschrieben. 

Mehr…

KategorienSQL-Server 2005

Struktureller Tabellenvergleich mit SQL-Server (T-SQL)

16. Juni 2009 admin 4 Kommentare

Auf Anfrage einer Kollegin möchte ich hier ein Script vorstellen dass zwei Tabellen miteinander vergleicht.

Das Script erwartet als Parameter die Angabe der Referenzinformationen sowie die Ziel- oder Targetinfos.

Es muss jeweis eine Datenbank, der Tabellenname und das Schema eingegeben werden.

Die Variablennamen sind mit dem Postfix “R” für Referenz und “T” für Target gekennzeichnet. Die Parameter werden im Anschluß ein ein dynamisches Select-Statement eingetragen, welches die Differenzen berechnet.

Als Ergebnis können folgende Gründe ausgegeben werden (Reasons):

  • D = Differenz. Dies bedeutet, dass das Feld in beiden Tabellen mit unterschiedlichen Attributen vorhanden ist.
  • T = Target. Das Feld existiert nur in der Zieltabelle.
  • R = Referenz. Das Feld existiert nur in der Referenztabelle

Um die einzelnen Gründer leichter trennen zu können, kann noch ein Filter erfasst werden:

  • * = Alle Gründe ausgeben
  • D,T,R = Jeweils die eingetragenen Gründe ausgeben. (Kombinationen sind möglich)

Die Ausgabe erfolgt in Tabellenform um die Weiterverarbeitung mit Excel zu erleichtern.

Mehr…

KategorienSQL-Server 2005

SQL-Server: Datenextraktion durch “Insert generieren”

4. Juni 2009 admin Keine Kommentare

Es bestehen immer wieder mal das Bedürfnis eine Tabelle zu extrahieren um diese Daten entweder zu sichern oder in ein anderes System zu überspielen. Im Normalfall kann man das direkt Online erledigen oder mit einem Backup eine gesamte Datenbank sichern und im Zielsystem wiederherstellen.

Wenn man allerdings die Daten, oder nur Teile einer Tabelle, extrahieren und später z.B. in eine MySQL-Datenbank übernehmen möchte, so ist dies nur durch den manuellen Import im Zielsystem mittels INSERT möglich.

Das nachfolgende Script extrahiert eine SQL-Server-Tabelle und generiert aus den Datensätzen entsprechende INSERT-Kommandos. Diese sollten dann auch auf anderen Datenbanken importiert werden können.

8-)

Mehr…

KategorienSQL-Server 2005