SQL Server 2005, ein anderer Port und das Management Studio Express

Gregor Ottmann | Januar 24, 2008 on 1:01 pm | In .Net, Datenbanken, Know-How | No Comments

Wenn man einen SQL-Server hat, auf dem mehrere Instanzen laufen, kriegt jede Instanz einen eigenen Port. Wenn man nun mit dem Management Studio Express auf eine der Instanzen will, muss der SQL Browser auf dem Server laufen, damit die Kisten untereinander den Zielport auskaspern können. Blöde, dass sogar MS selbst diesen SQL Browser als Sicherheitslücke bezeichnet - was macht man also?

Ganz einfach, man gibt den Port einfach in der DB-URL an, also typischerweise so:

hostname.domain.de:4711\InstanzName

Nein, natürlich nicht. Das wäre ja die Standardnotation, und bekanntlich mag Microsoft keine fremden Standards. Den abweichenden Port muss man deshalb mit einem KOMMA trennen, nicht mit einem Doppelpunkt… Der korrekte Hostname sähe also so aus:

hostname.domain.de,4711\InstanzName

Ja, leckt mich doch… Bis ich das raus hatte, hatte ich mal wieder eine ganze Reihe neuer grauer Haare. Die Rechnung für das Haarfärbemittel schicke ich auf jeden Fall an Microsoft, Abteilung “Anwenderverwirrung”.

Wie man den Default-HTTP-Port der Oracle Express ändert

Gregor Ottmann | März 21, 2007 on 12:13 pm | In Datenbanken, Know-How | 1 Comment

OK, ich ahbe die Oracle Express installiert und ein bisschen rumgespielt, jetzt wollte ich sie mit meinem JBoss koppeln. Kein Problem, wenn man davon absieht, dass sich beide an den Port 8080 binden wollen. Wie man den JBoss umstellt, weiß ich, nur will ich das nicht, also muss die Oracle beiseite rücken - nur wusste ich da bis gerade eben nicht, wie es wohl einzustellen sein mag. Eine flinke Google-Suche brachte mich zu einem Blogpost, der erklärt, wie man http- und ftp-Port der Oracle Express umstellt, und damit ich die URL niemals vergesse, poste ich sie hier im Blog.

Kurzes Zwischenergebnis zur kostenlosen Mini-Oracle: Gefällt mir, wenn man davon absieht, dass dieses SQLPlus-Dings im Vergleich zur MySQL-Konsole ziemlich affig zu sein scheint. Wieso das Teil unfähig ist, “out of the box” korrekte Umlaute auszugeben, ist mir offen gestanden völlig schleierhaft - aber solange der Treiber die richtigen Ös und Üs an meine Webseiten liefert, soll es mir vorerst egal sein. Trotzdem: Weiß vielleicht irgendwer, wie ich disem SQLPlus korrekte Umlaute unter Windows entlocken kann?

Wie Oracle IBM disst

Gregor Ottmann | März 20, 2007 on 10:29 am | In Datenbanken, Vermischtes | No Comments

Ich sehe mir ja derzeit kostenlose Datenbanken mit XML-Dingsbums an, weil ich ganz gerne das MySQL-Bumsdings als Entwicklungsplattform ablösen würde. Gestern habe ich mir DB2-Papers reingezogen, heute schaufle ich mir Oracle in den Kopf - und dabei bin ich auf ein Paper gestoßen, das ich der geschätzen Leserschaft keineswegs vorenthalten will: Einen von Oracle publizierten Vergleich von XML in Oracle 10g mit dem XML-Bingsdums in DB2 (Viper).

Wir alle wissen natürlich, dass man das, was eine Firma über die Konkurrenz schreibt, stets mit der sprichwörtlichen Prise Salz konsumieren sollte. Dennoch ist die Lektüre dieses Papiers lohnend, weil man einen Eindruck davon bekommt, wie die mit dem roten Logo sich im Vergleich zu denen mit den gestreiften Buchstaben positionieren. Abgesehen davon fand ich schon den Untertitel des Papers (”De-Fanging Viper”) recht gut und konnte mir beim Einleitungszitat des ersten Abschnitts ein Grinsen nicht verkneifen:

A viper without fangs is like a rope - indian proverb

Sehr schön. Dabei weiß doch spätestens seit dem Herrn der Ringe wirklich jeder, dass man immer ein Seil dabei haben sollte - das ist im Rucksack viel sympathischer als eine Giftschlange! Wie dem auch sei, ich werde mich mal weiter in die Papers stürzen und eventuell gelegentlich mal berichten, was für eine Meinung ich mir so gebildet habe.

