Installation des SQL Servers

Ich führe die Schritte für eine einfache Microsoft SQL-Sever Installation mit der frei verfügbaren SQL-Express Variante auf. Ich verwende dabei SQL Express 2008. Für folgende Versionen(2012, etc.) sollte die Vorgehensweise nicht sonderlich abweichen.

Die Installation kann mit einer Reihe von Installationspaketen vorgenommen werden, die auf unterschiedlichen Seiten im Web-Angebot Microsofts aufgeführt werden. Im Installationsumfang sollte das SQL-Server Management Studio enthalten sein, da mit ihm eine Reihe von Aufgaben deutlich komfortabler zu erledigen sind, als mit einer einfachen Kommandozeile. Üblicherweise sind dies Installationspakete, die den Namen „… with tools“ tragen.

Gemischte Authentifizierung und Name des Servers

Im Verlauf der Installation wird nach der Authentifizierungsmethode gefragt (Windows- oder gemischte Authentifizierung; bei letzerem sind SQL und Windowsauthentifizierung möglich). Hier ist gemischte Authentifizierung zu wählen. Diese Einstellung kann aber auch nachträglich im SQL Server Management Studio geändert werden (auf der linken Seite; den SQL Serverknoten auswählen; Eigenschaften; im Dialog Security/Sicherheit wählen; Server Authentifizierung).

Der Name des Servers kann während der Installation geändert werden. Es ist auch möglich, keinen Namen zu vergeben und einen namenlosen SQL-Server zu installieren. Beides ist möglich, ich gehe in der Folge aber davon aus, dass der Standardname(bei der frei verfügbaren SQL-Version ist es SQLEXPRESS) beibehalten wird. Ändert man den Namen, so ist dies in den folgenden Schritten entsprechend zu beachten.

Dienste und Protokolle

Nach der Installation kann man über das Startmenü den Ordner „Microsoft SQL Server 2008“ erreichen. Dort befindet sich im Ordner „Configuration Tools“ das Programm „SQL Server Configuration Manager“. In der deutschen Fassung dürften entsprechende Namen auftauchen. Auf der linken Seite kann man zwischen unterschiedlichen Kategorien wählen.

Als erstes betrachtet man die SQL Server Services/Dienste. Auf der rechten Hälfte des Fensters sollten wenigstens die Dienste „SQL Server“, „SQL Server Agent“ und „SQL Server Browser“ erscheinen. Der SQL Server ist das eigentliche Datenbanksystem, der Server Browser ordnet bei Anfragen von außen den SQL-Servernamen den entsprechenden Dienst zu. Der SQL Serverdienst sollte also immer laufen, andernfalls gibt es kein aktives Datenbanksystem. Der Server-Browser kann bei Einzelplatzinstallationen laufen. Er muss laufen, falls von anderen Rechnern auf den SQL-Server zugegriffen werden soll. Bei mir läuft der SQL-Server Dienst unter der Anmeldung LocalSystem und der Browser unter LocalService. Beide Dienste werden automatisch gestartet.

Auf der linken Seite kann man jetzt zu SQL Server Network Configuration wechseln. Dort gibt es für jeden SQL-Server dann einen Knoten, in dem die Protokolle versammelt sind. Bei mir gibt es nur einen Ordner namens „Protocols for SQLEXPRESS“, da ich nur einen SQL Server betreibe. Nach Wahl des Knotens erscheinen rechts die verfügbaren Protokolle. Bei mir sind es: Shared Memory, Named Pipes, TCP/IP und VIA. Von diesen sind Shared Memory und TCP/IP aktiviert. Änderungen können über den Eigenschaftendialog erfolgen, der über das Kontextmenü/rechte Maustaste aufgerufen werden kann.

Firewall

