Archiv

Archiv für Mai, 2009

Zum Lachen

31. Mai 2009 Sandra 2 Kommentare

Ein Ehepaar beschließt dem Winter in Deutschland zu entfliehen und bucht eine Woche Südsee.Leider kann die Frau aus beruflichen Gründen erst einen Tag später als ihr Mann fliegen. Der Ehemann fährt wie geplant. Dort angekommen bezieht er sein Hotelzimmer und schickt seiner Frau per Laptop sogleich eine Mail. Blöderweise hat er sich beim Eingeben der E-Mail-Adresse vertippt und einen Buchstaben vertauscht. So landet die E-Mail bei einer Witwe, die gerade von der Beerdigung ihres Mannes kommt und gerade die Beileidsbekundungen per E-Mail abruft. Als ihr Sohn das Zimmer betritt, sieht er seine Mutter bewußtlos zusammensinken. Sein Blick fällt auf den Bildschirm, wo steht:

AN: meine zurückgebliebene Frau
VON: Deinem vorgereisten Gatten
BETREFF: Bin gut angekommen.

Liebste, bin soeben angekommen. Habe mich hier bereits eingelebt und sehe, dass für Deine Ankunft alles schon vorbereitet ist. Wünsche Dir eine gute Reise und erwarte Dich morgen. In Liebe, Dein Mann.

PS: Verdammt heiß hier unten! :-D


Also immer aufpassen das man sich nicht vertippt

KategorienAllgemein

Byte Order Mark (BOM) im CSV-Export

19. Mai 2009 admin Keine Kommentare

Wenn man in SQL-Server eine Abfrage durchführt, so kann man die Ergebnisse mit einem Rechtsklick als CSV-Datei speichern.

bom

Ein Blick in das Ergebnis zeigt jedoch ein “merkwürdiges” Byte am Anfang des Ausgabefiles! Diese “Sonderzeichen” sind allerdings kein Ausgabefehler, sondern definieren die sogenannte Byte Order. Es handelt sich also um eine Markierung die mir die Interpretationsreihenfolge der im Ausgabefile enthaltenen Bytes definiert.

Daher auch der Name: Byte Order Mark … oder kurz: BOM

Mehr…

KategorienSQL-Server 2005

Übersicht: Row_Number, Rank, Dense Rank, NTile

14. Mai 2009 admin Keine Kommentare

Die Funktionen row_number(), rank(), dens_rank() und ntile() fristen in vielen Fällen ein unscheinbares Leben in unseren Datenbanken. Seit SQL-Server 2005 wurden diese Funktionen zur Vereinfachung von diversen Gruppierungs- sowie Rangfolgenbedingungen eingeführt.

Leider kennen die meisten meiner Kollegen den Großteil dieser Funktionen nicht, bzw. setzten sie aus Angst vor dem “Unbekannten” nicht ein. Der Standardspruch lautet immer wieder: “Das haben wir bisher nicht gebraucht, warum gerade jetzt!” oder “Bis ich mir die Syntax angeschaut habe, habe ich es auch schon wie immer gemacht!”.

Für alle die sich vielleicht dann doch auf neue Ufer begeben möchten, hier eine kleine Übersicht:

  • Row_Number: Zählt Datensätze aufsteigend
  • Rank: Zählt die Rangfolge von Datensätzen. Wenn 2 Zeilen den selben Wert aufweisen, wird die selbe Rangnummer vergeben und danach mit der Reihenfolge weitergezählt die der fortlaufenden Nummer entsprechen würde.
  • Dens_Rank: Verhält sich wie rank(), jedoch wird mit der nächstmöglichen Rangfolge weitergezählt.
  • NTile: Teilt das Ergebnisset in n gleiche Teile auf (Quartale, Zehntel, Halbe usw.)

Mehr…

KategorienSQL-Server 2005

SQL-Server Schema von Objekten ändern

14. Mai 2009 admin 1 Kommentar

Wenn man das Schema eines Objekts (Tabelle, Prozedur, Funktion usw.) ändern möchte, so ist dies mit einem einfachen T-SQL-Befehl möglich:

 T-SQL |  copy code |? 
1
ALTER SCHEMA schema_name TRANSFER securable_name


Dynamisch könnte man sich dann eine Schleife bauen, die alle Objekte aus Schema A in Schema B verschiebt: Mehr…

KategorienSQL-Server 2005

Feldlisten für Tabellen in einer Datenbank erstellen

6. Mai 2009 admin Keine Kommentare

Ich benötige für sehr viele Fälle immer wieder eine Feldliste (Kommagetrennt) um dynamische Abfragen aufbauen zu können. Hier mal ein Script dass diese Aufgabe für alle Tabellen einer Datenbank erfüllt. Man könnte sich hier natürlich eine Table-Valued-Function vorstellen die man dann sogar noch nach Tabellegruppen, Schemas usw. filtern könnte.

Hier das Ergebnis:


Mehr…

KategorienSQL-Server 2005

Tabellen mit Identity-Feldern feststellen

6. Mai 2009 admin Keine Kommentare

Hier noch ein kleiner Codeschnipsel mit dem man alle Tabellen mit einem Identity-Feld feststellen kann:

 T-SQL |  copy code |? 
1
SELECT   s.name AS SchemaName
2
        ,o.name AS TabellenName
3
        ,c.name AS IdentityFeld
4
FROM sys.objects o 
5
    join sys.schemas s ON s.schema_id = o.schema_id
6
    join sys.columns c ON c.OBJECT_ID = o.OBJECT_ID
7
WHERE c.is_identity = 1

Die Ausgabe sieht dann so aus:


have fun :)

KategorienSQL-Server 2005

sp_rename mit Stored-Procedures etc.

6. Mai 2009 Roy Keine Kommentare

Wenn man ein Datenbankobjekt in SQL-Server umbenennen möchte, kann man hierzu eine System-Prozedur verwenden. SP_RENAME kann so gut wie alle Datenbankobjekte neu benennen.

So einfach wie das Umbenennen ist, so gefährlich kann es auch werden. Wenn man also versucht ein Objekt mit sp_rename zu bearbeiten, dass seinen Quellcode in der Systemview sys.sql_modules speichert, so funktioniert dies augenscheinlich sehr leicht. Im Hintergrund wird allerdings nur das Objekt umbenannt. Der Quellcode enthält jedoch ebenfalls den Objektnamen in Form eines

“Create [objekttyp] [objektname] as …”

Der Objektname der hier enthalten ist wird bei der Aktion nicht umbenannt! Dies kann in der Folge zu einigen Problemen führen, wenn die Systemviews für Deployment oder vergleichbare Aufgaben herangezogen werden.

Mehr…

KategorienSQL-Server 2005