(Ach ja, für diejenigen, die nicht nur den Vergleich, sondern auch die reinen Technikschmankerl wollen, empfehle ich den technischen Überblick über die XML-Features der aktuellen Oracle. Wenn nur die Hälfte von dem, was da steht, tatsächlich so funktioniert, ist das System schon durchaus relativ sehr arg geil.)

Java, XML und IBMs DB2 Express-C

Gregor Ottmann | März 19, 2007 on 3:53 pm | In Datenbanken, Know-How, Tools | No Comments

Wir benutzen in der Entwicklungsphase unserer Software oft die MySQL als Datenbank - aus historischen Gründen, Gewohnheit und Faulheit. OK, das Ding ist einfach in den Griff zu kriegen und nervt im Regelfall nicht, aber der Leistungsumfang haut einen auch nicht gerade aus den Socken. Deshalb sehe ich mich in letzter Zeit etwas um und versuche, eine vernünftige Alternative im kostenfreien Segment zu finden. Besonders interessant finde ich die kostenlosen Spezialversionen der großen Hersteller (IBM, Oracle und Microsoft) - wenn man die in der Entwicklung benutzt, wird die Migration auf die großen Systeme beim Kunden doch gleich viel einfacher.

Heute habe ich mir mal diverse Papiere zu IBMs kostenlosem Datenbankserver namens “DB2 Express-C” angesehen, und da IBM mit den XML-Features dieser Software angibt wie ich mit neuen Spielkonsolen, habe ich natürlich auch mal einen besonders scharfen Blick auf genau dieses Feature geworfen. Genaugenommen auf seine Beschreibung, denn die eigentliche Software loaded noch down - über 500 MB dauern halt eine Weile.

Was soll ich sagen? Wenn der XML-Support nur halb so gut ist, wie die verschiedenen Papers versprechen, könnte ich mich eventuell verliebt haben. Wie ich in dem Artikel über die Benutzung der XML-Fähigkeiten der DB2 bei IBM, der der eigentliche Hauptlink dieses Posts sein sollte, gesehen habe, funktioniert das nämlich alles theoretisch auch mit Java recht gut, und da hatte ich offen gestanden so meine Sorgen. Nun, dann werde ich mal weiter downloaden und dann sehen, ob’s mich wirklich zu beglücken vermag.

Wie MySQL den Character codiert

Gregor Ottmann | Oktober 4, 2006 on 11:21 am | In Datenbanken, Know-How, mySQL | No Comments

Es gibt nur wenige Dinge, die mir so sehr spontanes Grauen verschaffen, wie Umlautprobleme in HTML-Ausgabeseiten. In dem Moment, wo ich mal wieder so ein zerfetztes Unicode-Zeichen im Browser erblicke, wird mir schlecht und meine Darmtätigkeit verfällt sofort in eine Form der Stagnation, die man sonst eigentlich nur im wirtschaftlichen Bereich kennt. Schweiß bildet sich auf meiner Stirn, und die Erholsamkeit des Büroschlafs wird durch Albträume von falsch codierten Umlauten nahezu komplett beseitigt. Oh, ich hasse solche Probleme wirklich.

Zumindest in den Fällen, in denen das Problem letztendlich daran liegt, dass irgendwelcher Kram bei der Speicherung in der Datenbank zerblasen wurde, könnte mir zukünftig der Köhntoppsche Artikel über das Character-Encoding in der MySQL helfen, den ich heute über yigg.de gefunden habe. Zumindest dann, wenn ich mich trotz meiner Phobie dazu durchringen kann, einen Text zu lesen, der sich um dieses fürchterliche Thema dreht, das ich lieber komplett aus meinem Leben verbannen würde… Oder falls ich, was viel einfacher wäre, irgendwen dazu verdonnere, den Kram durchzuarbeiten und in Zukunft jegliches Debugging auf diesem Gebiet zu übernehmen.

Damit bleibt dann noch ein Horrorproblem, das eines Berichts in der BILD durchaus würdig wäre: Encodingprobleme beim Versand von Formularen in HTML-Seiten. Falls irgendwer dazu einen passenden Artikel finden sollte, wäre ich für einen entsprechenden Hinweis in den Kommentaren mehr als nur ein Bisschen dankbar - ich würde dann sofort irgendwen suchen, der sich das durchlesen kann, ohne dabei Angstzustände zu bekommen.

