Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

30. Juli 2008 um 00:08

SQL-Server-2008 versus Oracle-11g

Als ich auf das Whitepaper von Microsoft stieß war ich natürlich ungeheuer gespannt welches System bei diesem neutralen und unabhängigen Vergleich besser anschneidet… 😉

"SQL Server 2008 Compared to Oracle Database 11g"

Die große Überraschung steht schon in der Zusammenfassung: SQL-Server ist in allen Punkten besser.

Microsoft SQL Server has steadily gained ground on other database systems and now surpasses the competition in terms of performance, scalability, security, developer productivity, business intelligence (BI), and compatibility with the 2007 Microsoft Office System. It achieves this at a considerably lower cost than does Oracle Database 11g.

Schade, dass hier nicht wenigstens im Ansatz eine differenzierte Betrachtung durchgeführt wurde. Die hätte mich tatsächlich interessiert. Man hätte ja wenigstens erwähnen können, das Oracle auf mehr Plattformen läuft. Stattdessen wird "Windows-Server-2008 versus Linux" auch gleich mit in den Vergleich einbezogen. Vermutlich gibt es auch noch ein paar andere Dingen in denen Oracle die Nase vorn hat.

Meiner Ansicht nach eignet sich das Papier nur dafür Pluspunkte zu sammeln, falls man sich nachträglich für seine Entscheidung für SQL-Server rechtfertigen muss.

22. Juli 2008 um 18:56

Auf welchen Systemen läuft der SQL-Server?

Neulich stellte ich doch die Frage, ob der SQL-Server auch auf den neuen Netbooks läuft… Wie sich herausstellte ist das zwar eigentlich eine technische Frage, die aber juristisch beantwortet werden kann…

Im Handbuch zum SQL-Server-2005 sind mehr oder weniger genau die die Voraussetzungen für einen Support beschrieben:

Die SQL Server 2005-Software kann auf Hardware ausgeführt werden, die für die Verwendung des Betriebssystems Microsoft zertifiziert ist. Weitere Informationen zu der für die Verwendung mit dem Betriebssystem Windows zertifizierten Hardware finden Sie auf dieser Microsoft Website: Products Designed for Microsoft Windows – Windows Catalog and HCL (in Englisch).

Wenn man dem Link folgt, dann sieht man, dass zum Beispiel der HP 2133 (mit VIA CPU) für Windows XP designed wurde und daher der SQL-Server darauf supported wird. Details hier (der Inhalt ist nur sichtbar, wenn man einen politisch korrekten Browser aus Sicht von Microsoft einsetzt). Der Asus Eee PC (mit Intel Atom CPU) ebenfalls, er steht nur unter einen anderen Category.

Ob dabei dann aber Fehler auftreten oder nicht, muss man aber wohl selber herausfinden. Ich sehe schon wie die armen Softwarenentwickler ihre Chefs bearbeiten, um solche Testgeräte anschaffen zu dürfen. 😉

21. Juli 2008 um 18:35

Windows-Logo-Zertifikat mit SQL-Server erst ab CU8

Ich musste mich nun etwas mit dem Windows-Logo-Zertifikat beschäftigen. Daher fiel mir heute ins Auge, dass es da mit dem SQL-Server ein Problem gibt. Das betrifft freilich nur Firmen, die ihre Software zertifizieren wollen.

Das Problem ist im Artikel "FIX: SQL Server 2005 Express Edition cannot pass the Windows logo certification when you install an ISV application on a Windows Vista-based computer or on a Windows Server 2008-based computer" beschrieben: Wenn eine Software den SQL-Server (Express-Edition) mitbringt, dann fällt sie durch den Windows-Logo-Test. Erst ab CU8 besteht der SQL-Server diesen Test…

Spannend, oder?

18. Juli 2008 um 18:32

Der ist von uns…

Als ich heute mal wieder die aktuellen KB-Artikel zum SQL-Server checkte fiel mir der Artikel ins Auge: "FIX: When you use SQL Native Client to retrieve data from a column of the sql_variant data type in SQL Server 2005, an incorrect data type is returned".