Falls es eine Firewall gibt und das System nicht nur als Einzelplatz dient, müssen Ausnahmen für den SQL-Server und den SQL-Server Browser eingetragen werden. Zum einen muss das eigentliche Serverprogramm sqlservr.exe von der Überwachung freigestellt werden. Dies befindet sich bei mir im Ordner C:\Program Files\MicrosoftSQL Server\MSSQL10.SQLEXPRESS\MSSQL\Binn\sqlservr.exe. Je nach Installation und Betriebssystem kann es auch unterhalb von Program Files X86 liegen oder der Ordnername MSSQL10.SQLEXPRESS entspricht der tatsächlichen Installationsvariante. Zum anderen muss eine Ausnahme für den SQL-Serverbrowser eingerichtet werden. Unter Windows 7 muss dafür unter erweiterte Einstellungen eine neue „eingehende Regel“ geschaffen werden. Der Browser-Dienst nimmt Anfragen auf dem UDP-Port 1434 entgegen, im Dialog ist also unter Protokoll „UDP“ und unter Portnummer „1434“ einzutragen. Der Regel kann ein freiwählbarer Name gegeben werden, man sollte aber etwas Sinnvolles wie „SQL Serverbrowser“ benutzen.

Migration/Restore von fremden Systemen

Falls der Datenbestand von einem System auf ein anderes transferiert werden soll und man die Möglichkeit hat ein Backup zu erstellen, so ist dies die bevorzugte Vorgehensweise. Es ist aber auch möglich die verwendeten Dateien von einem System auf ein anderes zu kopieren. Dabei sollte aber darauf geachtet werden, dass der SQL-Server auf dem Quellsystem während des Kopiervorgangs deaktiviert oder die entsprechende Datenbank offline gesetzt wird, da es sonst zu Datenfehlern kommen kann. Der übliche Platz der Dateien ist das DATA Verzeichnis unterhalb des SQL-Installationspfads, bei mir beispielsweise C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA. Die Dateien haben meist den Namen der entsprechenden Datenbank und gliedern sich nach Datenbestand(.mdf) und Veränderungsbuchführung(.log). Für die CAS-Datenbank sind es also cas.mdf und cas.log. Falls die Dateien auf dem Zielsystem in den vergleichbaren Ordner kopiert werden, so ist darauf zu achten unter Umständen den Besitzer auf SYSTEM zu ändern. Es kann andernfalls zu esoterischen Fehlerzuständen kommen. Der Weg über Backup/Restore ist vorzuziehen, da dann das Managementstudio die Änderungen vornimmt.

Die Wiederherstellung erfolgt über das SQL Server Management Studio. Man wählt den ersten Knoten unterhalb des SQL-Serverknotens(der selbst der oberste, also der Wurzelknoten ist) mit Namen Databases/Datenbanken an und wählt aus dem Kontextmenü/rechte Maustaste“ Restore Database“(bei Backup) oder „Attach“(bei kopierten Dateien). Für das Restore ist im Folgenden Dialog das Backupfile auszuwählen, für das Attach die .mdf und .log Dateien. Als Datenbankname ist cas einzutragen. Nach erfolgreichem Transfer sollte unterhalb des Databases-Knotens jetzt ein Knoten namens „cas“ auftauchen. Unter Umständen hilft auch ein Refresh der Ansicht(beispielsweise mit dem kleinen Refresh Button unmittelbar oberhalb dieser Strukturansicht).

