21.05.2002

Der SQL-Server legt immer beim Erstellen einer Datenbank mindestens 2 Dateien an, eine Daten- und eine Log-Datei. Diese haben eine vorher fest eingestellte Groesse, welche sofort beim Erstellen reserviert wird. Legt man also eine Datenbank mit 4MB an, ist es dem SQL-Server egal, wie gross deren Inhalt ist, sofern er nicht die max.-Groesse ueberschreitet. Die Datendatei ist sofort 4MB gross. Im Gegensatz zu aelteren Systemen wird unter SQL2000 die Datenbank automatisch vergroessert, wenn der Inhalt waechst. Dabei ist es moeglich, die Daten auf mehrere Festplatten zu verteilen. In SQL2k heissen diese Dateien Datendateien, in SQL7.0 und aelter ist stattdessen von Medien die Rede.
Die Endung fuer die Datendatei heisst .mdf, die fuer die Log-Datei heisst .ldf . Standardmaessig ist im SQL-Server eine Master-Datenbank, welche die Zentrale fuer alle anderen Datenbanke darstellt, angelegt. Diese ist sogar fuer die Speicherbereichzuteilung der anderen Datenbanken, Konfigurationseinstellungen und Anmeldekonten zustaendig. Die TempDB speichert u.a. temporaere Tabellen, Prozeduren etc. ab. Die Model-DB ist eine Vorlage fuer Neuerstellungen, welche allerdings veraenderbar ist. Die MsDB wird vom ServerAgent benutzt, und zwar fast ausschliesslich nur fuer Planung von Wartungsauftraegen. Weiterhin werden dort Warnungen gespeichert. Sie enthaelt also minimale Informationen.

Informationen im allgemeinen werden in sog. Bloecken und Seiten gespeichert. Aehnlich wie beim Dateisystem NTFS. Allerdings mit folgendem Unterschieden. Ein Block ist 64kB, eine Seite 8kB gross. Einheitliche Bloecke koennen nur ein Objekt speichern, wohingegen gemischte Bloecke bis zu 8 Objekte speichern koennen. Allerdings benoetigt diese Teilung der Bloecke ziemlich viel Ressourcen auf dem jew. Server. Jeder Block hat einen Header von max. 96 Byte.
Die Informationen in einer Seite koennen genau 8060 Byte gross sein. Indizes legen die Speicherreihenfolge der Seiten fest.

Datenbankstruktur und -Objekte:

Tabelle
Sichten
Indizesphysisch in Reihenfolge gespeichert
Schluesselsetzen Beziehungen
Benutzerdef. Datentypen
gespeicherte ProzedurenSQL-Skripte, die abgerufen werden
EinschraenkungenRegeln fuer eingegebene Daten
Standardsverwendete Werte
TriggerAusloeser
Benutzerdef. FunktionenAdd. von Sichten und Prozeduren (max 1024 Eingabeparameter)

Es gibt mehrere Moeglichkeiten, um sich am SQL-Server zu authentifizieren. Bei der NT-Authentifizierung werden die zwischengespeicherten Anmeldedaten an dem Rechner einfach an den SQL-Server uebergeben. Ich brauche also nur Rechte auf Gruppen oder User zu vergeben, die an dem SQL-Server arbeiten duerfen. Bei der Server-Authentifizierung werden alle Rechte auf der SQL-Server-Ebene verwaltet, und zwar mit eigenen Konten und eigener Gruppenstruktur. Der Sinn ist eine Anmeldung ausserhalb der Domaene. Damit wird natuerlich auch die Sicherheit in Frage gestellt. Im gemischten Modus werden beide Anmeldebetriebsarten gewaehlt. Der SQL-Server 2000 kennt allerdings nur den gemischten und den NT-Authentifizierungsmodus.
Um sich fuer NT-Authentifizierung zu entscheiden, sollte man sich im Klaren sein, dass alle User in der Domaene gleichzeitig Zugriff auf den SQL-Server haben, allerdings sich die Verwaltung vereinfachen laesst. Zudem haben nur User innerhald der Domaene und deren vertrauenden Domaenen Zugriff. Fuer den gemischten Modus ist allerdings kein Computerkonto erforderlich, um auf den SQL2k-Server zuzugreifen. Zudem kann man die Benutzerrechte explizit vergeben.
Auf dem SQL-Server werden, aehnlich wie bei Gruppen unter NTFS, Rollen vergeben, welche bestimmte Rechte besitzen. Standardmaessig werden User zur Rolle Public hinzugefuegt. Zusaetzlich hat jede DB ein guest-Konto, welches allerdings deaktiviert ist.