Der Fehler ist von uns. Sogar das Repro ganz unten ist von uns! Mein Kollege Erich hat den Hotfix durchgeboxt…

17. Juli 2008 um 20:29

SQL-Server mit Solid-State-Disks

Neulich las ich in dem SQL-Server-Magazin den sehr interessanten Artikel "Solid State Storage For SQL Server " (frei zugänglich). Dort wird beschrieben in welchen Situationen sich Solid-State-Disk lohnen. Die Tipps stammen meist aus einem Artikel von dem genannten Hersteller. Die Tipps leuchten mir teilweise ein (z.B. TempDB und Tranlogs auf die SSDs).

Deswegen habe ich mal geschaut, wie weit die Technologie ist. Und ich war sehr erstaunt. Das scheien ja echte RAID-Systeme zu sein. Beispiel ist die "RamSan-500". Das sagt der Hersteller darüber:

The World's Fastest Storage®
Cached Flash RAID for the Enterprise.
1TB to 2TB Flash RAID.
16GB to 64GB DDR Cache.
100,000 random I/Os per second sustained (reads from flash)
2 GB per second sustained bandwidth (to flash)
Full array of hardware redundancy to ensure availability.

Leider fand ich keine aktuelle Angabe was so ein Teil wohl kosten könnte. Vor fast einem Jahr war das der Preis:

Until now, a RamSan-400 cost approximately $90,000 for a base unit with 128GB of RAM–more than $700 per gigabyte. A RamSan-500 in a 2TB configuration, however, can be purchased for less than $300,000, which is $150 per gigabyte.

Selbst wenn sich der Preis inzwischen halbiert haben sollte, dann bewegt sich das noch in solchen Regionen, dass unsere Kunden sich das sicher nicht kaufen werden…

10. Juli 2008 um 21:56

XML im SQL-Server: Links zum Thema

Als ich Dienstag Abend den Vortrag "XML im SQL-Server" hielt, machte mich Klaus auf eine gute Einsteiger-Serie zum Thema XML aufmerksam: Die Webcasts von Dirk Primbs und Frank Fischer.

Hier noch ein paar Links, falls sich jemand autodidaktisch einarbeiten will:

Viel Vergnügen beim Stöbern!

9. Juli 2008 um 20:56

SQL-Server: DBCC findet nicht alle Probleme

Vor einigen Monaten diskutierten wir mit Microsoft, weil unsere Kunden mehrere defekte Datenbanken hatten, die "unsere" Prüfung mittels DBCC CHECKDB nicht als defekt erkannte. Wenn ein Zugriff auf die Spalten über einen Index erfolgte, dann kam eine Fehlermeldung. Das passiert immer dann, wenn eine Statistik korrupt ist.

Wir wollten, dass die Kollegen in Redmond das DBCC so erweitern, dass diese Probleme ebenfalls erkannt werden. Stat dessen haben sie das verhalten jetzt im KB-Artikel 954467 beschrieben. Den Trick mit dem DBCC SHOW_STATISTICS verrieten sie uns damals nicht, aber so richtig doll ist das ja auch nicht. Eine echte Prüfung wäre schon schöner… 😉

7. Juli 2008 um 00:10

Nürnberg: XML mit SQL-Server

Morgen am 8.7.2008 gibt es in Nürnberg aktuelle Infos zu XML im SQL-Server. Den Vortrag halte ich. Er wird von der SQL-Pass Franken veranstaltet, der örtlichen SQL-Server-Anwendergruppe. Ich bringe jede Mange BEispiele zu vielen verschiedenen Aspekten mit. Welche Themen ich dann vertiefe, entscheiden wir vor Ort.

Wie immer ist der Eintritt kostenlos und hat auch sonst keine unangenehmen Nebenwirkungen. Bisher waren die Referenten sehr gut, aber natürlich kann jede Serie einmal abreißen… 😉 Aber wenigsten so interessant wie die Infos des Referenten sind in der Regel die Erfahrungen/Diskussionsbeiträge der Teilnehmer! Danach gibt es immer genug Möglichkeiten um sich auszutauschen und Kollegen kennen zu lernen.

