English Deutsch

 

ExecutionValue beim Execute SQL-Task in SSIS

Es gibt einen einfachen Weg um festzustellen, wieviele Zeilen von der Ausführung von SQL-Anweisungen wie DELETE oder UPDATE mit dem Execute-SQL-Task betroffen sind. Dazu kann die ExecutionValue-Property des Execute-SQL-Tasks verwendet werden. Das wird hier am Beispiel einer DELETE-Anweisung vorgestellt. (more…)

Erzeugung von Intervall-Datensätzen mithilfe von Common Table Expressions

Mit rekursiven CTEs (Common Table Expressions) lassen sich Abfragen elegant und lesbar schreiben.  Ein Beispiel wird hier vorgestellt. Vorgegebene Wertebereiche sollen jeweils auf eine bestimmte Anzahl von Intervallen (Buckets) aufgeteilt werden. Es kann sich dabei z.B. um Kennzahlen wie Einkommen oder um das Alter von Kunden handeln. Der jeweilige Kunde kann dann (z.B. in einem Lookup-Task in SSIS) dem passenden Bucket zugeordnet werden um alle Kunden sinnvoll zu klassifizieren. 
(more…)

Lookup in Reporting Services – oder: Jetzt kommt zusammen, was zusammen gehört!

SQL Server 2008 R2 SSRS wartet mit einer interessanten Neuerung auf, nämlich der Suche in Datasets. Damit gibt es Möglichkeiten zwei Datasets in einem Datenbereich zu verknüpfen.


Grundsätzlich gilt: Ein Datenbereich in einem Report kann nur an ein Dataset gebunden sein. Es ist also sinnvoll, alle benötigten Felder bereits vom Datenbankserver in ein Dataset vereinigen zu lassen. Es sind aber auch Situationen denkbar, in denen es nicht möglich ist, die benötigten Felder in ein Dataset zu integrieren (z.B. bei der Nutzung von bereits bestehenden Shared Datasets oder bei verschiedenen Quellen). Die Möglichkeiten in einem Datenbereich auf Inhalte eines zweiten Datasets zuzugreifen waren bisher wenig komfortabel. Es gab dazu nur die Funktionen Last, First und die Aggregatfunktionen, die auf das gesamte Ziel-Dataset anzuwenden sind. Ein wahlfreier Zugriff auf eine beliebige Zeile in dem Ziel-Dataset, anhand eines Suchwertes, wurde nicht von SSRS unterstützt. Um das zu erreichen, war es nötig, das komplette Dataset in einem Hashtable zu cachen und dann mittels einer Custom-Code-Funktion den gesuchten Wert zu ermitteln.
(more…)