SQL Server & ASP .NET Blog

Interessantes und Wissenswertes

SSIS Paketvariablen per Konfigurationsdatei setzen

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.

image

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

Kostenlose SQL-Server-Tool von Atlantis Interactive

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.

Primzahlen ermitteln

…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.

primenumber_1

Das Tool und der Quellcode sind zu finden unter: http://primenumberexporter.codeplex.com

Textdateien durchsuchen - mit Visual Studio

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 :-)

SQLCE und ADO .NET Entity Framework

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.

Visual Studio – Quelltext während Debuggen bearbeiten

Um den Quelltext einer Anwendung während des Debuggens zu bearbeiten, muss “Edit and Continue” aktiviert werden. Dies geht für Webanwendungen an zwei (!!) Stellen. Einerseits bei den Optionen und andererseits in den Projekteigenschaften unter “Web”. (Die Bearbeitung funktioniert allerdings erst, sobald der Code an einem Haltepunkt angekommen ist).

image

image

ClientIDs in Repeater ändern sich…

Ich hatte das Problem, dass sich plötzlich die ClientIDs, die automatisch vom Framework vergeben werden – geändert haben. Eine ID hieß nun nicht mehr myRepeater__ctl1_textBoxMyText sondern plötzlich myRepeater_ctl01_textBoxMyText. Ein kleiner Unterschied (ctl1 und ctl01 und der zusätzliche Unterstrich)– aber wenn man per JavaScript auf die Elemente zugreifen möchte mehr als ärgerlich – denn das funktioniert nicht mehr.

Grund war ein Eintrag in der web.config.

<xhtmlConformance mode="Legacy"/>

Dieser Eintrag sorgt dafür, dass die Elemente einer Seite anders gerendert werden. Mehr Info dazu hier: [hier] und [hier]

Komplette Datenbank skripten (inkl. Daten)

Dies geht – mit dem SQL Server 2008 und 2008 R2. Einfach Rechtsklick auf die Datenbank ==> Tasks ==> Generate Scripts ==> in den folgenden Fenstern auswählen, was geskripted werden soll und bei den erweiterten Optionen “Schema und Daten” auswählen.

image

image

Ergebnis ist ein SQL-Skript mit den gewählten Datenbankobjekten inkl. Insert-Statements für die Daten. Sehr praktisch!

Passwort vergessen – Zugriff auf den SQL Server erhalten

Hat man mal das sysadmin-Passwort zum SQL Server vergessen und auch keinen passenden Windows-Nutzer zur Hand hilft folgendes Vorgehen, um wieder Zugriff auf den SQL Server zu erhalten:

  1. Anmeldung als lokaler Admin am Server
  2. Server stoppen => “net stop mssqlserver”
  3. Server im SingleUser Modus starten => “net start mssqlserver /m”
  4. mit dem Management Studio das Passwort des sa ändern oder einen entsprechenden Benutzer anlegen
  5. Server stoppen => “net stop mssqlserver”
  6. Server “normal” starten => “net start mssqlserver”