Der Database Engine Tuning Advisor (kurz DTA, oder auch Datenbankoptimierungsratgeber…) ist bekanntlich ein durchaus praktisches Tool, um die Effektivität der Datenbankstrukturen mit Abfragen zu überprüfen und ggf. zu verbessern. Enthalten solche Abfragen jedoch “typisch europäische” Sonderzeichen wie ä, ö, ü, ß, á oder ô scheint der DTA selbst einen Ratschlag zu benötigen, denn er weiß nicht, wie ein Workload File mit solchen Abfragen zu öffnen ist.

Ein Beispiel:

Wir erstellen zu Demonstrationszwecken in der AdventureWorks2012-Datenbank eine Tabelle mit dem Namen “_Über”, die lediglich eine Indexspalte enthält und wollen mit einem simplen SQL-Statement die Anzahl der Einträge ermitteln:

SELECT COUNT(*) AS ‘Row Count’ FROM _Über

Die Abfrage im SSMS auszuführen klappt erwartungsgemäß einwandfrei. Wir speichern Sie unter SpecialCharTest.sql und starten den DTA. Im DTA-Fenster konfigurieren wir die Session mit dem Namen SpecialCharTest und der Verbindung zur AdventureWorks2012-DB. Als Workload File wählen wir das eben abgespeicherte SQL-File.

Nun versuchen wir, die Analyse zu starten, doch leider bricht der Vorgang beim Lesen der Arbeitsauslastung mit der titelgebenden Fehlermeldung ab:

Zu deutsch: “Fehler: Die angegebene Eingabedatei kann nicht geöffnet werden”. Leider ist dies nicht sehr aussagekräftig, nach einigen Versuchen war aber klar, dass der Umlaut das Problem ist. Der Unterstrich verursacht keine Fehlermeldung, ebensowenig wie z.B. das Dollarzeichen $. Google gibt an dieser Stelle auch auf, lediglich ein Hinweis auf eventuelle Probleme mit der Code Page ist zu finden. Das Abspeichern des SQL-Files mit verschiedenen Code Pages (1252/ANSI, 65001/UTF-8 u.a.) löste das Problem jedoch auch nicht.

Eine Lösung des Problems ist derzeit scheinbar nicht vorhanden. In der Zwischenzeit gibt es wohl nur zwei Lösungen:

  1. Den Objektnamen entsprechend umschreiben, also UE statt Ü, a statt á usw.
  2. Erstaunlicherweise hat der DTA keinerlei Probleme mit der Abfrage, wenn er direkt aus der Query heraus im SQL Server Management Studio geöffnet wird. Falls SSMS bzw. die Query nicht bereits offen ist, kann man aus dem DTA heraus über View à Preview Workload File die Datei schnell öffnen. Nachdem die Verbindungsdaten richtig eingestellt wurden, wird ein Rechtsklick auf die Query ausgeführt.

Wenn man nun den DTA wieder öffnet, ist eine neue Session erstellt worden mit den richtigen Verbindungsdaten und der Abfrage als Workload (der Session-Name sollte angepasst werden). Ausführen mit Klick auf Start Analysis, und siehe da: