Ende November mietete ich mir einen Windows 2008 64 Bit VServer, auf dem ich einige Websites hosten wollte.

Einer der ersten Schritte nach der Freischaltung war die Installation des SQL Server 2008 Express inkl. Management Studio Express.

Nun ja, zumindest versuchte ich dies. Denn leider war weder eine manuelle Installation der SQL Server Express 64 Bit Variante erfolgreich, noch half der Weg über den Web Plattform Installer.

Statt dessen bekam ich folgende Fehlermeldung:

Der Befehlszeilenwert INSTANCESHAREDWOWDIR ist ungültig. Stellen Sie sicher, dass der angegebene Pfad gültig und nicht identisch mit dem Pfad für INSTANCESHAREDDIR ist.

Eine kurze Recherche im Netz ergab, dass dieses Problem auf IA64 Systemen auftritt, wenn man den SQL Server nicht im Standardpfad installiert. Als Abhilfe solle man das INSTALLSHAREDWOWDIR als Befehlszeilenparameter setzen.

Interessant, aber ich habe ein X64 System und wollte im Standardpfad installieren. Also scheint die Ursache doch eine andere zu sein.

Was anschließend folgte, waren endlose Nächte in denen ich versuchte den SQL Server zu installieren. Der Trick mit dem Befehlzeilenparameter brachte mich zwar über die Fehlermeldung, dafür konnte ich dann aber weder das SP1 noch das Management Studio Express installieren. Deinstallieren ging auch nicht mehr, denn auch dann kam die Meldung:

Der Befehlszeilenwert INSTANCESHAREDWOWDIR ist ungültig. Stellen Sie sicher, dass der angegebene Pfad gültig und nicht identisch mit dem Pfad für INSTANCESHAREDDIR ist.

Also hieß es nach jeder erfolglosen Installation erst mal: Windows 2008 Server neu installieren (lassen).

Mittlerweile war ich schon kurz davor aufzugeben. Glücklicherweise fand ich folgende Seite:

http://www.cannontrodder.net/2009/07/24/sql-server-2008-x64-on-windows-server-2008-x64-is-utterly-broken/

Hier hatte jemand das exakt gleiche Problem. Im Gegensatz zu mir hatte er jedoch eine Lösung gefunden, die die Installation des SP1 und des Managent Studios erlaubten.

Alles in allem sah meine Vorgehensweise zur Installation des SQL Servers auf einem nackten Windows 2008 System (außer vorinstalliertem PLESK und der VC++ 2005 Runtime war sonst nix drauf) wie folgt aus:

  1. .NET Framework 3.51 herunterladen und installieren
  2. Powershell als Feature im Server Management aktivieren
  3. SQL Server 2008 Express With Tool 64 Bit herunter laden (SQLEXPRWT_x64_DEU.exe)
  4. Starten des Setups, Verzeichnis in das das Setup entpackt wird notieren
  5. Setup Bildschirm geöffnet lassen, jedoch nichts klicken
  6. Öffnen eines Command-Prompts
  7. Navigation in das zuvor notierte Verzeichnis
  8. Eingeben der folgenden Befehlszeile: setup /action=install /INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server\\" /INSTALLSHAREDWOWDIR="C:\Program Files\Microsoft SQL Server Shared\\"
  9. Wizzard durchklicken
  10. Download des Sql Server 2008 SP 1 64 Bit (SQLServer2008SP1-KB968369-x64-DEU)
  11. Starten des SP 1 Setups (lief ohne Probleme)

Ich hoffe, dass ich anderen, die mit dem selben Problem kämpfen mit diesem Eintrag helfen kann!

An dieser Stelle auch noch mal vielen Dank an die Entwickler und Testabteilung des SQL Server 2008 Setups. Ohne euch hätte ich gar nicht gewusst, was ich an den vielen Abenden machen soll ...


Kick it on dotnet-kicks.de
 
1/22/2010 - 03:56 PM | Comments [0] | Categories: DotNetGerman Bloggers | SQL Server | Tips und Tricks
© Andre Kraemer | RSS/Subscribe Feed your aggregator (RSS 2.0)

Genau: leuchtende Kundenaugen :-)

Diese durfte ich kürzlich wieder sehen. Einer meiner Kunden behalf sich nämlich Jahre lang mit "schmutzigen" Workarrounds um das Feuern von Update-Triggern bei Massenupdates zu vermeiden.

Glücklicherweise ist es jedoch unter dem SQL Server möglich, Trigger bedarfsweise zu deaktiveren / aktivieren.

Für alle, die mit dem selben Problem kämpfen hier zur Referenz:

-- Trigger für Tabelle deaktiveren

ALTER TABLE [MeineTabelle] DISABLE TRIGGER ALL

 

-- Massenupdate durchführen, z. B.

-- update MeineTabelle set Preis = Preis * 1.5

 

-- Trigger wieder aktivieren

ALTER TABLE [MeineTabelle] ENABLE TRIGGER ALL


Kick it on dotnet-kicks.de
 
8/25/2008 - 10:40 PM | Comments [1] | Categories: SQL Server | Tips und Tricks
© Andre Kraemer | RSS/Subscribe Feed your aggregator (RSS 2.0)

T-SQL bietet keine Möglichkeit die Vorkommnisse eines Zeichens innerhalb einer Zeichenkette zu zählen.

Richtig! Nun ja, zumindest fast. Zwar gibt es keine eingebaute Funktion, mit folgendem Konstrukt lässt sich die Anforderung jedoch trotzdem erfüllen:

    1 -- Anzahl der vorkommenden 't' zählen

    2 Select

    3         CompanyName,

    4        len(CompanyName) - len(replace(CompanyName, 't', '')) as Anzahl

    5 from

    6         Customers

Im gewählten Beispiel, welches übrigens auf der Northwind Datenbank ausprobiert werden kann, werden die Anzahl der 't' innerhalb des Felds CompanyName gezählt.

Die Funktionsweise ist recht einfach:

Zuerst wird in Zeile 4 die Länge des Namens ermittelt. Im Beispiel von 'Alfreds Futterkiste' wäre dies 19. Anschließend werden alle 't' innerhalb von 'Alfreds Futterkiste' durch einen leeren Character ersetzt und die Länge von 16 Zeichen ermittelt. Als letztes wird der zweite Wert vom ersten subtrahiert, so dass wir auf unser Ergebnis von 3 kommen.

Eigentlich ganz einfach, oder :-)


Kick it on dotnet-kicks.de
 
8/25/2008 - 10:39 PM | Comments [3] | Categories: SQL Server | Tips und Tricks
© Andre Kraemer | RSS/Subscribe Feed your aggregator (RSS 2.0)

Heute stolperte ich über folgendes Statement:

Select getdate()+1/24 as date

Ziel des Entwicklers war es, die aktuelle Uhrzeit um eine Stunde zu erhöhen.

Leider evaluiert der SQL Server den Ausdruck "1/24" als 0. Abgesehen von ein wenig verschwendeter Rechenzeit hat man also nichts bewirkt :-)

Zum Ziel gekommen wäre er übrigens mit der addDate Funktion:

select dateadd(hh,1,getdate())


Kick it on dotnet-kicks.de
 
3/11/2008 - 12:10 PM | Comments [0] | Categories: SQL Server | Tips und Tricks
© Andre Kraemer | RSS/Subscribe Feed your aggregator (RSS 2.0)