Inhaltsverzeichnis Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Teil I Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.1 Warum dieses Buch? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.2 Aufbau des Buches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aufbau der einzelnen Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 18 1.3 Die Beispieldatenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.4 Schreibweisen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.5 DVD, Softlinks und Website zum Buch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2 Der Microsoft SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.1 Historie des Microsoft SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sybase und die Anfänge des Microsoft SQL Server . . . . . . . . . . . . . . . . . . . . . . . Microsoft SQL Server entsteht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Der SQL Server wird erwachsen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Server bekommt neue Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kleiner Überblick über die wichtigsten Versionen und Builds . . . . . . . . . . . . . . 23 23 23 24 24 25 2.2 Neuerungen bei SQL Server 2008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Neue Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sonstige Neuerungen für SQL Server 2008 Express . . . . . . . . . . . . . . . . . . . . . . Neue Features für die größeren Editionen von SQL Server 2008 . . . . . . . . . . . . . 27 28 28 29 2.3 Neuerungen bei SQL Server 2008 R2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Neue Business-Intelligence-Features für SQL Server 2008 R2 . . . . . . . . . . . . . . . Sonstige neue Features der größeren Editionen von SQL Server 2008 R2 . . . . . . . . Neue Features von SQL Server 2008 R2 Express . . . . . . . . . . . . . . . . . . . . . . . . . 30 30 30 31 2.4 Neuerungen bei SQL Server 2012 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mission Critical Confidence – Sicherheit und Hochverfügbarkeit . . . . . . . . . . . . Breakthrough Insight – neue BI-Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cloud On Your Terms – bessere Anbindung an die Cloud . . . . . . . . . . . . . . . . . Neuerungen bei SQL Server 2012 Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Änderungen bei der Lizenzierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 32 33 33 34 3 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Inhaltsverzeichnis 2.5 Die verschiedenen SQL Server-Editionen im Vergleich . . . . . . . . . . . . . . . . . . . SQL Server Compact Edition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Server Express Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Server Web Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Server Standard Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Server Enterprise Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Server Parallel Data Warehouse Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Server Developer Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Server LocalDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 35 36 37 37 37 38 38 38 38 2.6 Übungen zu diesem Kapitel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3 Installation und erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.1 Systemvoraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hardwarevoraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Softwarevoraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 41 42 3.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installation der Advanced Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aktualisieren von SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 43 54 3.3 Die wichtigsten SQL Server-Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Server-Installationscenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Server-Konfigurations-Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Server Management Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Server Data Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Server-Import/Export-Assistent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQLCMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 54 55 58 59 60 61 3.4 Übungen zu diesem Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Teil II Datenbankgrundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4 Allgemeine Datenbankgrundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.1 Erstellen von Datenbanken und Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anlegen einer Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anlegen von Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Spalten und Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NULL-Werte und Defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 68 71 75 79 4.2 Anzeigen und Ändern von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ändern von Tabelleninhalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anzeigen von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 80 81 4 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Inhaltsverzeichnis 4.3 Bearbeiten von Datenbanken und Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ändern von Datenbankeinstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anpassen der Felddefinitionen einer Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 83 84 4.4 Primärschlüssel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.5 Indizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funktionsweise von Indizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erstellen von Indizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 89 91 4.6 Übungen zu diesem Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 5 Eine Tabelle kommt selten allein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.1 Relationen und Fremdschlüssel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.2 Normalisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 5.3 Datenbankdiagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erstellen von Datenbankdiagrammen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ändern von Datenstrukturen mit Datenbankdiagrammen . . . . . . . . . . . . . . . . . 101 101 104 5.4 Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 5.5 Sichten (Views) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sichten auf eine Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sichten, die mehrere Tabellen nutzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 108 108 5.6 Übungen zu diesem Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 5.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 6 Kleine Einführung in SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 6.1 Was ist eigentlich SQL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 6.2 SQL-Anweisungen im Management Studio ausführen . . . . . . . . . . . . . . . . . . . . 114 6.3 Datenbankabfragen mit SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Abfragen auf einer Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aggregierungsfunktionen und Gruppierungen . . . . . . . . . . . . . . . . . . . . . . . . . Abfragen auf mehreren Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 116 119 120 6.4 Daten mit UPDATE, INSERT und DELETE bearbeiten . . . . . . . . . . . . . . . . . . . INSERT und SELECT INTO zum Einfügen von Daten . . . . . . . . . . . . . . . . . . . UPDATE zum Ändern von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DELETE und TRUNCATE TABLE zum Löschen von Daten . . . . . . . . . . . . . . . 122 122 123 124 6.5 Erstellen und Verwenden von Sichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erstellen von Sichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verwenden von Sichten in SELECT-Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . Verwenden von Sichten für Datenänderungsoperationen . . . . . . . . . . . . . . . . . 125 125 126 127 6.6 Übungen zu diesem Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 6.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 5 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Inhaltsverzeichnis Teil III Datenbankentwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 7 Erweiterte SQL-Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 7.1 Komplexe SQL-SELECTs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fallunterscheidung mit CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fallunterscheidung mit IIF und CHOOSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Unterabfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aggregierungsfunktionen mit ROLLUP kumulieren . . . . . . . . . . . . . . . . . . . . . 135 135 137 138 141 7.2 Komplexe INSERTs, UPDATEs und DELETEs . . . . . . . . . . . . . . . . . . . . . . . . . INSERT auf Basis von mehreren Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . UPDATE auf Basis von mehreren Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . DELETE auf Basis von mehreren Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 143 143 144 7.3 Daten abgleichen mit dem MERGE-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . . . . Die klassische Variante (ohne MERGE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Die neue Variante (mit MERGE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 145 146 7.4 Common Table Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 7.5 Die OFFSET-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 7.6 Sequenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 7.7 Übungen zu diesem Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 7.8 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 8 SQL-Skripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 8.1 Arbeiten mit SQL-Skripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 8.2 Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Systemvariablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabellenvariablen und temporäre Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 157 158 8.3 Fallunterscheidungen und Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fallunterscheidung mit IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anweisungsblöcke mit BEGIN ... END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . WHILE-Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 160 161 161 8.4 Debuggen von SQL-Skripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schrittweise Ausführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Breakpoints (Haltepunkte) nutzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 163 165 8.5 Fehlerbehandlung in SQL-Skripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RAISERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TRY ... CATCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . THROW. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 166 168 169 8.6 Sperren, Transaktionen und Deadlocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sperren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 169 6 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Inhaltsverzeichnis Transaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deadlocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 173 8.7 Übungen zu diesem Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 8.8 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 9 Gespeicherte Prozeduren, Funktionen, Trigger und Cursor . . . . . . . . . . . . . . . . . . 177 9.1 Systemprozeduren und –funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Systemprozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Die wichtigsten Systemfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 177 180 9.2 Benutzerdefinierte gespeicherte Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . Einfache gespeicherte Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gespeicherte Prozeduren mit Parametern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gespeicherte Prozeduren mit OUTPUT-Parametern . . . . . . . . . . . . . . . . . . . . . 184 185 185 187 9.3 Benutzerdefinierte Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Skalarwertfunktionen (oder kurz: Skalarfunktionen) . . . . . . . . . . . . . . . . . . . . Tabellenwertfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aggregatfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 188 190 192 9.4 Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ein einfacher UPDATE-Trigger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kombinierte DML-Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verwendung von geänderten Daten im Trigger . . . . . . . . . . . . . . . . . . . . . . . . . INSTEAD OF-Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 193 196 196 198 9.5 SQL-Cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ein einfacher Cursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cursor und Trigger kombiniert verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 199 200 9.6 Übungen zu diesem Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 9.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Teil IV Datenbankadministration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 10 Datenbankadministration mit SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 10.1 Skriptgenerierung oder »SQL ist überall« . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Skriptgenerierung aus Dialogfeldern heraus . . . . . . . . . . . . . . . . . . . . . . . . . . . . Skriptgenerierung über den Objekt-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . Skriptgenerierung mit dem Vorlagen-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . 207 207 211 213 10.2 Verwalten von Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datenbanken erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datenbanken anpassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datenbanken löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 215 216 218 7 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Inhaltsverzeichnis 10.3 Verwalten von Datenbankobjekten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Indizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sichten, Funktionen, gespeicherte Prozeduren und Trigger . . . . . . . . . . . . . . . . 218 218 220 221 10.4 DDL-Trigger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Servertrigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datenbanktrigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Was wurde eigentlich geändert? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 222 222 224 10.5 Übungen zu diesem Kapitel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 10.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 11 Benutzer, Rollen und Rechte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 11.1 Das SQL Server-Rechtesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 11.2 Anmeldungen und Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anlegen von SQL Server-Anmeldungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Windows-Benutzer und -Gruppen als Anmeldungen anlegen . . . . . . . . . . . . . . Anmeldungen testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 229 230 232 11.3 Verwalten von Datenbankbenutzern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 11.4 Rechte und Rollen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Serverrechte und -rollen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datenbankrechte und -rollen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 237 240 11.5 Contained Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 11.6 Verwendung von Schemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schemas erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schemas verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Berechtigungen für Schemas verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 246 246 248 11.7 Übungen zu diesem Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 11.8 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 12 Daten sichern und bewegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 12.1 Sichern von Datenbankdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Der naive Backup-Ansatz: Dateien kopieren . . . . . . . . . . . . . . . . . . . . . . . . . . . Trennen und Verbinden von Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 253 256 12.2 Das Transaktionslog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 12.3 Sichern und Wiederherstellen von Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . Wahl der richtigen Sicherungsstrategie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 268 12.4 Import und Export von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Der Import-/Export-Assistent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Masseneinfügen per BULK INSERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 270 273 8 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Inhaltsverzeichnis BCP – Masseneinfügen über die Kommandozeile . . . . . . . . . . . . . . . . . . . . . . . Formatdateien für BULK INSERT und bcp nutzen . . . . . . . . . . . . . . . . . . . . . . 274 276 12.5 Übungen zu diesem Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 12.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Teil V Erweiterte Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 13 SQL Server und .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 13.1 Schichtentrennung und Applikationsaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 13.2 Zugriff über ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 13.3 LINQ to SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LINQ to SQL-Klassen per Quelltext erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . LINQ to SQL-Klassen mit dem Server-Explorer erstellen . . . . . . . . . . . . . . . . . . 285 285 288 13.4 Das ADO.NET Entity Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 13.5 Übungen zu diesem Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 13.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 14 Reporting mit SQL Server Express mit Advanced Services . . . . . . . . . . . . . . . . . . . 297 14.1 Überblick über die Reporting Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 14.2 Konfiguration der Reporting Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 14.3 Erstellen eines Reports mit dem Report-Designer . . . . . . . . . . . . . . . . . . . . . . . 301 14.4 Übungen zu diesem Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 14.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 15 Zusammenarbeit mit anderen SQL Server-Instanzen und -Editionen . . . . . . . . . . . 309 15.1 Verbindung zu anderen Servern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 15.2 Replikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Überblick über die SQL Server-Replikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . Welche Rolle spielt SQL Server Express bei der Replikation? . . . . . . . . . . . . . . . 311 312 313 15.3 Die SQL Server LocalDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 15.4 Die SQL Server Compact Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 15.5 SQL Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zusammenspiel von SQL Azure und SQL Server 2012 . . . . . . . . . . . . . . . . . . . . 318 318 15.6 Umstieg auf eine größere Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . »Side by Side«-Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . »In Place«-Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 321 322 9 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Inhaltsverzeichnis 15.7 Übungen zu diesem Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 15.8 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 16 Datenebenenanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 16.1 Überblick über Datenebenenanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 16.2 Erstellen von Datenebenenanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Extrahieren von Datenebenenanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . Registrieren von Datenebenenanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 326 330 16.3 Verteilen von Datenebenenanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bereitstellen von Datenebenenanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . Aktualisieren von Datenebenenanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . Löschen von Datenebenenanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 330 332 334 16.4 Importieren und Exportieren von Datenebenenanwendungen . . . . . . . . . . . . . . Exportieren von Datenebenenanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . Importieren von Datenebenenanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 335 337 16.5 Übungen zu diesem Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 16.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 17 Die SQL Server Data Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 17.1 Überblick über die SQL Server Data Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 17.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 17.3 Mit Datenbankprojekten arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anlegen eines neuen Datenbankprojekts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objekte in Datenbankprojekten anpassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Veröffentlichen von Datenbankprojekten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 344 347 349 17.4 Die CLR-Integration von SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 17.5 Sonstige nützliche Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Server-Explorer und SQL Server-Objekt-Explorer . . . . . . . . . . . . . . . . . . . . . . . Schemavergleich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Statische Code-Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 354 355 356 17.6 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zukünftige Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Team Foundation Server Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 357 358 17.7 Übungen zu diesem Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 17.8 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 Nachwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 10 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Inhaltsverzeichnis Anhänge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 A Kleine SQL-Referenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 A.1 SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Einfache Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Komplexere Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Abfragen auf mehreren Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Unterabfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Common Table Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 365 366 367 367 368 A.2 Data Manipulation Language (DML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . UPDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . INSERT/SELECT INTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DELETE/TRUNCATE TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MERGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 368 369 369 370 A.3 Data Definition Language (DDL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datenbanken erstellen und konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schemas erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabellen erstellen und ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sichten erstellen und ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Indizes erstellen und aktualisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gespeicherte Prozeduren erstellen und ändern . . . . . . . . . . . . . . . . . . . . . . . . . Benutzerdefinierte Funktionen erstellen und ändern . . . . . . . . . . . . . . . . . . . . . Trigger erstellen und ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datenbankobjekte löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 370 371 371 371 372 372 372 374 375 A.4 Data Control Language (DCL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anmeldungen und Benutzer anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Server- und Datenbankrollen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Server- und Datenbankrechte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 375 376 376 A.5 SQL Server-Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Numerische Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Alphanumerische Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Binäre Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zeit- und Datumstypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sonstige Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 377 378 378 379 379 A.6 Systemobjekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Systemsichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Systemfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Systemprozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Systemvariablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 380 381 382 383 11 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Inhaltsverzeichnis B Inhalt der Buch-DVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 B.1 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Skriptdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Projektdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 386 386 387 B.2 SQL Server 2012 Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 B.3 SQL Server Compact 4.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 B.4 SQL Server Data Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 C Weiterführende Infos im Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 C.1 Die Website zu Buchreihe, Verlag und Autor . . . . . . . . . . . . . . . . . . . . . . . . . . 389 C.2 Microsoft-Websites zu SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 C.3 Downloads zu SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 C.4 Sonstige Websites zu SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 C.5 SQL Server Foren und Blogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 D Glossar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 Stichwortverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 12 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Kapitel 4 II – Datenbankgrundlagen Allgemeine Datenbankgrundlagen In diesem Kapitel lernen Sie ■ die wichtigsten Grundlagen zum Arbeiten mit relationalen Datenbanken ■ das Erstellen und Ändern von Datenbanken und Tabellen ■ wie man mit dem SQL Server Management Studio Daten anzeigen und ändern kann ■ was es mit Primärschlüsseln und Indizes auf sich hat 4.1 Erstellen von Datenbanken und Tabellen Auch wenn der Microsoft SQL Server umgangssprachlich gerne als Datenbank bezeichnet wird, handelt es sich dabei streng genommen um ein Datenbank-Management-System (also ein System zur Verwaltung von Datenbanken)1. Eine Datenbank dagegen ist eine Sammlung unterschiedlicher Daten, die thematisch in irgendeiner Form zusammengehören. Diese wiederum setzt sich vor allem aus Tabellen zusammen, die jeweils Daten in einer einheitlichen Struktur enthalten. In unsere Beispielanwendung übersetzt heißt dies, dass es eine Datenbank (nennen wir sie einfach »MediaBase«) gibt, die verschiedene Tabellen für Bücher, CDs und DVDs enthält. Jede dieser Tabellen setzt sich aus Zeilen und Spalten zusammen, wobei die Zeilen alle dieselbe Struktur haben, während die Spalten jeweils eine Eigenschaft eines Objekts (z.B. den Titel eines Buches) beschreiben. Allerdings gibt es auch zwischen Datenbanken und Tabellen noch eine Schicht, die vielen nicht so geläufig ist: die Datenbankschemata. Bei einem Datenbankschema handelt es sich um eine Gruppe von Datenbankobjekten wie beispielsweise Tabellen und Sichten, die eine Untergruppe der Datenbank bilden und daher auch ein gemeinsames Präfix bekommen. Wenn nicht explizit ein Schema angegeben wird, so wird standardmäßig das dbo-Schema verwendet. Der Sinn eines Datenbankschemas ist zweierlei: Erstens wird so die Übersicht gesteigert, da alle Tabellen eines Schemas im Management Studio untereinander stehen, und zweitens lassen sich so leichter Rechte auf alle Tabellen eines Schemas erteilen, ohne gleich die ganze Datenbank freigeben zu müssen. ____________ 1 Da der Begriff Datenbank-Management-System ein wenig unhandlich ist, kann man als Kurzform auch Datenbanksystem verwenden. 67 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Kapitel 4 Allgemeine Datenbankgrundlagen Anlegen einer Datenbank Beginnen wir erst einmal mit dem Erstellen einer Datenbank: 1. Starten Sie SQL Server 2012 Management Studio und verbinden Sie sich mit der lokalen Serverinstanz SQL2012Express. Abbildung 4.1: Verbindung mit SQL Server herstellen 2. Sofern nicht bereits sichtbar, blenden Sie über den Menüpunkt Ansicht/Objekt Explorer den Objekt-Explorer ein. 3. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf Datenbanken und wählen Sie den Befehl Neue Datenbank aus. 4. Es erscheint das Dialogfeld zum Erstellen einer neuen Datenbank. Im linken Bereich können Sie eine von drei möglichen Seiten mit Einstellungen auswählen: Allgemein, Optionen und Dateigruppen. 5. Nehmen Sie auf der Seite Allgemein folgende Einstellungen vor: ■ Datenbankname: MediaBase ■ Besitzer: <Standard> ■ Zeilendaten (erste Zeile in der Liste mit Datenbankdateien) Logischer Name: MediaBase Anfangsgröße (MB): 20 Automatische Vergrößerung: 10%, unbeschränkte Vergrößerung (diese Einstellung können Sie vornehmen, wenn Sie auf die Schaltfläche mit den drei Punkten hinter dem entsprechenden Feld klicken) ■ Protokoll (zweite Zeile in der Liste mit Datenbankdateien) Logischer Name: MediaBase_log Anfangsgröße (MB): 10 Automatische Vergrößerung: 10%, unbeschränkte Vergrößerung 68 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 4.1 Erstellen von Datenbanken und Tabellen II – Datenbankgrundlagen Wenn Sie möchten, können Sie hier auch noch die Pfade, in denen die Datenbankdateien abgelegt werden, prüfen und bei Bedarf anpassen. Abbildung 4.2: Das Dialogfeld zum Erstellen einer neuen Datenbank 6. Überprüfen Sie (und korrigieren Sie gegebenenfalls) auf der Seite Optionen die folgenden Einstellungen: ■ Sortierung: <Standard> ■ Wiederherstellungsmodell: Vollständig ■ Kompatibilitätsgrad: SQL Server 2012 (110) ■ Einschlusstyp: Keine 7. Überprüfen Sie (und korrigieren Sie gegebenenfalls) auf der Seite Dateigruppen die folgenden Einstellungen: ■ Name: PRIMARY ■ Dateien: 1 ■ Standard: (angekreuzt) 8. Klicken Sie auf OK und die neue Datenbank wird angelegt. Sie haben nun eine neue Datenbank mit Namen MediaBase angelegt. Bevor wir beginnen, mit dieser Datenbank zu arbeiten, möchte ich Ihnen kurz die gerade vorgenommenen Einstellungen erläutern: 69 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Kapitel 4 ■ Allgemeine Datenbankgrundlagen Datenbankname ist die Bezeichnung, über die Sie später auf die Datenbank zugreifen. Der Einfach- heit halber empfiehlt es sich, hier eine Bezeichnung ohne Leerzeichen und Sonderzeichen (wie beispielsweise Umlaute) zu verwenden, da dies sonst an anderer Stelle zu Problemen führen kann. ■ Besitzer ist der Datenbankbenutzer, der automatisch volle Berechtigungen auf die gesamte Daten- bank erhält. Mit der Einstellung <Standard> ist das automatisch der Benutzer, mit dem Sie während der Erstellung mit dem Datenbankserver verbunden sind (also Sie selbst). ■ Datenbankdateien Datenbanken werden in mehreren Dateien auf der Festplatte abgelegt. Im Nor- malfall reichen zwei Dateien aus – eine für die eigentlichen Daten (hier Zeilendaten genannt) und eine für das Protokoll. An dieser Stelle können Sie den Namen und die Anfangsgröße für diese Dateien definieren und auch festlegen, in welchen Schritten und bis zu welcher Maximalgröße die Dateien bei Bedarf automatisch wachsen dürfen. Ein Anlegen von weiteren Dateien macht vor allem aus zwei Gründen Sinn: ■ Platz Wenn auf der Festplatte, auf der die Dateien bisher liegen, kaum noch Platz frei ist, stellt man diese auf nicht mehr wachsend und fügt eine weitere Datei auf einer zweiten Festplatte hinzu. ■ Performance Durch das Anlegen von mehreren Dateien auf mehreren Platten kann man unter Umständen Performance gewinnen, sofern auf diese Dateien parallel zugegriffen werden kann (mehrere Partitionen auf derselben Platte machen hier also keinen Sinn). Hintergrundinfo: Zeilendaten und Protokoll Auch wenn dieses Thema an anderer Stelle noch einmal ausführlicher behandelt werden wird, möchte ich hier kurz erläutern, was es mit den Zeilendaten- und Protokolldateien auf sich hat. ■ ■ Zeilendaten sind die eigentlichen Daten, die in der Datenbank (oder in den Zeilen der Tabellen einer Datenbank) enthalten sind. Diese Datei sollte möglichst bei ihrer Erstellung schon so groß gewählt werden, dass sie die zu erwartende Menge der Daten aufnehmen kann, da die automatische Vergrößerung zusätzlich Zeit kostet und daher nicht unnötig verwendet werden sollte. ■ Protokoll Im Protokoll (oder auch Transaktionslog) werden Änderungen an den Zeilendaten zwischengespeichert, bevor diese endgültig in den Zeilendaten abgelegt werden. Dieser Mechanismus ist aus verschiedenen Gründen sinnvoll: So sind dadurch einerseits Transaktionen möglich, andererseits kann mithilfe des Protokolls (bzw. einer Sicherung desselben) nach einem Ausfall wieder ein Datenbankstand zu einem nahezu frei wählbaren Zeitpunkt hergestellt werden (sofern gewisse Rahmenbedingungen erfüllt sind). Beide Themen werden aber in späteren Kapiteln noch ausführlicher angesprochen. Im Moment reicht es völlig aus zu wissen, dass die Größe des Transaktionslogs von Häufigkeit und Umfang der Datenänderungen abhängt. Je mehr und umfangreichere Änderungen anfallen, desto größer wird das Protokoll. Sortierung legt den Modus der Sortierung (case sensitive, accent sensitive etc.) für die gesamte Datenbank fest. Sofern Sie hier beim Installieren des SQL Server die richtige Auswahl getroffen haben (empfehlenswert ist beispielsweise Latin1_General_CI_AS), können Sie die Voreinstellung <Standard> übernehmen. Wesentlich ist, dass möglichst alle Ihre Datenbanken dieselbe Sortierung haben sollten, da es zu Problemen kommt, wenn Sie in einer Abfrage Tabellen mit unterschiedlichen Sortierungen verwenden wollen. 70 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 ■ Wiederherstellungsmodell steuert den Grad, in dem Änderungen an Daten mitprotokolliert werden, um bei Bedarf die Datenbank zu einem bestimmten Stand wiederherstellen zu können. Vollständig gibt Ihnen hier alle Freiheiten; die Alternativen Einfach und Massenprotokolliert schreiben weniger Daten, bieten dafür aber auch weniger Möglichkeiten bei Backup & Restore. Dieses Thema wird detaillierter in einem späteren Kapitel des Buches behandelt. ■ Kompatibilitätsgrad Sollten Sie Datenbanken und/oder Skripts von einer älteren SQL ServerVersion übernehmen, können Sie an dieser Stelle die Kompatibilität zu SQL Server 2005 (90) oder SQL Server 2008 (100) erzwingen, allerdings unter Verzicht auf die neuen Features und Datentypen. Daher sollte man möglichst die Voreinstellung SQL Server 2012 (110) beibehalten. ■ Dateigruppen Bei den Dateigruppen handelt es sich um eine logische Zwischenschicht, die zwischen Datenbankobjekten (wie beispielsweise Tabellen) und Datenbankdateien liegt. Beim Erstellen von Datenbankobjekten können Sie nur angeben, in welcher Dateigruppe das Objekt angelegt wird. Die Datenbankdateien selbst werden bei ihrer Erstellung ebenfalls Dateigruppen zugeordnet. Sofern es sich nicht um sehr große Datenbanken handelt (und das wird bei der Express Edition normalerweise nicht der Fall sein), werden Sie voraussichtlich nur mit einer Dateigruppe arbeiten, die standardmäßig PRIMARY heißt. Klicken Sie nun im Management Studio den Knoten Datenbanken an, um die neu erstellte Datenbank zu sehen. Eventuell müssen Sie mit einem Rechtsklick auf den Punkt Datenbanken erst die Option Aktualisieren auswählen, damit die Darstellung auf den aktuellen Stand gebracht wird. Dieser Schritt funktioniert auf jeder Ebene des Objekt-Explorers und ist insbesondere dann notwendig, wenn Datenbankobjekte von anderen Benutzern oder per SQL-Skript erstellt wurden. Mit einem Rechtsklick auf die neu erstellte Datenbank können Sie über die Option Eigenschaften die gerade vorgenommenen Einstellungen überprüfen. Teilweise lassen sich diese hier auch ändern. Anlegen von Tabellen Nachdem nun eine Datenbank vorliegt, ist es an der Zeit, darin auch ein paar Tabellen anzulegen. 1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf den Knoten Datenbanken/MediaBase/Tabellen und wählen Sie den Befehl Neue Tabelle aus. Im Detailbereich erscheint nun die Entwurfsansicht für Tabellen, bei der Sie die benötigten Spalten direkt angeben können. 2. Tragen Sie in der ersten Zeile als Spaltenname ID ein und wählen Sie als Datentyp int aus. Das Feld NULL-Werte zulassen sollte nicht angekreuzt werden. 3. Tragen Sie in derselben Weise die weiteren Felder in die nächsten Zeilen ein (die Bedeutung der verschiedenen Datentypen wird weiter unten erklärt): 71 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 II – Datenbankgrundlagen 4.1 Erstellen von Datenbanken und Tabellen Stichwortverzeichnis 3-Tier-Architektur 282 64-Bit-Version 24 A Abfrage-Designer 105, 358 Abfrage-Editor 107 Abfragen 105 Abonnent 312 ABS 181, 382 ActiveX Data Objects 282, 395 Ad-hoc Reports 297 Administrator 50 ADO 282, 395 ADO.NET 282, 395 Command 283 Connection 283 DataAdapter 283 DataReader 283 DataRow 283 DataSet 283 DataTable 283 Entity Framework 289, 395 SqlCommand 283 SqlConnection 283 SqlDataAdapter 283 SqlDataReader 283 Aggregierungsfunktionen 119, 141, 192 Alphanumerische Datentypen 77, 378 ALTER DATABASE 216, 255, 259, 370 SET OFFLINE 255 SET ONLINE 255 SET SINGLE_USER 259 ALTER FUNCTION 372 ALTER INDEX 220, 372 REBUILD 220 REORGANIZE 220 ALTER PROCEDURE 372 ALTER TABLE 219, 371 ALTER TRIGGER 374 ALTER VIEW 126, 221, 371 AlwaysOn 32, 395 American National Standards Institute 113 Analysis Services 301, 395 Anmeldungen 227 sa 228 ANSI 113, 395 ANSI SQL 395 Anweisungsblöcke 161 Apollo 395 APP_NAME 183, 382 APPLY 192 Artikel 312 Assembly 351, 395 Assistent zum Kopieren von Datenbanken 61 Auditing 32 Ausfallsicherheit 37 Authentifizierung 49, 227, 395 gemischter Modus 49 SQL Server-Authentifizierung 49, 228 Windows-Authentifizierung 49, 227 Authentifizierungsmodus 63 Autorisierung 395 Automatische Vergrößerung 68, 84, 208 Availability Groups 32, 395 AVG 119 Azure 395, 400 Azure DataMarket 400 B BACPAC-Dateien 335 BCP, Bulk Copy Program 260, 274, 395 Formatdateien 276 BEGIN TRANSACTION 171 BEGIN...END 161 Beispieldatenbank 19 Beispiele 386 Benannte Instanz 47 Benutzerdefinierte Funktionen 188 Benutzerdefinierte gespeicherte Prozeduren 184 Benutzerdefinierte Serverrollen 237 Benutzerkonten Local Service 49 Local System 49 Lokaler Dienst 49 Lokales System 49 Network Service 49 Netzwerkdienst 49 Berechtigungen 248 Berichtsserverprojekt 302 Berichtsserverprojekt-Assistent 302 403 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Stichwortverzeichnis Besitzer 70 BI Semantic Model 33, 395 BIDS siehe Business Intelligence Development Studio bigint 77, 377 Binäre Datentypen 78, 378 binary 78, 378 bit 77, 377 Blockierungen 179 Blogs 393 BREAK 161 Breakpoints 165 Breakthrough Insight 39 Buch-DVD 385 Bulk Copy Program 274, 395 BULK INSERT 260, 273 Formatdateien 276 bulkadmin 238 Business Intelligence 24 Business Intelligence Development Studio 59, 339, 340, 395 Business Layer 282 C CASE 135, 366 char 78, 378 CHECK OPTION 128 CHOOSE 137, 382 Cloud 31, 33 Cloud Computing 318, 396 Cloud On Your Terms 39 CLR 396 CLR-Integration 351 Code-Analyse 356 CodePlex 392 Command 283 COMMIT 170 COMMIT TRANSACTION 171 Common Language Runtime 351, 396 Common Table Expression 148, 156, 368 Community Technology Preview 27, 396 Compact Edition 315, 396 COMPUTE 142 CONCAT 183, 381 Conceptual Model 289 Conceptual Schema Definition Language 289, 396 Connection 283 Connection String 228 Contained Databases 32, 242, 396 CONTINUE 161 COS 181, 382 COUNT 119 CREATE DATABASE 215, 259, 370 FOR ATTACH 259 CREATE FUNCTION 372 CREATE INDEX 220, 372 CREATE LOGIN 230, 375 CREATE PROCEDURE 372 CREATE ROLE 376 CREATE SCHEMA 246, 371 CREATE TABLE 218, 371 CREATE TRIGGER 222, 374 CREATE USER 375 CREATE VIEW 125, 221, 371 Crescent siehe Power View CROSS APPLY 192 CROSS JOIN 120 CRUD 122, 396 Crystal Reports 297 C-S Mapping 289 CSDL 289 CSL 396 CTE siehe Common Table Expression CTP 396 CTP, Community Technology Preview 27 Cursor 199, 380 D DACPAC-Datei 326, 335, 355 erzeugen 349 importieren 345 DAC-Paket 319, 326, 329, 396 DataAdapter 283 Data Center 318 Data Compare 357 Data Control Language 114, 230, 375, 396 Data Definition Language 114, 370, 396 Data Dude 339 Data Manipulation Language 114, 122, 368, 396 Data Mining 24, 29 Data Quality Services siehe SQL Server Data Quality Services Data Query Language 114, 396 Data Tier Application 396 Data Tier Applications siehe Datenebenenanwendungen Data Transformation Services 24, 396 Data Warehouse 396 Database Engine Services 45 Database Layer 282 404 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Stichwortverzeichnis Database Owner 234, 245 DataReader 283 DataRow 283 DataSet 283 DataTable 283 Data-tier Applications siehe Datenebenenanwendungen date 28, 78, 379 DATEADD 381 DATEDADD 181 DATEDIFF 181, 381 DATEFROMPARTS 181, 381 Dateigruppen 71 Daten ändern 80 anzeigen 81 Datenbankbenutzer 234 Datenbankdateien 70, 71, 84, 215 Datenbankdiagramme 101, 214, 358 zum Ändern von Datenstrukturen 104 Datenbankeigenschaften 83 Datenbanken 67, 215, 386, 396 offline schalten 253 online schalten 253 sichern 253, 260 trennen 256 verbinden 256 wiederherstellen 253, 260 Datenbank-Management-System 67, 397 Datenbankname 70 Datenbankrechte 240 Datenbankrollen 240 db_accessadmin 240 db_backupoperator 240 db_datareader 240 db_datawriter 240 db_ddladmin 240 db_denydatareader 240 db_denydatawriter 240 db_owner 240 db_securityadmin 240 Datenbank-Schema 67 Datenbankschicht 282 Datenbanksystem 67 Datenbanktrigger 222 Datenbank Unit Test 340 Datenbankverschlüsselung 29 Datenebenenanwendungen 31, 319, 325, 339, 397 aktualisieren 332 bereitstellen 330 exportieren 335 Datenebenenanwendungen (Fortsetzung) extrahieren 326 importieren 337 löschen 334 registrieren 330 Überblick 325, 339 Datengenerierung 340, 358 Datentypen 28, 71, 75, 376 alphanumerische 77, 378 bigint 77, 377 binär 78, 378 binary 78, 378 bit 77, 377 char 78, 378 cursor 380 date 28, 78, 379 datetime 78, 379 datetime2 78, 379 datetimeoffset 78, 379 decimal 77, 377 Filestream 28 float 77, 377 geography 28, 380 geometry 28. 380 hierarchyid 28. 379 image 78, 378 int 77, 377 money 77, 377 nchar 78, 378 ntext 78, 378 numeric 377 numerisch 77, 377 nvarchar 78, 378 nvarchar(MAX) 78, 378 real 77, 377 rowversion 379 smalldatetime 78, 379 smallint 77, 377 smallmoney 77, 377 sonstige 78, 379 sql_variant 379 table 380 temporale 78 text 78, 378 time 28, 78, 379 timestamp 379 tinyint 77, 377 uniqueidentifier 78, 183, 380 varbinary 78, 378 varbinary(MAX) 78, 378 varchar 78, 378 405 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Stichwortverzeichnis Datentypen (Fortsetzung) varchar(MAX) 78, 378 xml 78, 380 Zeit und Datum 379 Datenvergleich 340 Datenverzeichnisse 50 DATEPART 180, 381 datetime 78, 379 datetime2 78, 379 datetimeoffset 78, 379 Datumsfunktionen DATEADD 381 DATEDIFF 381 DATEFROMPARTS 381 DATEPART 381 DAY 381 GETDATE 381 MONTH 381 YEAR 381 DAY 180, 381 DB 397 db_accessadmin 240 db_backupoperator 240 db_datareader 240 db_datawriter 240 db_ddladmin 240 db_denydatareader 240 db_denydatawriter 240 db_owner 240 db_securityadmin 240 dbcreator 238 dbml-Datei 288 DBMS 397 dbo 67, 234, 245 dbschema-Dateien 326 DCL 114, 230, 375, 397 DDL 114, 370, 397 DDL-Trigger 193, 221, 328 EVENTDATA 224 Deadlocks 173 Debuggen 162 Breakpoints 165 Haltepunkte 165 Schnellüberwachung 164 decimal 77, 377 DECLARE 157 Default-Werte 79 DELETE 124, 128, 131, 144, 369 DELETED 196 DELETE-Trigger 193 Denali 25, 397 Denormalisierung 100 DENY 250, 376 Developer Edition 320 Dienstkonten 63 Differenzielle Sicherung 261 diskadmin 238 DISTINCT 117 Distributor 312 DLL 397 DML 114, 122, 368, 397 DML-Trigger 193 DQL 114, 397 DQS siehe SQL Server Data Quality Services Drag & Drop 117 DROP 125 DROP DATABASE 218, 375 DROP FUNCTION 375 DROP INDEX 221, 375 DROP PROCEDURE 375 DROP SCHEMA 246, 375 DROP TABLE 220, 375 DROP TRIGGER 375 DROP VIEW 221, 375 DTS 397 Dundas Chart Controls 29 DVD 20 DWH 397 Dynamic Link Library 397 Dynamic SQL 114, 397 E edmx-Datei 289, 292 Einfaches Wiederherstellungsmodell 260 Embedded SQL 114, 397 Enterprise Manager 24, 58, 397 Entity Framework 285, 289, 397 Conceptual Model 289 Conceptual Schema Definition Language 289, 396 C-S Mapping 289 CSDL 289 CSL 396 edmx-Datei 289, 292 konzeptionelles Modell 289 logisches Modell 289 Mapping Specification Language (MSL) 289, 398 SSDL 289, 401 Storage Model 289 Storage Schema Definition Language 289, 401 Zuordnungsschicht 289 406 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Stichwortverzeichnis ETL 397 Evaluationsversion 37 EVENTDATA 224 Exclusive Lock 170 EXEC 177 EXECUTE 177 EXISTS 138, 367 EXP 181, 382 Extensible Markup Language 397 F Fallunterscheidung 160 Featureauswahl 44, 63 Fehlerbehandlung 166 Felddefinitionen 84 Feldnamen, Schreibweise 74 FETCH NEXT 149 File Table 33, 39, 397 Filestream 28, 51, 397 float 77, 377 Foren 393 Formatdateien 276 Fremdschlüssel 95 FULL JOIN 120 Funktionen 221 Aggregatfunktionen 192 Skalarwertfunktionen 188 Tabellenwertfunktionen 190 G Gemischter Modus 49 Geodaten 28 Geography, Datentyp 28, 351, 380 Geometry, Datentyp 28, 351, 380 Geschäftslogik 282 Gespeicherte Prozeduren 221 GETDATE 180, 381 Globally Unique Identifier 78, 397 GO 125, 156 GRANT 250, 376 GRANT OPTION 250 GROUP BY 119, 366 Gruppierter Index 91 Guest 234 GUID 397 H Haltepunkte 165 Hardwarevoraussetzungen 41 Hauptspeicher 397 HAVING 119, 366 Hierarchische Daten 28 HierarchyId, Datentyp 28, 351, 379 Hochverfügbarkeit 37 HOST_NAME 183, 382 Hotfix 27, 397 Hydra 25 Hyper-V 30 I Identitätsspezifikation 88 Identity 87 IDENTITY 153, 218 IF 160 IIF 137, 382 IIS 397 image 78, 378 Import-/Export-Assistent 60, 63, 270 IN 138, 367 Index 89 gruppiert 91 nicht gruppiert 89 Index Scan 90 Index Seek 89 Indizes 220 INFORMATION_SCHEMA.COLUMNS 381 INFORMATION_SCHEMA.ROUTINES 381 INFORMATION_SCHEMA.TABLES 381 INFORMATION_SCHEMA.VIEWS 381 Inline-SQL 114, 397 INNER JOIN 120 IN-Operator 118 INSERT 122, 127, 131, 143, 369 INSERT- und UPDATE-Spezifikation 99 INSERTED 196 INSERT-Trigger 193 Installation In Place 322 Side by Side 321 Installationscenter 63 Instanz 46 benannte Instanz 47 Standardinstanz 47 407 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Stichwortverzeichnis Instanzkonfiguration 45, 63 INSTEAD OF-Trigger 198 int 77, 377 Integration Services 301, 395 IntelliSense 28, 288, 398 International Organization for Standardization 113 Internet Information Server 398 Internet Protocol 57 ISNULL 182, 382 ISO 113 Isolated Storage 36 J JOIN 120, 367 Juneau 398 K Katmai 25 Kilimanjaro 25 KILL 179 Kompatibilitätsgrad 71 Kompression 29 Komprimierte Sicherung 261 Konfiguration Manager 55, 63 Manager für Reporting Services 58, 59, 298 Reporting Services 51 Konto 49 Konzeptionelles Modell 289 Kumulatives Update 27, 398 L Language Integrated Query 398 LEFT 182, 381 LEFT JOIN 120 LEN 182, 381 Liberty 25 LIKE-Operator 118 Linked Server 309 LINQ 398 LINQ to ADO.NET 285 LINQ to DataSet 285 LINQ to Entities 285, 398 LINQ to Objects 285 LINQ to SQL 36, 285, 398 dbml-Datei 288 LINQ to XML 285 Lizenzbedingungen 386 Lizenzierung 34 LocalDB 34, 38, 39, 45, 313, 398 Local Service 49 Local System 49 LOG 181, 382 Logisches Modell 289 Lokaler Dienst 49 Lokales System 49 LOWER 182, 381 LTRIM 182, 381 M Management Studio 63, 398 Mango 285, 316 Mapping Specification Language 289, 398 Massenoperationen 260 Massenprotokolliertes Wiederherstellungsmodell 260 Master Data Services 30, 32, 398 master.dbo.sp_detach_db 258 master.sp_addsrvrolemember 238 Mathematische Funktionen ABS 382 COS 382 EXP 382 LOG 382 PI 382 SIN 382 MAX 119 MDS siehe Master Data Services Medien 262 Mediensatz 262 Merge 28 MERGE 145, 156, 370 Merge-Replikation 312 Microsoft Data Engine 36, 398 Microsoft Management Console 398 Microsoft Press 389 Microsoft Sync Framework 398 Microsoft WebMatrix siehe WebMatrix MIN 119 Mission Critical Confidence 39 MMC 398 Mobile Edition 316 Mobile Geräte 35 money 77, 377 MONTH 180, 381 MSDE 36, 398 MSDN 390 MSDN-Library 390 408 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Stichwortverzeichnis MSL 289, 398 Multi-Server Management 30 N Named Pipes 57, 398 Namespace 398 nchar 78, 378 .NET 398 .NET-Assembly 351 .NET Framework 42, 398 .NET Framework-Integration 24 Network Service 49 Netzwerkdienst 49 Netzwerkkonfiguration 57 Netzwerkprotokolle Named Pipes 57, 398 Shared Memory 57, 400 TCP/IP 57, 402 VIA 402 Virtual Interface Architecture 57 newid 89 NEWID 183, 382 Nicht gruppierter Index 89 Normalisierung 99, 398 Normalformen 100 Notification Services 24 ntext 78, 378 NULL 79 NULL-Werte 182 numeric 377 Numerische Datentypen 77, 377 nvarchar 78, 378 nvarchar(MAX) 78, 378 O O/R-Mapper 282, 285, 398 Object Linking and Embedding Database 399 Objekt-Explorer 59, 68, 211, 340, 355 OData 399 ODBC 399 Offline schalten 253 OFFSET 148, 366 OLAP 399 cube 399 Tools 24 Würfel 399 OLEDB 399 OLTP 399 Online Analytical Processing 399 Online-Dokumentation 387 Online schalten 253 Online Transaction Processing 399 Open Data Protocol 399 Open Database Connectivity 399 Optimizer Hints 29 Oracle 24 ORDER BY 117, 366 OUTER APPLY 192 OUTER JOIN 121 OUTPUT 187 P Paging 150 Paketausführungsprogramm 62 Pascal Casing 74, 399 PASS 393, 399 Peer-to-Peer-Replikation 312 Performance Data Collector 29 Performance Data Warehouse 29 PI 181, 382 Plan Guides 29 Plato 25 Pocket PC 35, 316, 401 Policy Based Management 28 Power Buffer 340 PowerPivot 30, 32, 399 PowerShell 399 PowerShell 2.0 30 Power View 32, 33, 39, 399 Präsentationsschicht 282 Presentation Layer 282 PRINT 160 processadmin 238 Professional Association for SQL Server 393, 399 Projektdateien 386 Projektmappen-Explorer 346 Projekttyp 340 Protokoll 68, 70, 208 Protokolldatei 215 public 238 Publikation 312 Publisher 312 Q Query Analyzer 58 409 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Stichwortverzeichnis R RAISERROR 166 RAM 399 Random Access Memory 399 RC, Release Candidate 27, 399 RDBMS 399 RDL, Report Definition Language 306, 399 Ready To Manufacturing 27, 400 real 77, 377 REBUILD 220 Rechte 237 Datenbankrechte 240 Serverrechte 237 RECONFIGURE 351 Redundante Informationen 100 Refactor Log 340 Referenzdaten-Deployment 358 Referenzielle Integrität 99 Relationales Datenbank-Management-System 400 Relationen 95 1:1-Relation 96 1:n-Relation 96 m:n-Relation 96 Release Candidate 27, 399 REORGANIZE 220 Replikation 45, 311, 400 Abonnent 312 Artikel 312 Client 312 Distributor 312 Merge-Replikation 312 Peer-to-Peer-Replikation 312 Publikation 312 Publisher 312 Replikationsmonitor 313 Snapshot-Replikation 312 Subscriber 312 Transaktionsreplikation 312 Verleger 312 Verteiler 312 Replikationsclient 312 Replikationsmonitor 313 Report Builder 297 Report Builder 3.0 30 Report Definition Language 306, 400 Report Designer 297, 301 Report Manager 297 Report Server 297 Reporting Services 24, 36, 45, 51, 297, 301, 395 Berichtsserverprojekt 302 Berichtsserverprojekt-Assistent 302 Datenquellen 297 Konfiguration 51, 298 Konfigurations-Manager 298 RDL 306, 399 Report Definition Language 306, 400 Report Designer 297, 301 Report Manager 297 Report Server 297 Reporting Services Konfigurations-Manager 298 Reporting Services-Konfiguration 63 Resource Governor 29 REVOKE 250, 376 Richtig einsteigen 389 RIGHT 182, 381 RIGHT JOIN 120 ROLLBACK 170 ROLLBACK TRANSACTION 171 Rollen 237 Datenbankrollen 240 Serverrollen 237 -zuordnung 236 ROLLUP 141, 366 ROWCOUNT 118 rowversion 379 RTM, Ready To Manufacturing 27, 400 RTRIM 182, 381 S sa, Benutzerkonto 49, 228 Schema 67, 73, 245, 400 Berechtigungen 248 dbo 67, 245 -vergleich 355 Schichtentrennung 282 Schnellüberwachung 164 Schreibweisen 19 securityadmin 238 SELECT 116, 126, 131, 135, 160, 365, 396 GROUP BY 366 HAVING 366 OFFSET 366 ORDER BY 366 TOP 365 WHERE 365 SELECT DISTINCT 117 SELECT INTO 122, 260, 369 SELECT TOP 118 SEQUEL 113, 400 SEQUENCE 153 410 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Stichwortverzeichnis Sequenzen 150 Server 46 serveradmin 238 Serverdienste 47 SQL Server Agent 48 SQL Server Analysis Services 48 SQL Server-Datenbankmodul 48 SQL Server Integration Services 48 SQL Server Reporting Services 48 Startprogramm für SQL-Volltextfilter 48 Server-Explorer 288, 340, 354 Serverrechte 237 Serverrollen 237 benutzerdefiniert 237 bulkadmin 238 dbcreator 238 diskadmin 238 processadmin 238 public 238 securityadmin 238 serveradmin 238 setupadmin 238 sysadmin 238 Servertrigger 222 Service Broker 24, 328 Service Pack 27, 400 SET 157 SET ROWCOUNT 118 setupadmin 238 Sharding 38, 400 Shared Lock 170 Shared Memory 57, 400 Shiloh 25 Sichern von Datenbanken 253, 260 Sicherung Automatisierung 270 differenzielle Sicherung 261 komprimierte Sicherung 261 Medien 262 Mediensatz 262 Sicherungssatz 262 Sicherungsstrategie 268 Transaktionsprotokollsicherung 261 vollständige Sicherung 260 Sicherungssatz 262 Sicherungsstrategie 268 Sichten 107, 125, 131, 221 SIN 181, 382 Skalarwertfunktionen 188 Skriptdateien 386 Skriptgenerierung 207 smalldatetime 78, 379 smallint 77, 377 smallmoney 77, 377 Smartphone 35, 316, 401 SMO 400 Snapshot-Replikation 312 Softlinks 20 Softwarevoraussetzungen 42 Sonstige Datentypen 379 Sortierung 70 sp_addrolemember 376, 382 sp_addsrvrolemember 376, 382 sp_databases 382 sp_rename 382 sp_renamedb 382 sp_sqlexec 382 sp_who 382 sp_who2 382 Spalten 67, 75 Sperren 169 Exclusive Lock 170 Shared Lock 170 Update Lock 170 Sphinx 25 SQL 113, 135, 400 ABS 181 Aggregatfunktionen 192 ALTER DATABASE 216, 255, 259, 370 ALTER FUNCTION 372 ALTER INDEX 220, 372 ALTER PROCEDURE 372 ALTER TABLE 219, 371 ALTER TRIGGER 374 ALTER VIEW 126, 221, 371 Anweisungsblöcke 161 APP_NAME 183 APPLY 192 AVG 119 BEGIN...END 161 BEGIN TRANSACTION 171 benutzerdefinierte Funktionen 188 benutzerdefinierte gespeicherte Prozeduren 184 BREAK 161 BULK INSERT 273 CASE 135, 366 CHECK OPTION 128 CHOOSE 137 COMMIT 170 COMMIT TRANSACTION 171 COMPUTE 142 CONCAT 183 411 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Stichwortverzeichnis SQL (Fortsetzung) CONTINUE 161 COS 181 COUNT 119 CREATE DATABASE 215, 259, 370 CREATE FUNCTION 372 CREATE INDEX 220, 372 CREATE LOGIN 230, 375 CREATE PROCEDURE 372 CREATE ROLE 376 CREATE SCHEMA 246, 371 CREATE TABLE 218, 371 CREATE TRIGGER 222, 374 CREATE USER 375 CREATE VIEW 125, 221, 371 CROSS APPLY 192 CROSS JOIN 120 Cursor 199 Data Control Language 375 Data Definition Language 370 Data Manipulation Language 368 DATEDADD 181 DATEDIFF 181 DATEFROMPARTS 181 DATEPART 180 DAY 180 DCL 375 DDL 370 DECLARE 157 DELETE 124, 128, 131, 144, 369 DENY 250, 376 DISTINCT 117 DML 368 DROP 125 DROP DATABASE 218, 375 DROP FUNCTION 375 DROP INDEX 221, 375 DROP PROCEDURE 375 DROP SCHEMA 246, 375 DROP TABLE 220, 375 DROP TRIGGER 375 DROP VIEW 221, 375 EXEC 177 EXECUTE 177 EXISTS 138, 367 EXP 181 FETCH NEXT 149 FULL JOIN 120 GETDATE 180 GO 125, 156 GRANT 250, 376 SQL (Fortsetzung) GRANT OPTION 250 GROUP BY 119, 366 HAVING 119, 366 HOST_NAME 183 IDENTITY 218 IF 160 IIF 137 IN 138, 367 INNER JOIN 120 IN-Operator 118 INSERT 122, 127, 131, 143, 369 ISNULL 182 JOIN 120, 367 KILL 179 LEFT 182 LEFT JOIN 120 LEN 182 LIKE-Operator 118 LOG 181 LOWER 182 LTRIM 182 MAX 119 Merge 28 MERGE 145, 156, 370 MIN 119 MONTH 180 NEWID 183 OFFSET 148, 366 ORDER BY 117, 366 OUTER APPLY 192 OUTER JOIN 121 OUTPUT 187 PI 181 PRINT 160 RAISERROR 166 RECONFIGURE 351 REVOKE 250, 376 RIGHT 182 RIGHT JOIN 120 ROLLBACK 170 ROLLBACK TRANSACTION 171 ROLLUP 141, 366 ROWCOUNT 118 RTRIM 182 SELECT 116, 126, 131, 135, 160, 365, 396 SELECT DISTINCT 117 SELECT INTO 122, 369 SELECT TOP 118 SET 157 SET ROWCOUNT 118 412 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Stichwortverzeichnis SQL (Fortsetzung) SIN 181 Skalarwertfunktionen 188 Skripts 155 sp_addrolemember 376 sp_addsrvrolemember 376 SUBSTRING 182 SUM 119 Systemvariablen 157 Tabellenvariablen 158 Tabellenwertfunktionen 190 THROW 169 TOP 148, 365 Trigger 193 TRUNCATE TABLE 124, 369 TRY...CATCH 168 UNION ALL 121 UNION SELECT 121, 135, 367 UPDATE 123, 129, 131, 143, 368 UPPER 182 use 115 USER_NAME 183 Variablen 157 WHERE 117, 365 WHILE 161 WITH 148 YEAR 180 SQL Azure 31, 33, 38, 318, 400 DataMarket 33, 39, 400 DataSync 33, 400 Reporting 33, 400 SQL Data Services 38, 400 SQL Native Client 10.0-Konfiguration 57 SQL Server 46, 400 Compact Edition 315 Developer Edition 320 LocalDB 313 Mobile Edition 316 SQL Server 2012 Express 387 SQL Server 2012 Express mit Advanced Services 41, 387 SQL Server 2012 Management Studio 387 SQL Server 2012 Online-Dokumentation 387 SQL Server Agent 48, 400 SQL Server Analysis Services 24, 33, 48, 59, 401 SQL Server-Authentifizierung 49, 228 SQL Server Blogs 393 SQL Server-Browser 48 SQL Server Business Intelligence Edition 40 SQL Server CE 35 SQL Server CLR-Integration 351 SQL Server Compact 401 SQL Server Compact 4.0 388 SQL Server Compact 4.0 Runtime 388 SQL Server Compact Edition 35, 40, 315 SQL Server Compact Edition Books Online 388 SQL Server Data Quality Services 32, 33, 39, 401 SQL Server Data Tools 34, 39, 59, 63, 297, 301, 326, 340, 388, 401 SQL Server Data Tools – Development 339 SQL Server-Datenbankmodul 48 SQL Server-Datenbankprojekt 59 SQL Server Developer Edition 38, 40, 320 SQL Server-Dienste 56 SQL Server Editionen Azure 38 Business Intelligence Edition 40 Compact Edition 35, 40 Developer Edition 38, 40 Enterprise Edition 37, 40 Express Edition 36, 40 Express mit Advanced Services 36, 41 Express mit Tools 36 Parallel Data Warehouse Edition 38, 40 Standard Edition 37, 40 Web Edition 37, 40 SQL Server Enterprise Edition 37, 40 SQL Server Enterprise Manager 401 SQL Server Express Edition 36, 40 SQL Server Express mit Advanced Services 36, 297 SQL Server Express mit Tools 36 SQL Server Foren 393 SQL Server-Import/Export-Assistent 60, 63, 319 SQL Server-Installationscenter 43, 54, 63 SQL Server-Instanz 46 SQL Server Integration Services 24, 32, 48, 59, 273, 319, 401 SQL Server-Konfigurations-Manager 55, 63 SQL Server LocalDB 34, 38, 39, 313, 387, 401 SQL Server Management Objects 401 SQL Server Management Studio 24, 33, 36, 39, 58, 63, 68, 96, 114, 155, 387, 401 Objekt-Explorer 211 Vorlagen-Explorer 213 SQL Server Mobile 35, 401 SQL Server Mobile Edition 316 SQL Server-Netzwerkkonfiguration 57 SQL Server-Objekt-Explorer 355 SQL Server Parallel Data Warehouse Edition 38, 40 SQL Server-Replikation siehe Replikation SQL Server Reporting Services 24, 48, 59, 297, 401 SQL Server Standard Edition 37, 40 413 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Stichwortverzeichnis SQL Server-Tools 54 SQL Server Utility 30 SQL Server Web Edition 37, 40 sql_variant 379 SQL95 25 SQLCMD 61, 63, 114, 155, 401 SqlCommand 283 SqlConnection 283 SQL-Cursor 199 SqlDataAdapter 283 SqlDataReader 283 SqlLocalDB.exe 314 SqlLocalDB-Hilfsprogramm 314 SQL-Skripts 155 SSAS 24, 301, 401 SSCE 401 SSDL 289, 401 SSDT siehe SQL Server Data Tools SSIS, SQL Server Integration Services 24, 273, 301, 401 SSMO 401 SSMS siehe SQL Server Management Studioudio SSRS 24, 301, 401 Standardinstanz 47 Standardwert 79 Startprogramm für SQL-Volltextfilter 48 Statische Code-Analyse 356 Storage Model 289 Storage Schema Definition Language 289, 401 StreamInsight 30, 37, 401 Structured English Query Language 400 Structured Query Language 113, 401 Subscriber 312 SUBSTRING 182, 381 SUM 119 Sybase 23 Sybase Adaptive Server 23 Sync Framework 401 sys.databases 381 sys.sp_databases 177 sys.sp_renamedb 179 sys.sp_sqlexec 180 sys.sp_who 178 sys.sp_who2 178 sysadmin 238 Systemadministrator 49, 228 Systemfunktionen 180, 381 ABS 181 APP_NAME 183, 382 CHOOSE 382 Systemfunktionen (Fortsetzung) COS 181 DATEDADD 181 DATEDIFF 181 DATEPART 180 DAY 180 EXP 181 GETDATE 180 HOST_NAME 183, 382 IIF 382 ISNULL 382 LEFT 182 LEN 182 LOG 181 LOWER 182 LTRIM 182 MONTH 180 NEWID 183, 382 PI 181 RIGHT 182 RTRIM 182 SIN 181 SUBSTRING 182 UPPER 182 USER_NAME 183, 382 YEAR 180 Systemobjekte 380 Systemprozeduren 177, 382 sp_addrolemember 382 sp_addsrvrolemember 382 sp_databases 382 sp_rename 382 sp_renamedb 382 sp_sqlexec 382 sp_who 382 sp_who2 382 sys.sp_databases 177 sys.sp_renamedb 179 sys.sp_sqlexec 180 sys.sp_who 178 sys.sp_who2 178 Systemsichten 380 INFORMATION_SCHEMA.COLUMNS 381 INFORMATION_SCHEMA.ROUTINES 381 INFORMATION_SCHEMA.TABLES 381 INFORMATION_SCHEMA.VIEWS 381 sys.databases 381 Systemvariablen 157, 383 Systemvoraussetzungen 41 414 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Stichwortverzeichnis T U Tabelle 67, 71, 218 Tabellen-Designer 340, 347 Tabellennamen, Schreibweise 74 Tabellenvariablen 158 Tabellenwertfunktionen 190 table 380 Table Scan 89 Table-valued Parameter 29 Tablix Control 29 TCP/IP 57, 402 Team Foundation Server 338 Team Foundation Server Express 358 TechNet 390 tempdb 158, 159 Temporale Datentypen 78 Temporäre Tabellen 158 text 78, 378 THROW 169 time 28, 78, 379 timestamp 379 tinyint 77, 377 TOP 148, 365 Transact-SQL 114, 402 Transaktionen 70, 144, 170, 402 BEGIN TRANSACTION 171 COMMIT TRANSACTION 171 ROLLBACK TRANSACTION 171 Transaktionslog 70, 259 Transaktionsprotokollsicherung 261 Transaktionsreplikation 312 Transmission Control Protocol 57 Transmission Control Protocol/Internet Protocol 402 Trennen von Datenbanken 256 Trigger 193, 221, 402 Datenbanktrigger 222 DDL-Trigger 193, 221 DELETED 196 DELETE-Trigger 193 DML-Trigger 193 INSERTED 196 INSERT-Trigger 193 INSTEAD OF-Trigger 198 Servertrigger 222 UPDATE-Trigger 193 TRUNCATE TABLE 124, 369 TRY...CATCH 168 T-SQL 33, 39, 114, 401 Unicode 77, 402 Unicode-Komprimierung 31, 77 Unified Ressource Locator 402 UNION ALL 121 UNION SELECT 121, 135, 367 Unique Identifier 402 uniqueidentifier 78, 89, 153, 183, 380 Unit Test 358 Unstrukturierte Daten 28 Unterabfragen 138, 367 UPDATE 123, 129, 131, 143, 368 Update Lock 170 Updates 54 UPDATE-Trigger 193 Upgrade 320 UPPER 182, 381 URL 402 use 115 USER_NAME 183, 382 Utility Control Point 30 V varbinary 78, 378 varbinary(MAX) 78, 378 varchar 78, 378 varchar(MAX) 78, 378 Variablen 157 Lebensdauer 158 Systemvariablen 157 Tabellenvariablen 158 Verbinden von Datenbanken 256 Verbindungsserver 309 Verbindungszeichenfolge 228 Verleger 312 Verteiler 312 VIA siehe Virtual Interface Architecture Views 107, 125 Virtual Interface Architecture 57, 402 Visual Basic .NET 402 Visual C# 402 Visual Studio 301, 326, 402 Visual Studio 11 357 Visual Studio for Database Professionals 339 Vollständige Sicherung 260 Vollständiges Wiederherstellungsmodell 260 Volltextkatalog 328 Volltextsuche 45 415 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0 Stichwortverzeichnis Vorlagenbrowser 213 Vorlagen-Explorer 213 W WebMatrix 317 Webservice 402 Website 20 WHERE 117, 365 WHILE 161 Wiederherstellen von Datenbanken 253, 260 Wiederherstellungsmodell 71, 260 einfach 71, 260 massenprotokolliert 71, 260 vollständig 71, 260 Windows Azure 38, 402 Windows Mobile 35, 312, 401 Windows Phone 35, 285, 312, 316 Windows PowerShell 42 Windows Update 54 Windows-Authentifizierung 49, 227 Windows-Benutzer 230 Windows-Benutzergruppen 230 WITH 148 Y YEAR 180, 381 Yukon 25 Z Zeichenkettenfunktionen CONCAT 381 LEFT 381 LEN 381 LOWER 381 LTRIM 381 RIGHT 381 RTRIM 381 SUBSTRING 381 UPPER 381 Zeilen 67 Zeilendaten 68, 70, 208 Zeit- und Datumstypen 379 Zuordnungsschicht 289 X xml 78, 380 XML 402 XML, Datentyp 351 XML-Unterstützung 24 416 Robert Panther - Richtig einsteigen: Datenbanken entwickeln mit SQL Server 2012, Microsoft Press, ISBN 978-3-86645-219-0