Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

16. Juni 2007 um 13:15

SQL-Server-2005: Kompatibilität mit "Common-Criteria"

Eher zufällig habe ich heute die "Common-Criteria-Kompatibilität" entdeckt. Das ist eine Möglichkeit die Sicherheit des SQL-Servers durch ein paar zusätzlich Details zu erhöhen. Sie erscheinen mir generell sinnvoll:

  • "Residual Information Protection" (mit der makabren Abkürzung "RIP"): Muss der SQL-Server Hauptspeicher abgeben, dann wird er mit Dummy-Daten überschrieben und erst dann freigegeben.
  • Der SQL-Server führt Anmeldestatistiken. Damit kann man "ungewöhnliche" Anmeldemuster entdecken und analysieren.
  • Ein DENY auf eine Tabelle, kann nicht durch ein GRANT auf Spalten dieser Tabelle umgangen werden.

Diese "erweiterte" Option ist laut Doku nur in den Editionen Enterprise, Evaluation und Developer des SQL-Servers-2005 mit Service Pack 2 verfügbar. Leider ist das wohl mit heißer Nadel eingeführt worden, anders kann ich diesen Hinweis nicht erklären:

Zusätzlich zur Aktivierung der Option Common Criteria-Kompatibilität aktiviert müssen Sie ein Skript downloaden und ausführen, mit dem die Konfiguration von SQL Server 2005 SP2 für die Kompatibilität mit der Common Criteria-Auswertungssicherungsstufe 4 (EAL4+) ausgeführt wird. Sie können dieses Skript von der Website Microsoft SQL Server Common Criteria (in Englisch) downloaden.

Weitere Informationen dazu:

29. Mai 2007 um 20:19

ReportViewer Control

Mittlerweile hat es sich herumgesprochen, dass Microsoft mit dem Visual Studio 2005 auch ein ReportViewer-Control bereitstellt, dass man einfach so in seinen Anwendungen einsetzen kann. Damit kann drei Dinge, eines davon wird von Microsoft aber nicht groß beschrieben…

  • Man kann Berichte ansehen, die in einem Reporting-Service aufbereitet wurden.
    Diese Nutzung beschreibt Microsoft super ausführlich. Immerhin wird der Reporting-Service inzwischen sogar mit der Express-Edition ausgeliefert.
  • Man kann in seinem Projekt einen Bericht erstellen und ihn in seine Anwendung reinkompilieren. Das wird von Microsoft leidlich beschrieben. Man kann damit einen Bericht am erstellen und aufbereiten (mit allen schicken Features der Reporting-Services ohne ihn installieren zu müssen). Leider kann man damit nur genau einen Bericht pro Control ansehen.
  • Außerdem kann man den Control dazu nutzen viele verschiedene Berichte anzuzeigen. Im Prinzip kann man sogar beliebige Berichte anzeigen, wenn man bereit ist, den Aufwand zu erbringen. Damit kann man aus den Reporting-Services das schickste nutzen, die Anzeige und das Rendering der Berichte (inkl. Export nach PDF, Excel usw.), ohne eine Server-Anwendung installieren und konfigurieren zu müssen. Warum das von Microsoft nicht an die große Glocke gehangen wird, ist klar, oder? Sie erwähnen zwar mal die Möglichkeit, aber eine Anleitung fand ich nicht…

Zum letzteren fand ich lediglich einen brauchbaren Artikel, der in Visual-Basic kurz skizziert, wie man das anstellen muss: "Take Control of Your Reports with ReportViewer, Part 2". Er ist kostenpfichtig, die Code-Fragmente sind frei zugänglich. Leider wird darin alles in Visual-Basic gemacht. Es hat eine Weile gedauert bis ich das Prinzip verstanden habe. Ich habe folgende Erkenntnisse gewonnen:

Das ReportViewer-Control übernimmt nur die Anzeige des Berichts: also das Rendering und die Aufbereitung der Daten. Alles andere muss die eigene Anwendung erledigen:

  • Zusammenstellen des SQL-Statements, mit dem die Daten gelesen werden. Die Query kann man eigentlich auch aus dem Bericht rauslesen, wenn man sich nicht scheut, sie aus dem XML-File zu entnehmen.
  • Die Übergabe der im Bericht enthaltenen Parameter. In dem Beispiel wird gezeigt, wie man dem Bericht-Objekt die Parameter entlocken kann.
  • Bereitstellen einer Datasource, die dynamisch erstellt werden kann. Nur der Name muss so sein, wie im Bericht angegeben.

