Freitag, 27. Januar 2012

DataViewer auf Basis von TABLESAMPLE im ExPEditor

Beim Dokumentieren von Datenbanken mit dem ExPEditor habe ich gemerkt, dass ich ab und zu die Daten anschauen will, die in der Tabellen gespeichert sind. Nachdem einige Anwender von ExPEditor mir ähnliche Rückmeldung gegeben haben und ich zigmal zwischen zwei Tools gewechselt habe, war die Entscheidung gefallen:
Ein einfacher DataViewer ist ins ExPEditor einzubauen!
Die Version Build 16 implementiert ein neues Feature Table sample, das als ein weiterer Reiter umgesetzt ist. Der Reiter wird sichtbar, wenn eine Tabelle oder eine View im Object Explorer markiert ist. Table sample besteht aus zwei Bereichen Conditions und DataGrid:
  1. Im Bereich Conditions kann man Bedingungen für eine Abfrage der Stichproben festlegen und den Bereich zusammenklappen, wenn die Bedingungen nicht mehr geändert werden sollen.
    Man kann zwischen Klauseln TOP, TOP RANDOM, TABLESAMPLE, TABLESAMPLE RANDOM wechseln und entweder maximale Anzahl oder prozentualen Anteil der Stichproben auswählen.
    • TOP - zeigt begrenzte Anzahl von Datenzeilen an.
    • TOP RANDOM - bei jeder Ausführung der Abfrage wird begrenzte Anzahl von zufälligen Datenzeilen angezeigt.
    • TABLESAMPLE - zeigt Datenzeilen der zufällig ausgewählten Datenseiten an. Kann nur für eine Tabelle verwendet werden
    • TABLESAMPLE RANDOM - funktioniert ähnlich wie TABLESAMPLE nur mit dem Unterschied, dass die Zeilen in einer zufälligen Reihenfolge angezeigt werden. Wird für Views deaktiviert.
  2. DataGrid dient zur Darstellung von Stichproben und gibt die Möglichkeit, Datenzeilen nach einer Spalte zu sortieren. Dafür klickt man einfach auf dem Spaltenkopf.
Nachdem die Abfragebedingungen festgelegt sind, wird eine Abfrage mit dem Knopf Refresh ausgeführt. Nach einer Ausführung einer Abfrage wird eine Anzahl von angezeigten Zeilen und eine Gesamtanzahl von Zeilen der Tabelle (oder einer indizierten Sicht) unten im Statusbar angezeigt. Wenn Daten einer nicht indizierten Sicht im Reiter Table sample angezeigt werden, wird im Statusbar nur eine Anzahl der zurückgelieferten Zeilen angezeigt.
Viel Spaß beim Datenbankdokumentieren ;)

Links:

Mittwoch, 18. Januar 2012

Uniqueidentifier, GUID - The value could not be converted because of a potential loss of data

Wenn beim Import von Datensätzen mit GUIDs so ein Konvertierungsfehler auftritt, wird es höchstwahrscheinlich an den fehlenden geschweiften Klammern liegen, die normalerweise eine GUID umgeben sollen. Hier ist z.B. eine GUID, die in einem SSIS Paket ohne Weiteres importiert werden kann:
{AC4939C4-E35D-4DEE-B9D0-D6B888854F9C}
Wenn die geschweiften Klammern fehlen, sollte man versuchen den Export-Prozess zu überprüfen und so anzupassen, dass die GUIDs von benötigen geschweiften Klammern umgerahmt werden. Ist die Möglichkeit den Export anzupassen nicht gegeben, kann man immer noch den Import mit dem Task Derived Column (Transformation für abgeleitete Spalten) erweitern, um das Konvertierungsproblem zu lösen.
Hier ist ein Beispiel vom Transformationsausdruk, der im Feld Expression der Transformation für abgeleitete Spalten angegeben wird:
(DT_GUID)("{" + [GUID-Column-Name] + "}")
Eins muss man noch beachten, dass eine GUID vor der Konkatenation als ein String aus der Quelle ausgelesen werden muss. Dafür konfiguriert man die Eigenschaft DataType der GUID-Spalte im Connection Manager Editor als [DT_STR], sonst schlägt die Transformation fehl.
Links: