by Axel Schulze
17. März 2011 15:01
Wie bereits berichtet gibt es für den SQL Server “Denali” eine neue Projektart für SSIS-Projekte. Bisher wurden Pakete immer einzeln bereitgestellt und es gab dabei die Möglichkeit diese im Dateisystem oder in der msdb zu speichern. Konfigurieren konnte man die Pakete über Variablen, die per XML-Datei aus einer Datenbank oder per Umgebungsvariablen gesetzt wurden.
SSIS in SQL Server “Denali” bringt mit dem Project Deployment die SSISDB, Environments und Parameter ins Spiel. Dazu kurze Stichpunkte:
SSISDB – Zentrale Datenbank zum Speichern, Konfigurieren und für das Logging von SSIS Projekten und Paketen
Environment – Container für eine oder mehrere Variablen, die bei der Ausführung von Paketen gesetzt werden können
Parameter – im Grund eine weitere “Variablenart” in SSIS-Paketen, die beim Aufruf eines Paketes oder eines Projektes gesetzt werden kann
Im Grund funktioniert das Zusammenspiel folgendermaßen:
- Ein SSIS-Projekt wird angelegt und Parameter werden definiert
- Ein Environment mit einigen Variablen wird angelegt
- Das SSIS-Projekt wird auf den Server bereitgestellt (direkt aus Visual Studio in die SSISDB)
- bei der Ausführung (Execution) wird für das auszuführende Paket die zu verwendete Environment angegeben, die im Paket hinterlegten Parameter werden konfiguriert und das Paket läuft
Die folgende Grafik zeigt dieses Verhalten noch einmal grob:

Damit ist es ein Leichtes mehrere Umgebungen mit unterschiedlichen Parameterwerten für bspw. Entwicklungs-, Test- und Produktivumgebungen zu erstellen und während der Ausführung zwischen diesen umzuschalten.
So viel zur Theorie. In der Praxis sieht dieses Vorgehen folgendermaßen aus: Mehr...
by Axel Schulze
15. März 2011 09:09
Bereits lange bekannt ist, dass Google Analytics als Tool zum tracken von Website-Benutzerdaten aus datenschutzrechtlicher Sicht zumindest "bedenklich" ist (Beispiel). Grund dafür ist beispielsweise die Übertragung von Besucherdaten (IP-Adressen) ins Ausland. Daher habe auch ich mich nach einer Alternative umgesehen und Piwik gefunden (Piwik als Alternative). Es bietet ähnliche Auswertungen wie Analytics - hat aber den Vorteil auf dem "eigenen" Server zu laufen und somit keine Informationen weiter zu geben. Leider ist Piwik eine PHP-Anwendung und somit nicht so einfach auf einem IIS zu installieren, wie eine ASP .NET Anwendung. Daher hier kurz ein Link, mit dem die Installation ohne Probleme funktionierte => PHP mit FastCGI auf dem IIS
Piwik wird auch in der Microsoft Web App Gallery zur “OneClick” Installation angeboten (hier) – dabei wird auch automatisch MySQL und FastCGI mit installiert. Diese Methode hat bei mir allerdings nicht zum Erfolg geführt.
Die Präsentation der Tracking-Ergebnisse in Piwik sieht auch ordentlich aus - für meine Zwecke auf jeden Fall ausreichend. Außerdem ist ein Plugin mitgeliefert, um die IP-Adressen der Benutzer direkt zu anonymisieren (d.H. die IPs werden gar nicht erst gespeichert).


Wer es selbst ausprobieren möchte findet den Download unter: http://piwik.org
Edit: Da war ich ja heute richtig aktuell :-) siehe http://www.golem.de/1103/82115.html
15de0cb8-cfe2-4488-9b58-8b669ce4da24|1|4.0
Tags:
Web
by Axel Schulze
14. März 2011 14:59
Für den Export von Excel-Dateien aus eigenen Anwendungen gibt es eine schöne OpenSource-Lösung unter http://epplus.codeplex.com/=> EPPlus
Mit dieser Bibliothek (unter Referenzen einbinden) lassen sich recht einfach – auch komplexe – Excel Sheets erstellen und exportieren.
Ein kleines Beispiel, welches nur ein paar Zellen mit Text füllt und eine Zeile auf unsichtbar schaltet ist unten zu sehen.
using OfficeOpenXml;
void ExportToExcel()
{
using (var p = new ExcelPackage(new FileInfo("Data\\Template.xlsx"), true))
{
//ExcelWorksheet
ExcelWorksheet ws = p.Workbook.Worksheets[1];
//Fill
ws.Cells["A4"].Value = "Dies";
ws.Cells["A5"].Value = "ist";
ws.Cells["A6"].Value = "eine";
ws.Cells["A8"].Value = "Demo";
//set row 10 invisible
ExcelRow row = ws.Row(10);
row.Hidden = true;
//Save to Disk
Byte[] bin = p.GetAsByteArray();
const string file = "Data\\Export.xlsx";
File.WriteAllBytes(file, bin);
//Open
System.Diagnostics.Process.Start("Data\\Export.xlsx");
}
Auf jeden Fall wesentlich einfacher zu bedienen als die “hauseigene” Integration mit Office.
1f077903-9e73-4032-a4c8-b04833e3a2ac|0|.0
Tags:
ASP.NET | C#
by Axel Schulze
11. März 2011 10:24
Ich habe heute mal testweise die CTP 1, SQL Server “Denali” installiert um ein wenig mit den neuen Features zu “spielen”. Vor allem angetan haben es mir dabei die neuen SSIS-Features – daher hier kurz das Berichtenswerte.
Die Optik
Zunächst einmal – ganz wichtig! Abgerundete Ecken :-) Die Elemente aus der Toolbox werden nun alle mit abgerundeten Ecken dargestellt und das aktuell gewählte Element bekommt einen schönen Schlagschatten. Sieht schick aus – mehr aber auch nicht :-)

