(17.5.2011)

SQL Server 2008: SQL AZURE.

Eine Sammlung verständlicher Erklärungen und brauchbarer Tipps zum SQL Server in the clouds finden sich auf der Site von Dhananjay Kumar. Im Moment ist allerdings nicht klar, wie sicher das Cloud Computing überhaupt ist. Der entsprechende Service von Amazon lag infolge eines missglückten Software-Updates 4 Tage darnieder; der Diebstahl aus Sonys Cloud-Datenbanken von etwa 100 Mio Kundendaten ist auch nicht geeignet, das Vertrauen in die Auslagerung hochkritischer Daten nachhaltig zu stärken.

(16.5.2011)

SQL Server 2008: NOLOCK.

Die Option WITH (NOLOCK) bedeutet nicht etwa, dass in der adressierten Datenbank kein Lock abgesetzt wird. Wie Tests von Robert L Davis zeigen, werden auch beim SELECT-Zugriff auf eine Tabelle mit der Option NOLOCK zwei Locks veranlasst: ein shared schema lock auf das Objekt (table or partition) und ein shared lock auf die ganze Datenbank.

(16.5.2011)

SQL Server 2008: XML.

Definiert man einen Feldinhalt als vom Typ "XML", kann man nach Wunsch ein Schema hinterlegen, dem die eingefügten Daten entsprechen müssen (automatische Validierung). Zu beachten ist aber, dass die Daten im Unicode-Format (nvarchar, 2 Bytes pro Zeichen) gespeichert werden (statt im varchar-Format): Dies kann zu unliebsamen Überraschungen führen beim Herauskopieren und Weiterverwenden; die CAST-Funktion hilft hier weiter. Zudem sind Umlaute und gewisse Spezialzeichen - entsprechend der XML-Konvention - im UTF-8-Format codiert.

(23.9.2010)

SQL Server 2008: Konfiguration.

Die Installation und Konfiguration eines MS-SQL Servers gehört nicht zu den trivialen Aufgaben. Die Fein-Einstellungen sind komplex, die Anforderungen bezüglich Sicherheit nicht einfach zu bewerkstelligen. In Internet-Foren finden sich gute Zusammenfassungen zu diesen Themen. Hier sei auf vier Publikationen hingewiesen, die dem DB-Administrator das Leben erleichtern:

(15.7.2010)

How to Increase Query Speed With a Little Communication.

Auf der Site www.SQLServerCentral.com, einer Sammlung substanzieller Beiträge zu Datenbanken, rapportiert Stephen Hirsch den Fall exzessiver Laufzeit eines Datenbank-Query, der auf elegante Art und Weise gelöst wurde. Als Merksätze für die Projektentwicklung fügt er am Schluss an:

  • Spend some time with your end users, if possible. Get to know them as people, not just users. Find out what they actually do, and what they actually want to use your tool to do. Be patient with their lack of technical skill; remember that they probably know things you don't, and that the more knowledge they have about what you do, the easier your job will be.
  • Look at production data. If you get the chance to create prototypes, use production data in your prototypes.
  • If you're in a position of some authority, eliminate the distinction between "analysts" and "programmers". Set it up so that everyone does both.

Gerade die Berücksichtigung des ersten Ratschlags hätte in manchem Projekt vor Rückschlägen oder gar Absturz bewahrt.

(26.5.2010)

SQL Server: Transparent Data Encryption.

Eine transparente Verschlüsselung der Informationen in einem SQL Server ist erst ab der Version 2008 unterstützt. In der Version 2005 musste der Typ der Felder zu varbinary geändert werden; zudem erstreckte sich die Verschlüsselung nicht auf die Backup-Bänder(!). Wie die Verschlüsselung ganzer Datenbanken aufgesetzt und eingeführt werden kann, ist einem Artikel im Database Journal zu entnehmen; dort ist Schritt für Schritt erklärt, was zu tun ist. Der Autor fasst seine Erfahrungen so zusammen:

"For SQL server administrators, TDE provides an easy way to implement full database encryption. TDE doesn't reduce application performance. TDE provides a comprehensive defense as the encryption stays intact with the database even it is moved to different locations. From a security point of view, TDE is best, as encryption doesn't break in backups and snapshots."

(19.8.2009)

SQL Server: Datentypen für Text.

Wenn Sie Daten im Textformat in einer Datenbank-Tabelle ablegen wollen, ist Folgendes wichtig:

1. Verwenden Sie nicht nvarchar oder nchar. Diese beiden Datentypen brauchen doppelt so viel Platz wie varchar oder char, verschwenden Platz im Buffer Cache und erhöhen den Server I/O. nvarchar und nchar sind nur sinnvoll, wenn Sie Unicode speichern wollen (16 bit).

2. Wenn die Länge des Inhalts eines Textfeldes stark variiert, verwenden Sie mit Vorteil varchar statt char, weil unter dem Strich weniger Speicher verwendet und damit der I/O Cache geschont wird. Zudem laufen Sorts von varchar-Feldern rascher ab als solche von char-Feldern, weil bei char-Typen die ganze Länge des Datenfeldes in den Sort miteinbezogen werden muss. 
                                                                                       (Quelle: SQL-Server-Performance Newsletter)

(10.8.2009)

SQL Server 2008: Unstrukturierte Daten.