Es sollte jetzt noch eine Anmeldung/Login erstellt werden. Ausgehend vom obersten Knoten(dem SQL Server) ist der Security/Sicherheit Knoten zu wählen. Dort findet sich ein Knoten namens Logins/Anmeldungen. Per Kontextmenü kann dort ein neuer Login erstellt werden. Im Dialog sollte als Login-Name „cas“ eingetragen werden. Man wählt SQL-Serverauthentifizierung und deaktiviert die Kennwortrichtlinien. Das Passwort erfragen Sie bitte bei uns. Als Defaultdatenbank wird cas gewählt. Nach dem Schließen des Dialogs sollte die cas Anmeldung sichtbar sein. Nun wählt man die cas Datenbank und öffnet eine „neue Abfrage“ über das Kontextmenü oder den Toolbutton unterhalb der Menüzeile. Man erhält ein neues Texteingabefenster und eine Reihe von Befehlsbuttons unmittelbar darüber. Der Knopf mit dem roten Ausrufezeichen führt das Skript im Textfenster aus. Daneben befindet sich eine Auswahlbox, die bestimmt, auf welcher Datenbank die Befehle ausgeführt werden. Die Auswahlbox sollte den Wert cas anzeigen. Im Textfenster ist jetzt die folgende Zeile einzutragen(ohne Anführungszeichen): „ALTER USER [cas] WITH LOGIN=[cas]“. Dieses Einzeilenskript kann mit dem Execute/Ausführen Knopf ausgeführt werden. War dies erfolgreich, kann man auf der linken Seite zum Benutzerknoten unterhalb des Sicherheitsknoten der cas Datenbank wechseln(also vom obersten Knoten starten, Databases, cas, security, users). Dort sollte sich ein Nutzer namens cas befinden, dessen Eigenschaftendialog jetzt folgende Eigenschaften anzeigen sollte: Name ist cas, Anmeldename/login name ist cas, Default schema ist dbo(oder cas) und Rollenmitgliedschaften sind db_datareader und db_datawriter.

Zusammenfassung/Fehlerbehebung

Das sollte es gewesen sein. Kurzfassung: die SQL-Serverdienste laufen; die Protokolle sind aktiviert; die Firewall ist deaktiviert oder angepasst; die Datenbank ist erstellt oder kopiert/wiederhergestellt; es gibt eine Anmeldung namens cas, für welche die SQL-Serverauthentifizierung gewählt wurde; der Nutzer cas verweist auf die Anmeldung cas. Als letzter Schritt ist die Ini-Datei der Audiometrieanwendung anzupassen. Dort sollte es einen Eintrag „ADODataSource“ im Abschnitt „[\Software\AudioDATA\CASAD17\2.0]“ geben(meist die ersten Zeilen in der Datei). Dort sind Server-/Rechnername und SQL-Servername einzutragen. Bei mir ist es beispielsweise die Zeile „ADODataSource=STRI:Hyperion-Vista\SQLExpress“, wobei „Hyperion-Vista“ für den Rechner steht und SQLExpress der Name des SQL Servers ist.

Falls es wider Erwarten nicht funktioniert, so sollte man als ersten Schritt den SQL-Server oder den Rechner neustarten, um sicher zu stellen, dass die Änderungen auch umgesetzt wurden. Falls es auch dann nicht funktioniert, kann man folgende Schritte abgehen, um gewisse Aussagen machen zu können.

Beim Start des SQL-Server Management Studios erscheint ein Dialog, mit dem die Anmeldeinformationen erfragt werden. Die Standardeinstellungen sind bei mir: Server Type: Database Engine; Servername: Hyperion-Vista\SQLExpress (bzw. die Rechner/SQL-Serverkombination); Authentication: Windows-Authentication. Ausgegraut taucht dann noch der Nutzername auf, bei mir „Hyperion-Vista\kriedeb“. Die Einstellungen in diesem Dialog sind wie folgt zu ändern: der Servername sollte exakt dem Wert in der Ini-Datei entsprechen und die Authentifizierung sollte auf SQL-Serverauthentifizierung gesetzt werden. Als Anmeldung werden dann „cas“ und dessen Passwort verwendet. Der Dialog wird mit OK geschlossen. Falls es hier schon Probleme gibt, ist die Anmeldung nicht korrekt.

Funktioniert diese Art der Anmeldung und es handelt sich um ein Client-Server System, kann man als folgenden Schritt versuchen, die Anwendung auf dem Server-Rechner zu starten. Funktioniert die Verbindung mit der Datenbank, falls Anwendung und SQL-Server auf dem gleichen Rechner sind, scheitert jedoch bei einem Zugriff über einen Fremdrechner, kann es an der Firewall, den Protokollen oder einem inaktiven Browser-Dienst liegen.

Bestehen die Probleme weiterhin, ist mir als Einstieg die entsprechende Log-Datei des SQL-Servers zu übermitteln(SQL Server Management Studio, Management, SQL Server Logs).