Veränderungen in der Toolbox
Besonders viel Neues ist mir hier auf den ersten Blick nicht aufgefallen. Es gibt zwei neue “Favoriten”. Einen Destination Assistant und einen Source Assistant.

Wählt man einen der beiden aus kann in einem neuen Popup aus bereits vorhandenen Verbindungen ausgewählt werden oder man kann weitere Verbindungen hinzufügen.

Neuer Projekttyp und SSISDB
Standardmäßig werden neue Projekte nun in einem neuen SSIS-Projekttyp angelegt. Dieser neue Projekttyp erlaubt eine vollkommen neue Art der Paketkonfiguration und der Bereitstellung auf einem SQL-Server.
Zunächst einmal fällt im Management Studio ein neuer Zweig auf – “Integration Services”. Dort kann mit Create Catalog… eine neue Integration Services Datenbank (“SSISDB”) angelegt werden. Diese Datenbank kümmert sich um die Verwaltung der SSIS-Projekte und um deren Konfiguration.

Im Knoten Integration Services können nach Installation der Datenbank alle dort enthaltenen Projekte, Pakete und Konfigurationen bearbeitet werden. Für die Installation muss die Option ‘clr_enable’ aktiviert sein. Ansonsten gilt es nur ein Passwort zu vergeben und einmal OK zu klicken. Die Datenbank erscheint dann mit den neuen GUI Funktionen unterhalb von Integration Services und als “normale” Datenbank unterhalb Databases.

Im Screenshot sieht man ein bereitgestelltes SSIS-Projekt mit einem Paket und zwei erstellte Environments – also Ausführungsumgebungen.
Wie die “neue” Konfiguration funktioniert, was genau “Environments” sind und was man sonst so alles tolles mit dem neuen Projekttyp machen kann steht im nächsten Beitrag :-)
44f3f4aa-984a-4d84-80c3-cd7011366e46|1|5.0
Tags:
SQLServer | SSIS
by Axel Schulze
11. März 2011 08:36
In Visual Studio ist es ein Kinderspiel “hässliche” automatisch generierte einzeilige XML-Dateien in der Form:
<root><element>text</element><element>text2</element></root>
mit einem Hotkey in ein lesbares Format zu bringen.
[STRG] + [K] – [D] – also Steuerung halten und dann [K], dann [D]
Ergebnis ist:
<root>
<element>text</element>
<element>text2</element>
</root>
b195935d-71bc-4947-8189-bee5ccc61ace|0|.0
Tags:
VisualStudio
by Axel Schulze
10. März 2011 13:21
Im Visual Studio ist es ein leichtes für SSIS-Paketkonfiguration zu erstellen. Einen Überblick darüber gibt dieser Artikel.Nun ist es häufig so, dass die Entwicklungskonfiguration nicht mit der Konfiguration eines Live-Systems überein stimmt (andere Server, Datenbanknamen etc.). Daher ist es in SQL Server 2005/2008 möglich im SQL Server Agent dem Paket eine andere Konfigurationsdatei mitzugeben.