Wie man den MS SQL Server 2005 clustert

Gregor Ottmann | Juli 21, 2006 on 7:41 am | In Datenbanken, Know-How | 1 Comment

Verklumpte Server sind schön, weil nicht gleich alles futsch ist, wenn mal eine der eingeklumpten Kisten die legendäre Blutgrätsche des Todes hinlegt. Leider ist es nicht annähernd so einfach, so ein paar Datenbankserver zu einem Verbund zusammenzuschalten, wie die Werbung es uns hoffen lässt. Nein, dazu gehört durchaus noch etwas Gehirnschmalz, eine ordentliche Portion Geduld, etwas Glück und ein Kasten Cola. Kartoffelchips sind nützlich, aber optional.

Neulich mussten bei uns jedenfalls im Rahmen eines Projekts ein paar MS-SQL-Server zu einem Cluster verklebt werden, und die Sache lief wohl nicht ganz so intuitiv, wie es erhofft wurde. Damit die Probleme beim nächsten Mal nicht ganz so krass werden, schrieb Kollege ABraun freundlicherweise ein HowTo zusammen, und ich als Euer geliebter Reporter und Helfer in der Not habe das Dokument gleich mal abgegriffen. So präsentiere ich Euch mit stolzgeschwellter Brust eine detaillierte Anleitung zur Verclusterung des MS SQL Server 2005 und grüble anschließend eine Weile darüber, wie man wohl “MS SQL Server 2005″ korrekt schreibt, ohne sich der Sünde des Deppenleerzeichens schuldig zu machen. Sachdienliche Hinweise werden gerne in Form von Kommentaren entgegengenommen.

HINWEIS: Im Dokument wird auf ein anderes Dokument, das SKYTEC-HOWTO für NLB-Clustering, verwiesen. Nach dem Dokument wurde schon mehrfach gefragt und ich muss leider sagen, dass dieses NICHT rausgegeben werden kann. Ich habe die Gründe dafür selber nicht ganz verstanden, aber die zuständigen Kollegen bestehen darauf, dass das Ding vertraulich ist, deswegen kann ich es nicht veröffentlichen - Nachfragen ist zwecklos. Nach Aussage des Autors braucht man das andere Paper aber auch nicht wirklich, also ist das wohl halb so schlimm.

Verletzt Hibernate ein Patent?

Gregor Ottmann | Juni 29, 2006 on 11:58 am | In Aktuelles, Datenbanken | No Comments

Wenn man heutzutage eine etwas umfangreichere Java-Applikation baut, kommt man recht oft recht zügig an den Punkt, an dem man Hibernate einbindet - schließlich ist es kein Zeichen besonderer Männlichkeit mehr, wenn man seinen SQL-Code selber schreibt. Zumindest für amerikanische Entwickler könnte der Griff zum Einschläferer aber bald eine Sache werden, die ein komisches gefühl in der Magengegend provoziert, denn angeblich verletzt Hibernate ein Patent.

Mir fällt dazu offen gestanden nur eins ein, nämlich dass Softwarepatente der wohl krasseste Innovationskiller sind, den man sich vorstellen kann. OK, besonders neu ist die Erkenntnis nicht, aber an diesem Beispiel sieht man mal wieder ganz gut, wie schnell es jeden von uns treffen kann…

Geklumpte Daten mit MySQL

Gregor Ottmann | April 25, 2006 on 1:29 pm | In Datenbanken, Know-How | No Comments

Es ist schön, wenn man Daten in einer Datenbank hat, und deutlich weniger schön, wenn sie plötzlich nicht mehr da sind. Der Codierer an sich mag selten damit konfrontiert werden, aber die meisten Admins können sehr interessante Geschichten darüber erzählen, wie spektakulär der Tod einer Festplatte oder gar der eines ganzen Servers sein kann. Ähnlich spektakulär ist übrigens die Verzweiflung des Applikationsinhabers, der in so einem Fall seine Daten retten will - zumindest dann, wenn es kein Backup gab. Von den interessanten Reaktionen der Anwender, die die Anwendung mehr oder weniger lange nicht erreichen können, mag ich gar nicht im Detail berichten, aber ich werfe mal nur ein Wort in den Raum: “spektakulär”.