Wie speichert man unstrukturierte grosse Datenmengen im SQL Server? Bisher gab es zwei Methoden: Entweder man packte sie in ein VARBINARY- oder IMAGE-Feld. Oder man lagerte sie aus in eine externe Datei und merkte sich den Path in einer Tabelle. Die erste Methode garantiert die Konsistenz der Datenbank, führt aber zu schlechteren Antwortzeiten. Die zweite Methode ist schneller; die Transaktions-Sicherheit fällt aber weg, und es ergeben sich Probleme mit dem Backup/Restore.

Die Version 2008 des SQL Servers stellt neu das FILESTREAM-Attribut zur Verfügung. Hier werden die Daten zwar auch im File-System abgelegt, aber der SQL Server besorgt jetzt das Handling selber und garantiert für die Transaktionssicherheit. Zudem fällt die 2GB-Limite weg. FILESTREAMs lassen sich mit TSQL ansprechen oder mit APIs, sind der Volltext-Indexierung zugänglich, können repliziert werden und funktionieren mit allen Recovery-Modellen. Eine sehr gute und klare Einführung von Jacob Sebastian zu diesem Thema findet sich auf dem Forum simple-talk. Und auf SQL Server Central ein Erfahrungsbericht über die Verwendung ohne APIs.

(14.7.2009)

Arbeitsplatz des Richters.

Wenn Sie eine wirklich neuen Ansatz für die Gestaltung des PC-Arbeitsplatzes eines Richters kennenlernen möchten, dann schauen Sie sich den Podcast von CSC an; es handelt sich dabei um die Live-Aufzeichnung eines Web-Seminars. Die Anwältin und Beraterin Daniela Freiheit entwirft hier ein ebenso überraschendes wie originelles Konzept für die Darstellung und Aufbereitung entscheidrelevanter Informationen.

(13.7.2009)

SQL Server: Upgrade auf Version 2008.

Falls Sie sich mit der Frage beschäftigen, ob sich für Sie ein Upgrade auf die neue Version 2008 lohnt, finden Sie hier einige Überlegungen dazu. Für den Upgrade stehen Hilfsmittel zur Verfügung, beispielsweise der Copy Database Wizard. Nach erfolgter Installation eines SQL Servers sollten einige Massnahmen getroffen bzw. bestimmte Einstellungen kontrolliert werden; eine gute Zusammenstellung findet sich hier.

(13.7.2009)

SQL Server 2008: Volltext-Suche.

Die Version 2008 des SQL Servers bringt einige Neuerungen bei der Volltextsuche. Microsoft hat zu diesem Thema ein ausführliches White Paper ins Netz gestellt. Die Stopwortliste wird endlich nicht mehr in einer externen Datei, sondern in der Datenbank selber geführt; beim Thesaurus hat es aus Zeitgründen noch nicht dazu gereicht. Die Nachführung des Volltext-Indexes geschieht in einem separaten Prozess, der nicht bei jeder Änderung angestossen werden muss, sondern die betroffenen Datenfelder permanent überwacht. Die Volltext-Indexierung konsumiert etliche Ressourcen; es finden sich in diesem Arbeitspapier entsprechend viele Empfehlungen für eine Verbesserung der Performance. Interessant ist die Empfehlung, unter Umständen einen zusätzlichen Index auf das rowversion-Feld zu legen. Dieses Attribut (früher: timestamp), das pro Tabelle nur 1x vorkommen darf, verwendet der SQL Server für die Organisation des Lockings; üblicherweise rät Microsoft ausdrücklich davon ab, diesen Zeitstempel zu indexieren, da er bei jeder Mutation automatisch geändert wird.  

(6.7.2009)

SQL Server: Worst Practices.

  1. No requirements
  2. No code reviews
  3. No referential integrity
  4. No indexes
  5. Duplicate indexes
  6. Throwing hardware at the problem
  7. Unnecessary coding techniques
  8. No service packs
  9. No maintenance
  10. No security
  11. No testing
  12. Not verifying SQL Server backups
  13. Developing and deploying code susceptible to SQL Injection
    aus: MSSQL Tips

(3.7.2009)

Passwörter.

In vielen Unternehmen und öffentlichen Verwaltungen gilt die Regel, dass Passwörter für den Zugang zu Computersystemen regelmässig zu ändern sind. Dies führt dazu, dass nach einiger Zeit sich niemand mehr an sein Passwort erinnern kann. Man beginnt damit, es auf Papier zu notieren oder nach einem einfachen und sich wiederholenden Schema abzuändern. Doch Vorschrift ist Vorschrift. Das wirklich sichere Passwort lässt sich aber nach einer bewährten Methode zusammenstellen. Sie heisst "Corporate Directive Number 88-570471" und ist im Internet an verschiedenen Orten zu finden, unter anderem hier.
 

(2.7.2009)

SQL Server: Bottlenecks.

If your SQL Server is experiencing network bottlenecks, consider these possible solutions:
  1. Add faster network cards.
  2. Add additional network cards.
  3. Use the latest network card drivers.
  4. Server network card(s) should be attached to switches.
  5. Network cards should be running in full duplex mode.
  6. Manually hard code network cards to match the speed of the switch they are connected to. Don't use auto-detect sensing methods.
  7. Tune your application so that it does not require unnecessary network trips. Do this by returning only the required data and by using stored procedures.
  8. Remove all unnecessary network protocols from the server.
  9. Ensure that SQL Server is the only application running on the server (other than server management utilities).
  10. Remove or disable all unnecessary services. aus: SQL-Server-Performance.Com Newsletter