2013-05-11

T-SQL Code übersichtlich formatieren

Der T-SQL Editor in SQL Server Management Studio (SSMS) ist von Version zu Version immer besser geworden. Dank IntelliSense ist das Schreiben von Objektnamen (Tabellen, Spalten, etc.) schnell und fehlerfrei möglich. Aber wenn es darum geht, wann ein Zeilenumbruch erfolgt, ob Kommas am Anfang oder am Ende einer Zeile stehen und wie weit ein Ausdruck einzurücken ist, endet die Unterstützung. Je länger die SQL Statements, desto aufwändiger gestaltet sich die Formatierung.

Tools unterstützen beim Formatieren


Zum Glück erlaubt SSMS das Einbinden von Erweiterungen. Was den Funktionsumfang und die Qualität betrifft, ist hier wahrscheinlich SQL Prompt von redgate an erster Stelle zu nennen. Entwickler, die das SQL Developer Bundle nutzen, finden SQL Prompt darin bereits vor. Einziger Nachteil: Die Kosten in Höhe von ca. 300 Euro für die Professional Version von SQL Prompt.

Mein Favorit unter den kostenfreien Tools


Jedoch gibt es auch kostenfreie Tools. Einige habe ich kurz ausprobiert und dabei schnell meinen Favoriten gefunden. Es handelt sich dabei um ein Open Source Projekt von Tao Klerks mit dem auffälligen Namen Poor Man's T-SQL Formatter. Die MSI-Datei ist schnell heruntergeladen und installiert. Danach erweitert sich das Menü in SSMS um zwei neue Funktionen unter "Tools":
  • Format T-SQL Code
  • T-SQL Formatting Options ...
Die neuen Funktionen, die das Formatierungswerkzeug SSMS hinzufügt
Die Verwendung ist so einfach, wie es den Anschein hat: wenn Sie "Format T-SQL Code" anklicken, wird der markierte T-SQL Code formatiert. Falls Sie nichts markiert haben, wird der gesamte T-SQL Code im Abfragefenster formatiert.

Egal, wie Sie den Code eingegeben haben: nach Aufruf von "Format T-SQL Code" sieht er sofort gut aus.
Da jeder Programmierer eigene Vorstellungen davon hat, was die richtige Formatierung ist (bzw. da unterschiedliche Unternehmen unterschiedliche Vorgaben machen), lässt sich die Formatierung mit der Funktion "T-SQL Formatting Options ..." steuern.

Die Einstellungen zum Formatieren

Alles in allem ein sehr hilfreiches und darüber hinaus kostenfreies Tool! Lediglich ein kleines Problem musste ich lösen: Die Tastenkombination [Ctrl]+[K] [F] soll das Formatieren starten. Mit der voreingestellten Einstellung funktionierte diese Tastenkombination jedoch nicht in meiner Umgebung. Ich musste die Einstellung "SSMS HotKey" folgendermaßen ändern:
Text Editor::ctrl+k, ctrl+f

T-SQL Formatierung in Notepad++

Gehören Sie auch zu den Nutzern des ebenfalls kostenfrei verfügbaren Texteditors Notepad++? Dann können Sie den Poor Man's T-SQL Formatter dort ebenfalls verwenden. Hierzu wählen Sie einfach im Menü "Erweiterungen" - "Plugin Manager" das Plugin aus - fertig.

Weitere Links

Die Tools SQL Prompt und Poor Man's T-SQL Formatter habe ich nach subjektiven Kriterien herausgegriffen. Wenn Sie an einer Übersicht der verfügbaren Tools interessiert sind, finden Sie diese auch bei Tao Klerks: Übersicht der Formatierungs-Tools

2013-05-03

Aktuelle Service Packs und Cumulative Updates für SQL Server ermitteln

Typische Frage im Umgang mit SQL Server lauten:
  • Welches ist das aktuelle Service Pack für meine Version?
  • Gibt es Cumulative Updates zu meinem Service Pack?
Während des Lebenszyklus einer SQL Server Version bietet Microsoft Service Packs (SP), Cumulative Updates (CU) und Hotfixes zur Behebung bekannter Probleme an. Möglichst bald nach dem Erscheinen eines Service Packs sollten Sie dieses auch auf Ihren Systemen installieren. Ich hatte vor einigen Jahren ein einschneidendes Erlebnis mit einem SQL Server ohne aktuelle Services Packs, der damals ein ganzes Netzwerk lahmlegte - eine sehr unangenehme Situation, die durch rechtzeitige Installation des Service Packs eindeutig zu vermeiden gewesen wäre.
Während Service Packs etwa alle 6 Monate veröffentlicht werden, stehen neue Cumulative Updates im Abstand von 2 Monaten zur Verfügung. Diese sollten Sie aber nur dann installieren, wenn Sie akut ein Problem lösen müssen, das von einem CU abgedeckt wird. Ansonsten lautet der Rat: warten Sie auf das nächste Service Pack.
Hotfixes sind sehr spezielle Problemlösungen, die Sie individuell anfordern müssen; im entsprechenden Knowledge Base Artikel finden Sie dann einen Link für die Anforderung.

Wo finde ich denn nun die Information, welches Service Pack aktuell ist?

Erste Anlaufstelle ist das Update Center für Microsoft SQL Server. Hier finden Sie die Liste der letzten SPs und CUs für jede SQL Server Version. Außerdem jeweils einen Link zum jeweiligen Knowledge Base Artikel, der jedes SP und CU begleitet.

Wie ermittle ich das installierte Service Pack?

Eine gute Methode, um das Installierte Service Pack zu ermitteln, ist die Funktion SERVERPROPERTY(). In der Dokumentation finden Sie alle Parameter, die diese Funktion versteht. In diesem Zusammenhang sind folgende Aufrufe interessant:
select SERVERPROPERTY('Edition')
select SERVERPROPERTY('ProductLevel')

select SERVERPROPERTY('ProductVersion')

Der letzte Aufruf liefert (so wie das folgende Bild in SQL Server Management Studio) hinter der Versionsnummer weitere Ziffern, die so genannte Build-Nummer.



Die vierstellige Build-Nummer ist nicht selbstsprechend, sondern Sie brauchen weitere Informationen um herauszufinden, welches SP oder CU sich dahinter verbirgt. Es gibt Knowledge Base Artikel, wo Sie das herausfinden können:


Noch besser gefällt mir allerdings diese Übersicht, die allerdings keine Microsoft Quelle ist.

2013-05-02

PowerPivot in SharePoint 2013 richtig konfigurieren


Mal wieder ein Blogeintrag, der auf viele Stunden leidvoller Erfahrung zurückgeht. Diesmal geht es um PowerPivot in SharePoint 2013. Eigentlich eine gute, klare Sache:
  • Sie laden eine Excel Datei mit einem PowerPivot Modell in eine SharePoint PowerPivot Galerie hoch. Daraufhin können andere Anwender mit einem Browser auf die Excel Arbeitsblätter mit den Berichten zugreifen. Sogar Filtern, Sortieren, etc. funktioniert über  den Browser! Die Berechnungen werden serverseitig auf einer dafür konfigurierten Instanz von Analysis Services (SSAS) im tabularen Modus ausgeführt.
  • Nach einem konfigurierbaren Zeitplan werden die Daten im PowerPivot Modell neu aus den zugrunde liegenden Datenquellen geholt (z.B. Datenbanken, Dateien, Feeds, etc.). Auf diese Weise sehen die Anwender immer Berichte mit aktuellen Daten.
Um das alles zu konfigurieren, bietet sich der Einsatz des PowerPivot Configuration Tools an. Gerade dann, wenn man noch nicht so vertraut mit all den beteiligten Komponenten ist oder wenn es darum geht, einfach nur "mal eben" ein Testsystem aufzusetzen, führt das Tool in der Regel schnell zum Ziel.

Wenn das alles so gut geht - wo ist dann das Problem?