Als wichtigste Installationsoption gilt, dass man keine Plattencontroller mit Cache benutzen sollte, wenn man Datenverluste vermeiden moechte.
Bei der Installation wird uns die Moeglichkeit gegeben, ein lokales Systemkonto mit Administratorrechten zu nutzen. Diese Moeglichkeit ist definitiv nicht zu empfehlen, da sich damit kein Dienst verbinden laesst, der ueber das Netzwerk laeuft. Zum anderen kann man selbst nur vor dem Rechner sitzend arbeiten.
Die Empfehlung ist, ein Domaenenbenutzerkonto einzurichten, womit alle SQL-Server in der Domaene arbeiten koennen. Dieses Kono benoetigt nur Systemanmeldungen, es muss weder ein lokaler noch ein Domaenenadministrator sein. Zu beachten ist allerdings, dass der User beim Einrichten des Kontos nicht existieren darf.

Achja:
Das Passwort wird im SQL-Server-Authentifizierungsmodus aus dem Netzwerk im Klartext uebertragen!!

Fuer die Installation benoetigt man folgende Sachen: ein Dienstkonto, ein Installationskonto, die Entscheidung ueber den Servermodus, die Laufwerke oder Partitionen und den Setuptyp. Dieser kann normal, Remote, oder Unbeobachtet laufen. Die Remote-Installation laeuft allerdings nur mit der Vollversion von SQL.
Schaut man sich hinterher die Ordner an, findet man immer in der Systempartition von Windows unter Programme \ Microsoft SQL Server ein Verzeichnis 80, welches fuer die Versionsnummer steht. Dieses Verzeichnis ist der Server fuer alle Instanzen und darf nicht mehr geaendert werden. Das Verzeichnis, welches wir bei der Installation ausgewaehlt haben, beinhaltet eine Standardinstanz, meistens die erste mit dem Namen MSSQL. Werden weitere Instanzen installiert und mit Namen versehen, haben die Verzeichnisse MSSQL$Name. Der Name ist dann verschluesselt im Verzeichnis 80 hinterlegt. Die Standardinstanz kann durchaus eine 6.5er, 7.0er oder andere sein, waehrend die zweite Instanz und weitere immer nur SQL2000er sein muss. Auf aelteren SQL-Systemen war also nicht mehr als eine Instanz moeglich.
Wir haben unseren SQL-Server auf LW E: installiert. Im Ordner e:\programme\Microsoft SQL Server\MSSQL\Data liegen mehrere Dateien. Die mdf-Dateien sind die primaeren Datendateien, welche fuer das Einlesen von Datenbanken benoetigt werden.
NDF-Dateien sind sekundaere Datendateien, waehrend ldf-Dateien Logmoeglichkeiten beinhalten.
Das Backup-Verzeichnis ist das Standardverzeichnis der Auftragsspeicherung. Das DATA-Verzeichnis ist das Standardverzeichnis der oben erwaehnten Datendateien, und das Jobs-Verzeichnis ist fuer die Auftragsspeicherung zustaendig. In Logs werden Errorlogs gespeichert.
Die Standardports, wo die NamePipes ablaufen, befinden sich uebrigens auf dem Port 1433. Man benoetigt allerdings wenigstens bei der Installation immer ein Netz, da der Server auch die IP-Adresse 127.0.0.1 abfragt.
Es ist noch ein Verzeichnis vorhanden: REPLDATA. Dieses ist fuer die Replikation zustaendig. Ein weiteres Verzeichnis namens UPGRADE beinhaltet Pakete, mit denen ein Upgrade und Downgrade ohne Neustart moeglich ist. So kann man zwischen verschiedenen SQL-Versionen wechseln.
Wie gewohnt ist natuerlich noch etwas im WINNT-Verzeichnis vorhanden: setup.iss. Das ist die Startdatei fuer die unbeaufsichtigte Installationen. Diese wird bei jeder Installation erzeugt und dort abgelegt. Es gibt aber noch weitere ISS-Dateien, welche im Verzeichnis der CD liegen. Dort befindet sich fuer normale Installationen die SQLINS.ISS, Fuer die Clienttools die SQLCLI.ISS und die benutzerdefinierte Installation mit allen Komponenten in der SQLCST.ISS.
Die Setup.iss benutzt man folgendermassen: start /wait d:\x86\setup\setupsql.exe k=SMS -s -m -SMS -f1 "c:\winnt\setup.iss" allerdings sollte man beim Setup Domaenenmitglied sein. Erstellen hingegen tut man wie gewoehnlich bei Microsoft mit der Maus mit einem Start auch die Autorun.exe der CD. Interessanterweise hat das start /wait nicht funktioniert, allerdings der Rest des Setups.