Nicht jeder schätzt allerdings spannende Events dieser Art, und so gehe ich mal davon aus, dass die beiden folgenden Links zumindest bei denen auf reges Interesse stoßen dürften, die schon mal ein paar Nachtschichten zur Datenrettung geschoben haben. Ich hätte da nämlich ein HowTo für die Einrichtung eines MySQL-Clusters unter Debian Linux sowie einen Artikel über fortgeschrittene Techniken zur MySQL-Replikation anzubieten. OK, selbstverständlich ist das nur was für Weicheier, da echte Männer bekanntlich keine Redundanz brauchen, aber ich zähle mich in dieser Sache ausnahmsweise mal bereitwillig zu jenen, die eher etwas zarter strukturiert sind.

Wie man Objekte in Datenbanken steckt

Gregor Ottmann | März 31, 2006 on 7:36 am | In Datenbanken, Know-How | 1 Comment

Durch die Verwendung von Toolkits und Frameworks kann man sich das Leben gewaltig erleichtern: Statt stundenlang darüber nachzudenken, wie irgendein blödes Objekt in die Datenbank geschrieben werden soll, stopft man es einfach in Hibernate und kann davon ausgehen, dass schon irgendwelche sinnvollen Informationen in der DB landen werden. Ich kann gar nicht ausdrücken, wie genial ich das finde, nachdem ich den größten Teil meines PHP-Lebens damit verbracht habe, pseudo-objektorientierte Strukturen in einer Pseudo-SQL-Datenbank abzubilden…

Trotzdem: Manchmal sollte man einfach wissen, wie sowas geht. Beispielsweise dann, wenn man für einen Kunden arbeitet, der Hibernate aus irgendeinem Grund ablehnt. Oder wenn man gezwungen ist, mit einer Sprache zu arbeiten, für die es keine guten, freien O/R-Mapper gibt. Oder natürlich dann, wenn man der Ansicht ist, dass man keine Tools verwenden soll, wenn man nicht verstanden hat, wie sie unter der Haube funktionieren.

Für diesen informatorischen Ernstfall sollte man sich den Artikel über die Abbildung von Objekthierarchien auf Datenbankstrukturen, von dem mir PFuchs berichtet hat, in die Bookmarks stecken, was im übrigen ganz ohne O/R-Mapping machbar ist, da Bookmarks keine besonders komplizierte Struktur haben.

Hibernate mit Caching beschleunigen

Gregor Ottmann | März 17, 2006 on 10:36 am | In Datenbanken, Know-How | No Comments

Caching ist gut - wer mag schon jedesmal zum Telefonbuch greifen, wenn er eine Nummer braucht, die er ständig wählt? Nein, da verwendet man lieber einen First-Level-Cache und merkt sich die Nummer oder greift auf einen Second-Level-Cache zu, was soviel bedeutet wie eine PostIt-Notiz mit der Nummer am Monitor. So kriegt man die Telefonnummer schneller, wählt früher und kommt pünktlich zum Abendessen heim. Wählst Du noch oder isst Du schon?

Wenn man dieses Vorgehen bei Telefonnummern sinnvoll findet, sollte man es doch eigentlich auch anwenden, wenn man eine Datenbank benutzt, oder? Gerade dann, wenn man nicht nur kleine Queries abschießt, sondern stattdessen mit Hibernate große Anfragen konstruiert, sollte man an Zugriffen sparen, wo es nur geht. Dummerweise haben Optimierungen ohne Fachwissen gewisse Gemeinsamkeiten mit in Richtung Fuß abgefeuerten Waffen, folglich sollte man schon wissen, was man tut.

Für Einsteiger in dem Bereich empfehle ich das Tutorial zur Benutzung von Second-Level-Caches mit Hibernate, von dem mir PFuchs berichtet hat. Die Ergebnisse, die da in den Benchmarks auftauchen, sprechen eigentlich für sich - Optimierungen im 400%-Bereich für einfachste Anfragen haben eine gewisse Attraktivität, der man sich nur sehr schwer entziehen kann, sofern man nicht gerne sehr oft Kaffee kochen geht, während man eine Website lädt. Allerdings habe ich den Eindruck, dass am ersten Beispiel etwas nicht stimmt: Sofern mich nicht alles täuscht, ist im ersten dort dargestellten Hibernate-Mapping das Caching bereits aktiviert, obwohl es das nicht sein sollte.

Nächste Seite »

Entries and comments feeds. Valid XHTML and CSS. ^Top^

xml :RSS2-Feed