Weitere Infos gibt es hier.

5. Juli 2008 um 12:49

Security-Hotfix für SQL-Server

Erstmals seit Juli 2003 gibt es wieder einen Security-Hotfix für den SQL Server. Der Fehler wird aber nicht als "critical", sondern bloß als "important" eingestuft. Wenn ich es richtig sehe, dann ist jede Version des SQL-Servers betroffen, die noch unterstützt wird! Die Liste seht im Dokument "Microsoft Security Bulletin Advance Notification for July 2008" im Abschnitt "Affected Software". Das Problem besteht darin, dass jemand sich höhere Rechte erschleichen kann, als er sollte ("Elevation of Privilege").

Die Detailinformationen wird Microsoft leider erst am 8.7.2008 veröffentlichen. Bei ENTmag.com fand ich dennoch schon einige Details:

The first important fix addresses an elevation-of-privilege problem in SQL Server. Hackers can gain back-door access into the database and change fields to configure user access parameters, giving themselves superuser or unlimited access to run amok on a network.

In the last week of June, Redmond issued a security advisory pertaining to certain components of SQL Server, citing a recent "escalation in a class of attacks targeting Web sites" and using the database application as an incursion vector. […]

The SQL patch affects Windows 2000 Service Pack 4 and Windows Server 2003 (SP1 and SP2), including 64-bit editions. Windows Internal Database (WYukon) is also affected as the patch relates to all versions of Windows Server 2008 except for Itanium-processor-based systems.

Das klingt so richtig garstig. Schade, dass damit die Serie der Jahre ohne Security-Hotfix für SQL-Server gebrochen ist. Echt sch…

2. Juli 2008 um 00:10

SQL-Server: Liste der internen Systemtabellen

Mit der Version 2005 hat Microsoft ja bekanntlich die Systemtabellen im SQL-Server umgebaut und versteckt. Man kommt nun eigentlich gar nicht mehr dran.

Aber wenn man beim SQL-Server-2005 die Liste der internen Systemtabellen sehen will, dann geht das immerhin ganz einfach:

SELECT O.object_id
, SCHEMA_NAME(O.schema_id)
+'.'+[name] AS "internal system table"
FROM sys.objects AS O
WHERE O.type=N'S'
ORDER BY O.object_id;

Und so sieht das Ergebnis aus:

object_id internal system table
4 sys.sysrowsetcolumns
5 sys.sysrowsets
7 sys.sysallocunits
8 sys.sysfiles1
13 sys.syshobtcolumns
15 sys.syshobts
25 sys.sysftinds
26 sys.sysserefs
27 sys.sysowners
28 sys.sysdbreg
29 sys.sysprivs
34 sys.sysschobjs
39 sys.syslogshippers
41 sys.syscolpars
42 sys.sysxlgns
43 sys.sysxsrvs
44 sys.sysnsobjs
45 sys.sysusermsgs
46 sys.syscerts
47 sys.sysrmtlgns
48 sys.syslnklgns
49 sys.sysxprops
50 sys.sysscalartypes
51 sys.systypedsubobjs
54 sys.sysidxstats
55 sys.sysiscols
56 sys.sysendpts
57 sys.syswebmethods
58 sys.sysbinobjs
60 sys.sysobjvalues
64 sys.sysclsobjs
65 sys.sysrowsetrefs
67 sys.sysremsvcbinds
68 sys.sysxmitqueue
69 sys.sysrts
71 sys.sysconvgroup
72 sys.sysdesend
73 sys.sysdercv
74 sys.syssingleobjrefs
75 sys.sysmultiobjrefs
76 sys.sysdbfiles
78 sys.sysguidrefs
80 sys.syschildinsts
90 sys.sysqnames
91 sys.sysxmlcomponent
92 sys.sysxmlfacet
93 sys.sysxmlplacement
94 sys.sysobjkeycrypts
95 sys.sysasymkeys
96 sys.syssqlguides
97 sys.sysbinsubobjs

