Freitag, 13. April 2012

WoW Mists of Pandaria: Probleme mit dem Beta-Launcher

Die WoW Beta zu Mists of Pandaria wird aktuell weit gestreut verteilt.

Beim Download kommt es immer wieder zu zwei Problemen für die ich eine Lösung gefunden habe.

  1. "Updating Setup Files" hängt für immer
  2. Launcher startet, hängt aber bei der Überprüfung für immer

Beid Probleme konnte ich mit zwei Schritten bereinigen:

  • Launcher/Downloader beenden (sonst sind Verzeichnisse gesperrt)
  • das Verzeichnis Battle.net unter c:\ApplicationData löschen
  • den Prozess Agent.exe (sollte er noch laufen) beenden
Getestet habe ich unter Windows 7 Profesional (x86-64).

Escape Charactes in Oracle und DB2

Will man in SQL einen Ähnlichkeitsvergleich durchführen, so kommt meist der "LIKE" Operator zum Einsatz. Hierbei sind "_" und "%" die Sonderzeichen die für genau ein bzw. beliebig viele Zeichen stehen können.

Beispiel:
select * from key_val_tab where key like '_test%';

Das Beispiel sucht in der Tabelle key_val_tab nach allen Zeilen in denen der Wert der Spalte key mit einem beliebigen Zeichen beginnt, gefolgt von "test" auf das beliebig viele Zeichen folgen.
Was aber, wenn man nach _test (beginnt mit: Unterstrich-test) filtern will?
Man muss aus dem Sonderzeichen "_" ein "normales" Zeichen machen.
Hierfür werden allgemein sogenannte Escape Charactes genutzt, die das auf sie folgende Zeichen vom Sonderzeichen zum normalen Textzeichen machen.
Der bekannteste Escape Character ist das "\".

Vesucht man:
select * from key_val_tab where key like '\_test%';

ist der Erfolg leider nicht eingetreten.

Warum?
Oracle und DB2 kennen kein Standard/Default Escape Zeichen.

Das ist jedoch keine Schwäche im System sondern ein Zeichen von besonderer Flexibilität.
DB2 und Oracle kennen nämlich sehr wohl Escape Zeichen, nur muss man dem System das jeweilige Zeichen bekannt geben.
Dies geschieht durch Anhängen eines "escape '<hier steht das Escape Zeichen>'".
Man kann also beliebige Escape Characters definieren, abhängig davon wie der zu durchsuchende Textinhalt aufgebaut ist.
In einer Umgebung in der zum Beispiel Windos-Pfade (z.B. c:\windos\temp) abgespeichert werden macht die Nutzung von "\" als Escape Charakter wenig Spass, da er permanent selber auftritt.
Hier würde man auf ein anderes Zeichen (z.B. "#") setzen.

Das obige Beispiel würde korrekt so aussehen:
select * from key_val_tab where key like '\_test%' escape '\';

Ohne es selber getestet zu haben: MS-SQL scheint identisch zu Oracle und DB2 zu arbeiten.