Im ersten Schritt kann man so eine Hülle für das ReportViewer-Control schreiben, die dem Entwickler anhand von bestimmten Namens-Konventionen das Leben leicht macht, z.B. DataSource1 oder Param01.
Andererseits ist die Struktur der Berichte (XML-Datei) sehr einsichtig, deswegen kann man sie auch im ersten Schritt auswerten und die Query, deren Parameter und den Namen der Data-Source ermitteln. Im zweiten Schritt muss man das Control lediglich initialisieren und schon hat man ein Universal-ReportViewer-Control.

22. Mai 2007 um 23:27

und ein weiterer Team-Blog der MS-SQL-Entwickler

Heute habe ich den "SQL Programmability & API Development Team Blog" für mich entdeckt. Er enthält jede Menge detaillierter Informationen über potentielle Performance-Probleme, über Zugriffspläne, Cache-Nutzung, usw. am SQL-Server-2005.

Es wird lange dauern bis ich die Artikel durchgearbeitet habe! Alle erste Klasse! 😉

25. April 2007 um 20:24

SQL-Server: neue Hotfix-Strategie

In dem Artikel "Microsoft SQL Server Release Services : SQL Server Hotfix Release Revised" auf dem Weblog des "Global Release Services Team" des SQL-Servers (was die alles für Blogs haben!) wird beschrieben, wie es zukünftig mit den Hotfixes weitergehen soll.

  • Bisher werden kritische Hotfixes generell für jeden ("public hotfix") zur Verfügung gestellt. Da es von dieser Sorte nicht so viele gibt, ist das sehr überschaubar.
  • Auf Fehlerbereinigungen von denen nicht jeder betroffen ist, wird bisher im Rahmen eines MSDN-Artikel hingewiesen. Er wird nur an die betroffenen Kunden geschickt ("private hotfix") Und wer ihn haben will, muss sich an den MS-Support wenden.

Das soll alles so bleiben. zusätzlich dazu soll es alle zwei Monate einen kummulativen Hotfix geben, der all die kleinen unschuldigen Hotfixes zusammenfasst. Der soll dann auch wieder jedem zugänglich sein ("public").

Da bin ich ja mal gespannt. Unter dem Strich sehe ich das sehr positiv. Da wir potentiell von jedem Bug betroffen sind, lassen wir uns die Hotfixes sowieso bisher immer freischalten. So hat man wenigstens den Service, dass man keinen verpassen kann. Den Zeitraum sehe ich als ausreichend an. So viele Hotfixes waren das bisher nicht…

24. April 2007 um 18:02

Datenspeicherungsarchitektur mit SQL Server 2005 Compact Edition

Heute fand ich einen recht guten Einführungsartikel zur "SQL Server 2005 Compact Edition" bei Microsoft: "Datenspeicherungsarchitektur mit SQL Server 2005 Compact Edition". Hier geht es allerdings weniger um Architekturen, sondern um Einsatzgebiete, also für welche Art von Software die Edition taugt.

Seine Stärken liegen darin, dass er deutsch erhältlich ist und sehr ausführlich auf die verschiedenen Einsatzaspekte eingeht. Dafür geht er nicht so in die Tiefe, was für die Zielgruppe "Einsteiger" auch angemessen ist.
In nur einer Sache stimme ich nicht mit dem Autoren Brian Noyes überein: Für Webanwendungen würde ich die Edition nicht nehmen. Auch nicht für "kleinere", wie er schreibt…

24. April 2007 um 17:56

SQL-Server: Wer sind heute meine 5 Langläufer?

Im Artikel Dynamic Management Views and Functions" auf databasejournal.com fand ich folgende sehr nützlich Abfrage zur Ermittlung der durchschnittlichen CPU-Zeit der 5 längsten Abfragen:

SELECT TOP 5 total_worker_time/execution_count 'Avg CPU Time',
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END – qs.statement_start_offset)/2) + 1)statement_text
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY total_worker_time/execution_count DESC;