Und was man damit machen kann, beschrieb ich neulich ja schon… 😉

1. Juli 2008 um 18:56

SQL-Server mag keine VIA- and Transmeta-CPUs

Microsoft gibt zu, dass der SQL-Server Probleme mit "VIA Eden CPUs and Transmeta CPUs" hat:

The computer on which you try to install SQL Server Express or SQL Server Express with Advanced Services is equipped with a CPU that does not support cache prefetching.

The affected CPUs include VIA Eden CPUs and Transmeta CPUs. Typically, these CPUs are used in devices when low power consumption, low heat, or low noise is important.

Aber wie mir mein Kollege Robert sagte, trifft das wohl auch auf modernen VIA-CPUs zu. Die CPU muss schon Cache-Prefetching unterstützen, damit man dort eine SQL-Server-Express-Edition einsetzen kann. Das ist ziemlich schade, weil ja gerade wieder die ganz kleinen Laptops auf dem Vormarsch sind. Mein Kollege erzählte mir das bestimmt schon vor einem Jahr. Aber erst jetzt, nachdem im Fahrwasser des Eee-PC mehrere Hersteller Mini-Laptops mit solchen CPUs raus bringen, wird es wieder für uns relevant. Ein Beispiel ist HPs 2133, dass sich mit seiner vergleichsweise guten Ausstattung offenbar gerade an Geschäftskunden wendet. Die deutschen One-Mini-Laptops haben auch eine VIA-CPU und werden – wenn ich es richtig in Erinnerung habe – in der aktuellen c't beschrieben.
VIA selber bietet ja sogar ein Referenzdesign an, mit dem Laptophersteller recht einfach solche Mini-Laptops entwerfen können.

Damit eignet sich diese Art der Mini-Laptops möglicherweise nicht für (professionelle) Anwendungen, die den SQL-Server als Datenhaltung einsetzen. Das wäre echt schade. Hat jemand schon Erfahrungen mit so einem Netbook und dem SQL-Server gesammelt?

29. Juni 2008 um 13:09

SQL-Server: Auf interne System-Tabellen direkt zugreifen

Neulich beschrieb ich, wie wir ein Problem in den seit SQL-Server-2005 versteckten Systemtabellen mittels dem Hex-Editor lösten. Mittlerweile las ich bei Paul Randal, wie man die Systemtabellen nicht nur mittels SELECT lesen, sondern auch ändern kann – echt krass.

Ursprünglich wurde das übrigens von Laurentiu Cristofor beschrieben. Ich nehme an, Paul muss jetzt – da er nicht mehr bei MS arbeitet – aufpassen, dass er nur Dinge ausplaudert, die schon irgendwo veröffentlicht wurden, sonst würde er nicht bei jedem Kikifitz eine öffentliche Quelle angeben… 😉

  1. Den SQL-Server im Single-User-Modus starten (-m).
    Meiner Ansicht nach am einfachsten mit dem "SQL Server Configuration Manager" (aus "Start | Alle Programme | Microsoft SQL Server 2005 | Configuration Tools"): SQL-Server-Dienst doppelklicken, "Eigenschaften", dritten Reiter ("Advanced") auswählen, in der Liste "Startup Parameters" doppelklicken und da am Ende ";-m" ergänzen. Jetzt den Dienst neu starten.
  2. Mittels Dedicated-Admin-Connection (DAC) zum SQL-Server verbinden ("-A" beim sqlcmd.exe).

Und schon kann man die internen versteckten Systemtabellen zugreifen und ändern… 😀
Danach muss man nur noch den Single-User-Modus für den SQL-Server wieder rausnehmen und den Dienst neu starten. Ist das gut?

Risiken und Nebenwirkungen

Microsoft hatte übrigens gute Gründe den Zugriff auf diese Tabellen zu verhindern. Wer also nicht genau weiß was er tut, der sollte es lassen. Man kann eine Datenbank damit sehr gründlich zerstören. 🙁