Wird hier eine Konfigurationsdatei angegeben, dann werden die Werte aus dieser beim Start des Paketes ausgelesen und auf das Paket angewendet. Also kann ich davon ausgehen, dass vorhandene Entwicklungs-Konfigurationen überschrieben werden… JEIN! Bis SQL Server 2005 stimmt diese Annahme - ab SQL Server 2008 wird anders mit den Konfigurationsdateien umgegangen.
Ab SQL Server 2008 werden zunächst die Werte aus der Entwicklungsumgebung geladen, danach die Konfigurationsdatei geladen – deren Werte gesetzt und danach werden wieder die Werte aus der Entwicklungsumgebung verwendet um diese wieder zu überschreiben. Bedeutet also: Egal welche Konfiguration in der Datei steht – wenn es eine (Konfigurations-)Einstellung in der Entwicklung gab, wird diese zur Laufzeit verwendet… Dieses Verhalten ist hier nachzulesen: http://msdn.microsoft.com/en-us/library/bb500430.aspx
Frage: Wozu dann Konfigurationsdateien?
Antwort: Um zusätzliche Konfigurationen für die Laufzeit vorzunehmen. Ist im Paket für eine Eigenschaft keine Konfiguration vorgesehen, kann diese per Konfigurationsdatei gesetzt werden.
Frage: Wie können dann Konfigurationen für das Überschreiben von Entwicklungskonfigurationen gesetzt werden?
Antwort: Per “SET” Option, also bspw. /SET \Package.Variables[User::fileName].Properties[Value]; siehe auch hier
by Axel Schulze
9. März 2011 15:18
Unter http://www.atlantis-interactive.co.uk/ gibt es seit kurzem eine Reihe kostenloser SQL Server Tools. Mit dabei ist eine Art Management Studio Ersatz (SQL Everywhere) mit erweiterter Intellisense-Funktion (automatische Join Erkennung anhand FKs etc.), ein Tool zum Vergleich und zur Synchronisierung von Datenbanken (Schema und Daten) und Tools um durch Datenbanken zu “surfen” oder den Speicherplatzbedarf zu analysieren.
Die Tools kommen meiner Meinung nach fast an die RedGate-Tools heran (vor allem im Datenbankvergleich/-synchronisierung) und kosten, wie gesagt, nix! Lt. Blog der Seite hat sich der Verkauf der Tools nicht gelohnt und man hat sich entschieden diese frei zu verteilen, statt im Untergrund verschwinden zu lassen.
Es wird auch eine Bibliothek angeboten um die Funktionalität der Tools in eigenen Anwendungen verwenden zu können => siehe hier
Für den Download ist (momentan noch) eine Anmeldung auf der Seite notwendig.
55aa5e49-791d-43c8-a049-5ff7a3b05d76|0|.0
Tags:
by Axel Schulze
7. März 2011 14:01
…mal etwas ganz anderes. Ich war heute auf der Suche nach einem Tool, mit dem Primzahlen erzeugt werden können. Leider habe ich kein passendes gefunden, welches auch 7stellige Primzahlen (denn solche brauchte ich) erzeugen (und exportieren) kann.
Daher habe ich mir ein solches Tool schnell selbst gebaut, welches dank Herrn Eratosthenes auch relativ flott arbeitet.
Das Tool exportiert Primzahlen von einem Start bis Endwert in eine Textdatei im Programmverzeichnis Primenumbers.txt. Getestet habe ich die Berechnung bis 999.999.999, welche auf einem von 4 Intel Q8400 Cores in ~90 Sekunden erledigt ist.

Das Tool und der Quellcode sind zu finden unter: http://primenumberexporter.codeplex.com
f75508d3-47c7-4f7b-983b-5a0312763747|0|.0
Tags:
by Axel Schulze
25. Februar 2011 18:49
Problem Teil 1: Man hat eine Masse an Textdateien und möchte diese durchsuchen
Problem Teil 2: Diese Dateien haben keine *.txt Endung und wurden nicht von Windows indexiert => Windows-Suche fällt also aus
Problem Teil 3: Man kann die Dateien nicht vom Remote-Rechner kopieren und auf dem Remote-Rechner auch keine Software installieren
Mein Glück: Visual Studio ist installiert
Lösung: Neues Projekt in Visual Studio öffnen, alle Dateien hinzufügen => Visual Studio interne Suche über "Entire Solution" verwenden :-)
06a04689-4dbd-4f94-a31c-f46fc3ed51fb|0|.0
Tags:
VisualStudio
by Axel Schulze
18. Februar 2011 10:59
Möchte man das das ADO .NET Entity Framework und den SQL Server Compact in einer Anwendung zusammen verwenden gibt es einen interessanten Punkt zu beachten – keine IDENTITY Columns in der Datenbank verwenden. Durch die Einschränkung des SQL CE in einem Batch nur einen Befehl ausführen zu können ist es für das Entity Framework bei einem INSERT unmöglich festzustellen, welches der neue IDENTITY Wert ist – daher werden diese Spalten nicht unterstützt.
Einfache Lösung: Selbst erstellen des Schlüssels in der Anwendung. Um zu vermeiden hier auch erst wieder eine MAX(Id) herausfinden zu müssen bieten sich hier auch GUIDs (bzw. uniqueidentifier) an. Beim Erzeugen eines Objektes also einfach:
myObject.myId = Guid.NewGuid();
…dann ist auch das Entity Framework zufrieden.
Dazu noch ein Link (da ich meine Spalten vorher natürlich als INT IDENTITY erstellt habe ;-)) mit dem Opensource-Tool bzw. SSMS Addin http://exportsqlce.codeplex.com/ ist es ein leichtes die SQL CE Datenbank komplett inkl. Daten zu skripten.