Nicht immer funktioniert das PowerPivot Configuration Tool einwandfrei. Zum ersten Mal konnte ich das bei einem Testsystem beobachten, das keine Internetverbindung hatte. (Nur am Rande: in diesem Fall waren diese beiden Artikel sehr hilfreich: Skripts von Craig Lussier und der TechNet Artikel, auf den er sich bezieht.) Aber auch nach dem "Rumfummeln" an einer korrekt laufenden Installation musste ich mich der gleichen Herausforderung stellen.
Das Problem ist, dass Sie die zeitgesteuerte Aktualisierung der Daten nicht einrichten können. Der erste Schritt ist einfach: Sie klicken das Symbol zum Erstellen eines Zeitplans für die Aktualisierung an.
Eigentlich ganz einfach, für die Aktualisierung einen Zeitplan einzurichten.
Dann folgt die Enttäuschung:
"A schedule cannot be enabled for a workbook with no external data sources"
Wie will man hier die zeitgesteuerte Aktualisierung einrichten?
Aber ich bin mir ganz sicher, dass PowerPivot die Daten aus einer SQL Server Datenbank holt. Was nun?
 

Ursache und Lösung

Wie immer bei SharePoint lässt sich das Problem lösen, wenn man sich klar macht, welcher Dienst sich mit welcher Identität wo authentifizieren möchte. Bei dieser Gelegenheit kann ich auch gleich zeigen, wie Sie Ihre SharePoint Umgebung etwas sicher konfigurieren, als das Configuration Tool das macht.
Dreh- und Angelpunkt ist das Dienstkonto des PowerPivot Dienstes.
  1. Einrichten eines Application Pools für den Dienst
    1. Gehen Sie nach "Central Administration" - "Application Management" - "Manage Service Applications"
    2. Dort finden Sie die Service Application für PowerPivot; das Configuration Tool vergibt den Namen "Default PowerPivot Service Application". Klicken Sie NEBEN diesen Namen und dann auf die Schaltfläche "Properties".
    3. Im folgenden Dialog können Sie die Service Application einem Application Pool zuweisen. Das Configuration Tool weist alle Service Applications demselben Pool zu. Ich habe hingegen einen neuen Pool "PowerPivot Pool" erstellt und diesem mit dem Link "Register new managed account" das Dienstkonto svcPowerPivot zugewiesen. Dieses Domänenkonto muss vorher bereits angelegt worden sein (einfach anlegen, keine Rechte zuweisen). Die Folge: Alle Service Applications, die diesem Pool zugewiesen werden, werden mit diesem Dienstkonto ausgeführt.
  2. Dieses Konto braucht Zugriff auf die Web Application. Dazu starten Sie über "Start" - "Programme" - "Microsoft SharePoint 2013 Products" das Programm "SharePoint 2013 Management Shell" als Administrator. Führen Sie das folgende 2-zeilige PowerShell Skript aus, wobei Sie die Platzhalter mit dem Namen Ihrer Web Application und Ihres Dienstkontos ersetzen.
    $webApp = Get-SPWebApplication "http://<servername>"
    $webApp.GrantAccessToProcessIdentity("YOURDOMAIN\<serviceAccountName>")
  3. Dieses Dienstkonto svcPowerPivot braucht nun noch eine besondere Berechtigung: Es muss ein Administrator in der SharePoint zugeordneten SSAS Instanz sein. Dazu benötigen Sie das SQL Server Management Studio. Stellen Sie eine Verbindung zu dieser Instanz von SSAS her. In meinem Fall hat sie den Namen "SQL1\POWERPIVOT". Mit einem Rechtsklick auf diese Instanz im Object Explorer öffnet sich ein Kontextmenü. Wählen Sie hier "Properties" aus. Im folgenden Dialogfenster dann "Security" auswählen und das Dienstkonto den Server Administratoren hinzufügen.
  4.  

Damit hat das Konto, mit dem die PowerPivot Service Application ausgeführt wird, alle erforderlichen Berechtigungen. Nun kann die PowerPivot Application in der SSAS Instanz nachsehen, welche Datenverbindungen das PowerPivot Modell hat - und Sie können den Scheduled Data Refresh aktivieren.


Weitere hilfreiche Links

 

Nachbemerkung

Mir ist schon klar, dass dieser Text eine abenteuerliche Mischung von Deutsch und Englisch enthält. Das ist der Tatsache geschuldet, dass ich zwar in Deutsch schreiben möchte, aber serverseitig inzwischen zumeist aus gutem Grund die englischsprachige Version von SharePoint (und SQL Server) eingesetzt wird. Ich war der Meinung, dass so die Klarheit erhalten bleibt. Für Verbesserungsvorschläge bin ich dankbar!