Risiken und Nebenwirkungen: In den "Dynamic-Management-Views" sind nur die Infos seit dem letzten Start des Dienstes enthalten…

PS: Wer wissen will, was aktuell gerade läuft, findet die Antwort mit folgender Abfrage von Urs Gehrig:

SELECT sp.spid [SPID], sp.last_batch [Executed at], st.text [SQL]
FROM sys.sysprocesses sp
OUTER APPLY fn_get_sql(sp.sql_handle) st
WHERE st.text IS NOT NULL

23. April 2007 um 23:24

Welcher Index fehlt mir?

In dem sehr nützlichen Abschnitt "Finding Missing Indexes" in den Books-Online wird beschrieben, wie man auf einfache Weise herausbekommt, welche Indexe dem SQL-Server geholfen hätten, die letzten Abfragen noch performanter auszuführen.

Der SQL-Server-2005 notiert sich die Informationen über Indexe, die er nicht fand, natürlich inklusive der Anzahl der Benutzungen. Damit kann man auf einfache Art erste Würfe für neue Indexe bekommen.

Natürlich sind mehr Indexe nicht nur gut, beim Einfügen, Löschen und Ändern kosten sie schließlich wieder Zeit. Mit diesem Feature geht die Suche nach "guten" Indexen nur einfach leichter.

Hinweis: Die Informationen werden nur bis zum nächsten Stop des Dienstes gespeichert. Nach einem Neustart ist alles vergessen…

3. April 2007 um 21:02

SQL-Server-Whitepapers

Kimberly Tripp hat sich die Mühe gemacht und stundenlang (laut eigener Aussage "5+ hours of work") alle verstreuten Whitepapers von Microsoft zum SQL-Server zusammengesucht. Das Ergebnis finde ich sehr nützlich.
Sowohl sein Weblog als auch die Liste liegen jetzt in meinen Favoriten…

Gugst Du hier: SQL Server 2005 Whitepapers

gefunden bei Paul Randal
27. März 2007 um 18:58

SQL-Server-2005: Partitionierte Tabellen

In dem Artikel "Partitionierte Tabellen und Indizes in SQL Server 2005" wird das neue Feature der partitionierten Sichten sehr gut erklärt. Dabei wird auf die Historie eingegangen, sodass "alte" Hasen gut abgeholt werden und neue den nötigen Hintergrund bekommen.

27. März 2007 um 18:55

SQL-Server-2005 – der Internationale?

Der Artikel "Internationale Features in Microsoft SQL Server 2005" vom 19. März 2007 bietet eine sehr ausführliche Zusammenfassung aller wichtigen Dinge, die man wissen sollte, wenn man sich mit internationaler Software beschäftigt.

Bevor jetzt alle zum nächsten Artikel springen, möchte ich ein Beispiel geben:
Um betroffen zu sein, reicht es auch, wenn man beispielsweise polnische oder serbische Namen richtig speichern muss. DotNet-Anwendungen nehmen generell jedes Unicode-Zeichen entgegen. Um das in der Datenbank so speichern zu können, dass beim Lesen wieder das richtige Zeichen herauskommt, muss man in der Datenbank ebenfalls Unicode einsetzen…

26. März 2007 um 18:47

SQL-Server-2005 auf Cluster

Wer auf seinem Cluster den SQl-Server-2005 installieren will, der findet bei sql-server-performance.com jede Menge Artikel zur Einrichtung und Configuration:

Gerade in dem letzten Artikel findet man eine sehr gute Sammlung von thematisch sortierten und weiterführenden Links.

19. März 2007 um 20:18

Blogs des SQL-Server-Teams

Paul Randal hat auf seinem Blog eine Liste von über vierzig aktiven Blogs von Mitgliedern des SQL-Server-Teams gesammelt:

Seeing the new blog from the doc team inspired me to ping the extended SQL team to see what active blogs there are. Here's the list I've compiled of active (or "I'm working on content right now") blogs run by members of the SQL team – grouped by area and in no particular order. Lots of cool stuff here…

Die Liste steht im Artikel "Wow – over 40 blogs from the SQL Product Team". Wer jetzt noch Langeweile hat, dem ist nicht zu helfen…