Cover

Inhalt

Titelei

Impressum

Inhalt

Vorwort

1 Der SQL Server 2017 stellt sich vor

1.1 SQL Server – wer ist das?

1.1.1 Der SQL Server im Konzert der Datenbanksysteme

1.1.2 Entscheidungsszenarien für Datenbanksysteme

1.1.3 Komponenten einer Datenbankanwendung

1.1.4 SQL Server – das Gesamtkonzept

1.2 Versionen und Editionen des SQL Servers

1.3 SQL Server 2017 installieren

1.4 Datenbanken installieren und nutzen

1.5 Gratis: die Express Edition

1.6 SQL Server Feature Pack

2 Die grafischen Tools des SQL Server 2017

2.1 Die Tools im Überblick

2.2 Das Management Studio

2.3 Das Kommandozeilentool: SQLCMD

2.4 Der Konfigurations-Manager

2.5 Das SQL Server-Installationscenter

2.6 Der Profiler

2.7 Der Datenbankoptimierungsratgeber

2.8 Die SQL Server Data Tools

2.9 Der Import/Export-Assistent

2.10 Der SQL Server Migration Assistant

2.11 SQL Operations Studio

3 Eine neue Datenbank erstellen

3.1 Erstellen einer neuen Datenbank

3.1.1 Bestandteile einer Datenbank

3.1.2 Datenbank mit dem grafischen Tool anlegen

3.1.3 Datenbank über eine SQL-Anweisung erstellen

3.1.4 Datenbank mit Filestream ausstatten

3.2 Tabellen in der Datenbank erstellen

3.2.1 Tabellenfelder definieren

3.2.2 Spalteneigenschaften

3.2.3 Constraints

3.2.4 Indizierung

3.2.5 Erste Daten erfassen

3.3 Datenbankdiagramme einsetzen

3.4 Richtlinien für Benennungsregeln einsetzen

3.5 Was Sie noch wissen sollten . . .

3.5.1 Tabellen in anderen Dateigruppen speichern

3.5.2 Tabellen direkt mit DDL-Anweisungen erstellen

3.5.3 Gefahren der grafischen Oberfläche

3.5.4 Berechnete Spalten integrieren

3.5.5 Objekte und Datenbanken skripten

3.6 Tabelle mit Filestream und FileTable

3.6.1 Tabelle mit Filestream erstellen

3.6.2 Objekte in einer FileTable speichern

3.7 Beispieldatenbank generieren

3.8 Speicheroptimierte Tabellen

3.8.1 Datenbank mit In-Memory-Filegroup erstellen

3.8.2 Speicheroptimierte Tabelle anlegen

3.8.3 Index für speicheroptimierte Tabellen

3.8.4 Speichernutzung beschränken

4 SQL – Zugriff auf Daten

4.1 Einsatz des Abfrage-Designers

4.1.1 Die Bereiche des Abfrage-Designers

4.1.2 Erstellen einer Abfrage

4.2 Sichten für den Datenzugriff gestalten

4.2.1 Gründe für den Einsatz von Sichten

4.2.2 Erstellen einer Sicht

4.2.3 Daten aus einer Sicht abrufen

4.3 SQL-Anweisungen verwenden

4.3.1 Data Query Language (DQL)

4.3.2 Data Manipulation Language (DML)

4.3.3 Die MERGE-Anweisung

4.3.4 Den Abfrage-Designer im Abfrageeditor einsetzen

4.4 Abfragen mit Geodaten

4.4.1 Typen im Geodatenmodell

4.4.2 Geodaten in Tabellen speichern und verwenden

4.4.3 Index für räumliche Daten

5 Transact-SQL – die Sprache zur Serverprogrammierung

5.1 Bestandteile und Funktionalität von Transact-SQL

5.1.1 Variablen und Datentypen

5.1.2 Benutzerdefinierte Tabellentypen

5.1.3 Funktionen

5.1.4 Kontrollstrukturen

5.1.5 Cursor für Datenzugriffe einsetzen

5.2 Transaktionen gezielt steuern

5.2.1 Automatische Transaktionen

5.2.2 Explizite und implizite Transaktionen

5.2.3 Benannte Transaktionen

5.3 SET-Optionen verwenden

5.4 Fehlerbehandlung in den Code einbauen

5.5 Sequenzen

5.6 Paging mit OFFSET und FETCH

5.7 Window-Funktionen

6 Gespeicherte Prozeduren, Funktionen und Trigger

6.1 Gespeicherte Prozeduren programmieren

6.1.1 Aufbau einer gespeicherten Prozedur

6.1.2 Erzeugen einer gespeicherten Prozedur

6.1.3 Einfache gespeicherte Prozeduren

6.1.4 Gespeicherte Prozeduren mit Eingabeparametern

6.1.5 Ergebnisrückgabe von Prozeduren

6.1.6 Cursor in gespeicherten Prozeduren nutzen

6.1.7 Transaktionen in Prozeduren

6.1.8 Table-Valued Parameter einsetzen

6.1.9 Systemintern kompilierte gespeicherte Prozeduren

6.1.10 Gespeicherte Prozeduren aus Client-Anwendungen heraus aufrufen

6.2 Mit Triggern automatisieren

6.2.1 DML-Trigger: Insert, Update, Delete

6.2.2 Triggerreihenfolge festlegen

6.2.3 INSTEAD OF-Trigger

6.2.4 Rekursive Trigger

6.2.5 Trigger löschen

6.2.6 Systemeigen kompilierte Trigger

6.2.7 DDL-Trigger

6.3 Benutzerdefinierte Funktionen implementieren

6.3.1 Skalarwertfunktionen

6.3.2 Inline-Funktionen

6.3.3 Tabellenwertfunktionen

6.3.4 Systemintern kompilierte benutzerdefinierte Funktionen

6.4 Debuggen

6.4.1 Voraussetzungen für das Debuggen

6.4.2 Debuggen einer gespeicherten Prozedur

6.4.3 Debuggen von Triggern

6.4.4 Debuggen von Funktionen

6.5 Praxistipps

6.5.1 Fehleranalyse mit ERROR_MESSAGE()

6.5.2 Fehler gezielt zur Ablaufsteuerung einsetzen

6.5.3 Fehlerprotokoll führen

6.5.4 Über Fehler benachrichtigen lassen

6.5.5 Automatisierte Importe mit BULK INSERT

7 SQL Server CLR-Integration

7.1 Mit im Boot: .NET Framework

7.1.1 Integration mit dem Visual Studio

7.2 CLR-Aktivierung

7.2.1 Code auf den Server bringen: Assembly

7.3 .NET User-Defined Functions

7.4 .NET Stored Procedures

7.4.1 Datenzugriff aus der CLR heraus

7.4.2 Prozeduren mit Werterückgabe

7.4.3 Zugriff auf externe Daten

7.5 .NET-Trigger

7.6 User-Defined Aggregates (UDA)

7.7 Externe Assemblys verwenden

7.8 CLR-Sicherheitseinstellungen

7.8.1 Assembly als vertrauenswürdig erklären

7.8.2 Assembly signieren

7.9 Verwalten des Servers mit SMO

7.10 Übrigens: Debuggen

7.10.1 Debuggen einer T-SQL Stored Procedure

7.10.2 Debuggen einer .NET-Stored Procedure

8 Data Tier Applications und SQL Server Data Tools

8.1 Datenebenenanwendungen

8.1.1 DAC über Management Studio erstellen

8.1.2 Eine DAC auf dem SQL Server bereitstellen

8.1.3 Aktualisieren einer DAC

8.1.4 Entfernen einer DAC

8.1.5 Von DACPAC zu BACPAC

8.1.6 Erstellen einer DAC mit dem Visual Studio

8.2 Die SQL Server Data Tools

8.2.1 Ein neues Datenbankprojekt erstellen

8.2.2 Datenbankobjekte erstellen

8.2.3 Datenbankprojekt bereitstellen

8.2.4 Schemavergleich

8.2.5 Datenbank in ein Datenbankprojekt importieren

8.2.6 Ersatz für das Management Studio?

9 Client-Server-Datenbank verwalten

9.1 Anfügen und Trennen von Datenbanken

9.1.1 Trennen einer Datenbank

9.1.2 Anfügen einer Datenbank

9.1.3 Option »Automatisch schließen«

9.2 Datenbank sichern

9.2.1 Sicherungsvarianten

9.2.2 Sicherungsziele

9.2.3 Sicherung mit dem Management Studio

9.2.4 Sicherung über TRANSACT-SQL

9.2.5 Zeitgesteuerte Sicherung mit dem SQL Server-Agent

9.2.6 Zeitgesteuerte Sicherung mit der Express Edition

9.2.7 Datenbank wiederherstellen

9.2.8 Einsatz der Zeitachse beim Wiederherstellen

9.2.9 Wiederherstellung über Transact-SQL

9.2.10 Desaster Recovery

9.2.11 Recovery mit FILESTREAM

9.3 Datenänderungen protokollieren

9.3.1 Change Data Capture

9.3.2 Temporale Tabellen

9.4 Mit mehreren Instanzen arbeiten

9.4.1 Standardinstanzen und benannte Instanzen

9.4.2 Zugriff auf Instanzen steuern

10 Sicherheit und Zugriffsberechtigungen

10.1 Authentifizierungsmodi – Anmeldungen und Benutzer

10.1.1 Windows-Authentifizierung

10.1.2 Gemischter Modus

10.1.3 Anmeldung und Benutzer

10.2 Berechtigungen

10.3 Rollen

10.3.1 Serverrollen

10.3.2 Datenbankrollen

10.3.3 Anwendungsrollen

10.4 Anmeldeinformationen (Credentials)

10.5 Schema

10.6 Verwaltung im Management Studio

10.6.1 Serveranmeldung hinzufügen

10.6.2 Schema anlegen

10.6.3 Datenbankbenutzer hinzufügen

10.6.4 Rollen in einer Datenbank anlegen

10.7 Berechtigungen vergeben

10.7.1 Berechtigungen auf Datenbankebene

10.7.2 Berechtigungen auf Serverebene

10.8 Lösungen mit T-SQL

10.8.1 Sicherheitsobjekte anlegen

10.8.2 Generische Skripte

10.9 Contained Databases

10.10 Administratorzugriff wiederherstellen

10.11 Indirekte Zugriffe verwalten

10.11.1 Datenzugriffe über Sichten

10.11.2 Sicherheit mit Prozeduren erhöhen

10.12 Sicherheit auf Zeilenebene

10.12.1 Bestandteile von Row Level Security (RLS)

10.12.2 Sicherheitsfunktion erstellen

10.12.3 Security Policy definieren

10.12.4 Ändern von Sicherheitsrichtlinien

10.13 Zugriff auf andere Server

10.13.1 SQL Server als Verbindungsserver

10.13.2 Verbindungsserver mit Fremdprodukten

10.14 Daten verschlüsseln mit Always Encrypted

10.14.1 Voraussetzungen für Always Encrypted

10.14.2 Konfiguration von Always Encrypted

10.14.3 Vorhandene Daten verschlüsseln

10.14.4 Abfragen von verschlüsselten Daten

10.14.5 Erstellen von Tabellen mit verschlüsselten Spalten

10.14.6 Einfügen von Daten mit Verschlüsselung

10.14.7 Treibereinsatz am Client

11 Erweiterte Funktionalitäten

11.1 Datenbank-E-Mail

11.1.1 Einrichten von Datenbank-E-Mail

11.1.2 E-Mails aus der Anwendung heraus versenden

11.1.3 Varianten des E-Mail-Versands

11.1.4 Konfiguration über Systemprozeduren

11.1.5 Mailbenachrichtigung für Agent-Aufträge

11.2 Integration Services

11.2.1 Datenabgleich mit IS

11.2.2 Pakete ausführen und auf den Server bringen

11.2.3 SSIS-Projekte auf den Server bringen

12 SQL Server 2017 auf Linux

12.1 Installation des SQL Servers

12.2 Kommandozeilentools installieren

12.2.1 SQLCmd mit ODBC

12.2.2 mssql-cli

12.3 Server-Agent ergänzen

12.4 Integration Services

12.5 Serverdienst starten

12.6 Updates installieren

12.7 Weitere Konfiguration

12.8 Windows-Authentifizierung

12.9 Linux auch am Client: SQL Operations Studio

A Anhang

A.1 Die Tabellen der Datenbank WAWI

Klemens Konopasek

SQL Server 2017

Der schnelle Einstieg

Der Autor:

Klemens Konopasek, Gössendorf/Graz
klemens@konopasek.at

Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht.

Ebenso übernehmen Autor und Verlag keine Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen­ und Markenschutz­Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.

Bibliografische Information der Deutschen Nationalbibliothek: Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.

Lektorat: Sylvia Hasselbach
Copyediting: Walter Saumweber, Ratingent
Umschlagdesign: Marc Müller-Bremer, München, www.rebranding.de
Umschlagrealisation: Stephan Rönigk

Print-ISBN 978-3-446-44826-1
E-Book-ISBN 978-3-446-44916-9

Verwendete Schriften: SourceSansPro und SourceCodePro (Lizenz)
CSS-Version: 1.0

Font License Zurück zum Impressum

Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

Vorwort

Eine neue SQL Server-Version ist da! Dies bedeutet einerseits viel Freude, wieder mit neuen Features Aufgabenstellungen aus der Praxis noch besser lösen zu können, und andererseits aber auch, dass ich mich wieder hinsetzen muss, um dieses Buch für diese neue Version zu schreiben. Aber das mache ich gerne für Sie!

Und da es viele spannende Neuerungen vorzustellen gibt, ist die Seitenanzahl bei dieser Neuauflage ordentlich angestiegen. Sie werden sich vielleicht fragen, ob der Untertitel Der schnelle Einstieg zu einem Buch passt, das eine Stärke von über tausend Seiten aufweist. Die Antwort ist: und ob! Denn selbst in unserer schnelllebigen Zeit hat das Attribut schnell auch noch andere Bedeutungen als rasch oder kurz. Schlägt man den Duden auf, findet man unter dem Begriff schnell als erstes die beiden Verwendungen schnellstens und so schnell wie möglich vor. Diese beiden passen perfekt zum Charakter des Buches. Der Microsoft SQL Server ist ein so umfangreiches Produkt, dass ein rascher oder kurzer Einstieg gar nicht möglich sein kann. Ich bin vielmehr bemüht, durch die Auswahl der Themen und die Fokussierung auf in der Praxis relevante Schwerpunkte Sie so zu unterstützen, dass Ihr Einstieg schnellstens und so schnell wie möglich, und damit verbunden auch effizient, erfolgreich und angenehm erfolgen kann.

Der SQL Server 2017 kommt ja in sehr kurzem Abstand nach dem SQL Server 2016. Daher kommen in dieser Ausgabe Neuerungen beider Versionen zum Zug. Soweit es den SQL Server 2017 betrifft, ist die wohl unangefochten größte Neuerungen die Verfügbarkeit unter Linux. Dies ist auf Entwicklungen der letzten Jahre zurückzuführen, die zuvor absolut unvorstellbar und als Paradigmenbruch gegolten haben. So hat Microsoft in den letzten Jahren eine unheimlich umfassende Öffnung zu anderen Systemen vollzogen. Ist man vor einigen Jahren schon glücklich gewesen, wenn man auf einem Apple- oder Android-Smartphone ein Word-, Excel- oder PowerPoint-Dokument irgendwie zum Lesen anzeigen konnte, sind mittlerweile die Office-Anwendungen für viel Plattformen Standard. Mit der Öffnung der Produkte für nicht Windows-Plattformen ist ein Meilenstein in der Microsoft-Geschichte gesetzt worden, bei dem die Funktionalität und der Service im Vordergrund stehen. Parallel dazu sind die Angebote in der Cloud mit Azure derart umfangreich geworden, dass damit viele Anforderungen ohne Abstriche umgesetzt werden können. Gleichzeitig hat sich die Funktionalität und Usability von Web-Oberflächen – stelle man sich an dieser Stelle Office 365 vor – dermaßen verbessert, dass hier kaum noch Abstriche gegenüber einer Windows-Anwendung gemacht werden müssen.

Ende 2016 ist Microsoft Platinum-Mitglied der Linux-Foundation geworden und bekennt sich damit offiziell zu diesem Betriebssystem. Der SQL Server für Linux ist meiner Ansicht nach bislang die Krönung dieser Mitgliedschaft und der zuvor beschriebenen Entwicklungen. Schon davor ist der SQL Server die führende Datenbankplattform unter Windows gewesen, mit der Ausweitung auf Linux wird der Einsatzbereich noch einmal ganz deutlich vergrößert. Die Form der Implementierung ist insbesondere bemerkenswert, als der SQL Server nicht einfach für Linux nachgebaut worden ist. Die codegleiche Basisengine ist über eine neue Abstraktionsschicht auch unter dem freien Betriebssystem lauffähig geworden.

Servervirtualisierung ist unabhängig vom Betriebssystem State of the Art geworden und auch der Weg in die Cloud ist für Datenbanken an der Schwelle zur breiten Anerkennung. Die Virtualisierung und die Cloud sind endgültig auch bei der Datenbank angekommen. Dies hängt auch damit zusammen, dass sich die Virtualisierungsprodukte derart weiterentwickelt haben, dass Vorbehalte speziell für Datenbankserver nicht mehr bestehen. Es gibt es keine Nachteile mehr gegenüber einem physischen Server. Damit ist mit den Datenbanken eine der letzten Virtualisierungslücken bereits geschlossen. Ausnahmslos alle SQL Server bei meinen Kunden sind längst virtualisierte Server. Anwendungen in die Cloud auszulagern verliert langsam an Schrecken und Vorbehalte verschwinden. Mit dem Inkrafttreten der europäischen Daten­schutz­grund­verordnung (DSGVO) im Mai 2018 ist es besonders wichtig, dass die großen Cloud-Anbieter europäische Serverstandorte anbieten und die hun­dert­pro­zen­tige Datenhaltung in Europa garantieren können.

Mit Windows Azure SQL-Datenbank steht eine einfach zu verwendende und leistungsstarke Cloud-Plattform für den SQL Server zur Verfügung, der Unternehmen den Betrieb eines Datenbankservers in kostengünstiger und effizienter Form ermöglicht. Um Themen wie Verfügbarkeit, Hardware und Skalierbarkeit müssen Sie sich dann keine Gedanken machen. Die Themen Virtualisierung und Cloud trennen die Entscheidungen für eine neue Server-Hardware und das Update der Datenbankversion voneinander. Ist der Umstieg auf eine neue Datenbankversion in der Vergangenheit mit dem Tausch der Server-Hardware einher­ge­gangen, kann aufgrund der beschriebenen Entwicklungen ein Umstieg wesentlich zügiger vonstattengehen. Sie müssen nicht so lange auf den Einsatz der tollen neuen Features warten.

Die Neuerungen

Die Neuerungen des SQL Server 2016/2017 gegenüber ihrer Vorversion sind im Bereich der Datenbankengine auf mehrere Schwerpunkte fokussiert. Daten unter dem Schlagwort „In-Memory OLTP“ zur Gänze im Arbeitsspeicher zu halten ist als Feature ganz enorm verbessert worden, temporale Tabellen ermöglichen das Abfragen der Daten und deren Veränderung über die Zeit und die Datensicherheit steigt mit der Verschlüsselung von Daten und der Möglichkeit, Zugriffe auf Datensatzebene zu steuern. Zusätzlich bekommt der SQL Server 2017 mit dem SQL Server Management Studio 17 eine neue Version, welche auch die Nutzung des SQL Server unter Linux unterstützt. Auch wenn die altbekannten Clientprogramme auf Windows beschränkt bleiben, drängen neue Werkzeuge nach, die auch unter Linux und MacOS verfügbar sind. Diese sind das Visual Studio Code, das SQL Operations Studio und das Kommandozeilentool mssql-cli.

Verbesserte Werkzeuge für die Entwicklung unterstützen die Arbeit in einheitlicher Form für alle Plattformen. Die einheitliche Entwicklungsoberfläche stellt eines der Schwerpunktthemen dar. Die Bereiche Datenbank- und Anwendungsentwicklung wachsen immer näher zusammen. Sehen Sie sich das an, Sie werden sicher auch begeistert sein.

Für wen ist das Buch gedacht

Dieses Buch richtet sich an all diejenigen, die sich in SQL Server 2017 einarbeiten möchten. Es sind nicht nur Einsteiger in dieses Thema und dieses Produkt, sondern auch Umsteiger von MS Access und Softwareentwickler, die Datenbankkenntnisse für die Umsetzung ihrer Projekte benötigen. Das Buch ist bemüht, aus der Vielzahl an Möglichkeiten jene Themen herauszufiltern, die für das Arbeiten mit dem Produkt besonders wichtig sind und am häufigsten in der Praxis benötigt werden. Insofern habe ich für Sie mit der Auswahl der Inhalte eine Vorentscheidung getroffen, die Ihnen durch die Konzentration auf das Wesentliche den schnellen Einstieg erleichtern soll. Mit den in diesem Buch vermittelten Kenntnissen werden Sie in die Lage versetzt, effizient und umfassend mit dem neuen SQL Server zu arbeiten. Auch Umsteiger von früheren SQL Server-Versionen werden hier wertvolle Informationen für ihre weitere Arbeit mit dem Produkt finden. Schließlich sind nicht nur neue Features hinzugekommen, auch so manche altbekannte Funktionalität ist nun an einer anderen Stelle und manchmal unter einem neuen Namen anzutreffen. Dies ist vor allem für viele, die eine oder mehrere Versionen des SQL Servers übersprungen haben, eine wertvolle Hilfe.

Unter der Systemumgebung Windows hat der SQL Server mittlerweile die absolute Marktführerschaft bei Client-Server-Datenbanken erlangt. Ein großer Vorteil ist: Um auch anspruchsvolle Anwendungen zu realisieren, kann ein und dasselbe Datenbankmodul des SQL Servers plattformübergreifend verwendet werden: angefangen bei Notebooks unter Microsoft Windows 10 bis hin zu großen Multiprozessor-Servern unter Microsoft Windows Server 2016 Datacenter Edition. Mit dem SQL Server 2017 für Linux fällt für viele ein letzter Nachteil für den SQL Server bei der Auswahl eines Datenbanksystems weg.

Aufbau des Buches

Die Abschnitte des Buches sind so aufgebaut, dass Sie direkt an Ihrem Computer arbeiten und die Anwendungen unmittelbar durch Nutzung des SQL Servers ausprobieren und realisieren können. Zum Aufbau des Buches im Einzelnen:

Im ersten Kapitel gebe ich Ihnen einen Einstieg in die Leistungsmerkmale und Anwendungspotenziale des SQL Server 2017. Neben der Vorstellung der Editionen sowie der Erläuterung der Vorgehensweise zur Installation erfahren Sie, welche Voraussetzungen Ihr System für den Einsatz von SQL Server 2017 erfüllen muss.

Im zweiten Kapitel lernen Sie die Tools kennen, mit denen Sie auf den SQL Server zugreifen können. Sie benötigen diese, um den SQL Server zu verwalten und auf ihm Datenbanken zu erstellen, aber auch um mit ihm Anwendungen optimal entwickeln zu können. Hier kommen Sie erstmals mit dem SQL Server Management Studio in Kontakt, welches das wichtigste dieser Tools ist und sowohl für die Programmierung als auch die Administration eingesetzt wird.

Das dritte Kapitel befasst sich mit der Erstellung einer Datenbank, dem Anlegen von Tabellen und dem Einrichten von Beziehungen. Sie erfahren dabei, aus welchen Komponenten eine SQL Server-Datenbank besteht, und lernen gleichzeitig, Datenintegrität durch den Einsatz von Constraints zu implementieren. Der Einsatz von Datenbankdiagrammen, die nicht nur zum Erstellen von Tabellen und Beziehungen dienen, sondern auch ein ideales Tool zur Dokumentation einer Datenbank sind, wird ebenso beschrieben. Die FileTables kommen in diesem Kapitel auch nicht zu kurz. Kopieren Sie Dateien in einen Ordner auf einem Netzwerk-Share, und schon tauchen diese automatisch wie von Geisterhand in der Datenbank auf.

Im Regelfall wollen Sie nicht ausschließlich Daten in eine Datenbank einpflegen, sondern natürlich Informationen auch wieder aus dem System entnehmen. Zu diesem Zweck erfahren Sie im vierten Kapitel, wie Sie effizient durch den Einsatz von Abfragen, Sichten und SQL-Anweisungen auf Daten zugreifen. Sie erhalten dabei auch einen kompakten Überblick über die wichtigen Sprachbereiche und Anweisungen von SQL (Structured Query Language).

Kapitel 5 bietet Ihnen einen Überblick über die Datenbanksprache Transact-SQL, die Ihnen sowohl bei der Datenbankprogrammierung als auch bei der Verwaltung von Datenbanken wertvolle Dienste leistet. So können alle Aufgaben, die Sie mit einem grafischen Verwaltungstool erledigen, auch direkt über diese Sprache realisiert werden. Dadurch können Sie solche Aufgaben in Ihre Applikationen einbauen oder sich Ihre eigenen Verwaltungstools zusammenstellen. Dieses Kapitel erläutert Ihnen die Sprachkomponenten und die dabei verwendeten Strukturen. In der Übersicht der wichtigsten Funktion finden Sie auch jene, die beim SQL Server 2017 neu hinzugekommen sind.

Nach der allgemeinen Einführung in Transact-SQL lesen Sie in Kapitel 6, wie Sie diese Sprache zur Programmierung von gespeicherten Prozeduren (Stored Procedures) einsetzen. Durch den gezielten Einsatz solcher Prozeduren bilden Sie die datenbezogenen Vorgänge Ihrer Datenbankapplikation auf dem Server ab. Diese müssen dann von den verschiedenen Client-Programmen nur noch aufgerufen werden. So realisieren Sie effiziente Client-Server-Applikationen.

Transact-SQL wird aber auch zur Programmierung von Triggern verwendet, die es Ihnen erlauben, Automatismen in Ihre Datenbank zu integrieren, die auf das Einfügen, Ändern und Löschen von Datensätzen reagieren. Besonders interessant für die Praxis sind mittlerweile auch Datenbanktrigger, mit denen Sie sowohl Änderungen an der Datenbankstruktur überwachen als auch bei Bedarf unterbinden können. Des Weiteren lernen Sie die benutzerdefinierten Funktionen (User-Defined Functions, UDFs) kennen. Diese Funktionen können im Gegensatz zu gespeicherten Prozeduren auch in SQL-Anweisungen eingesetzt werden und erweitern dadurch den Einsatzbereich in der Programmierung von Transact-SQL. Sie können sie darüber hinaus auch verwenden, um die Standardfunktionen vom SQL Server zu erweitern.

Das Kapitel 7 beschäftigt sich mit dem Thema .NET im Zusammenhang mit dem SQL Server. Sie lesen hier nicht nur, wie Sie Prozeduren, Funktionen und Trigger mit einer .NET-Programmiersprache für die SQL Server CLR (Common Language Runtime) entwickeln, sondern auch, wie Sie Aggregatfunktionen selbst programmieren. Diese stehen Ihnen dann innerhalb von SQL-Anweisungen wie andere Aggregatfunktionen zur Verfügung. Ein wesentliches Augenmerk habe ich dabei auf die neuen Sicherheitsanforderungen, die für das Ausführen von CLR-Code ab dem SQL Server 2017 erfüllt sein müssen, gelegt. Lesen Sie dazu in diesem Kapitel, wie Sie Ihren Programmcode mit Zertifikaten signieren.

Die Server Management Objects (SMO), mit denen Sie auf so gut wie alle Funktionalitäten des SQL Servers programmatischen Zugriff haben, runden das Kapitel ab. Durch die SQL Server Data Tools wird die Programmierung für die SQL Server CLR interessant, da dazu ein extrem leistungsstarkes und dazu noch freies Werkzeug verwendet werden kann.

Die SQL Server Data Tools revolutionieren für Entwickler die Arbeit mit der Datenbank. Daher sind sie es mir wert, gemeinsam mit den Datenebenenanwendungen ein eigenes Kapitel, das mit der Nummer 8, zu bekommen. Datenebenenanwendungen, oder Data Tier Applications, wie sie im Original genannt werden, sind mittlerweile schon fast schon integraler Bestandteil für viele Phasen der Datenbankentwicklung. Sie sind das Werkzeug, um Datenbanken auszurollen und Aktualisierungen und Versionierung zu organisieren. Sie sind in die SQL Server Data Tools fest integriert. Die Data Tools sind ein Werkzeug, mit dem es für Programmierer möglich ist, unter dem Dach des Visual Studios mit einem Werkzeug alle Entwicklungsaufgaben von der Datenbank bis zum Frontend zu erledigen.

Da Sie von einer Datenbank nicht viel haben, wenn Ihre wertvollen Daten nicht sicher sind, erfahren Sie in Kapitel 9, wie Sie eine SQL Server-Datenbank regelmäßig sichern und im Ernstfall auch wiederherstellen können. Datenbanksicherungen haben ihre Bedeutung aber nicht nur in einem Störfall, sondern sind auch in der täglichen Arbeit mit der Datenbank wichtig, weil sie zum Beispiel auch dafür verwendet werden, eine Datenbank von einem Server auf einen anderen zu übertragen. Besonders begeistert bin ich von den temporalen Tabellen, die ohne Programmieraufwand Veränderungen der Daten über die Zeit verfügbar machen.

In Kapitel 10 finden Sie alle Informationen, die Sie für die Herstellung der Sicherheit Ihrer Datenbank benötigen. Sie lesen in diesem Kapitel, wie Sie auf Ihrem SQL Server Benutzer anlegen und diesen verschiedene Berechtigungen zuweisen. Sie erfahren, wie Sie Contained Databases einsetzen und nutzen können. Lesen Sie in diesem Kapitel auch, wie Sie den Zugriff auf Zeilenebene einschränken und Ihre Daten mit Always Encrypted verschlüsseln können. Damit können Sie den Anforderungen der europäischen Daten­schutz­grund­ver­ordnung (DSGVO) mit dem SQL Server noch besser gerecht werden.

In Kapitel 11 erläutere ich Ihnen zwei erweiterte Funktionalitäten, die Ihnen ergänzend zur Verfügung stehen, falls Sie nicht die Gratis-Edition des SQL Servers 2017 verwenden. Ich stelle Ihnen hierbei Datenbank-E-Mail sowie die Integration Services etwas genauer vor.

In Kapitel 12 zeige ich Ihnen am Beispiel von Ubutu, wie Sie einen SQL Server unter Linux installieren und einsetzen.

Mit diesem Buch lernen Sie anhand von problembezogenen Aufgabenstellungen in anschau­licher und systematischer Form die zahlreichen Möglichkeiten des SQL Server 2017 für die Datenbankentwicklung kennen. Das Buch eignet sich sowohl zum Selbststudium als auch als begleitende Unterlage für Schulungen.

Image

www.downloads.hanser.de

Hier finden Sie sämtliche Dateien aller im Buch verwendeten Beispiele. Diese enthalten u. a. die Beispiel-Datenbanken, SQL-Skripte zu jedem Kapitel sowie Visual Studio-Projekte.

Ich möchte mich an dieser Stelle bei meinem Dreimäderlhaus – Petra, Alina und Lea – für ihre immense Geduld bedanken.

Und nun viel Erfolg beim schnellen Einstieg in die Arbeit mit dem SQL Server 2017.

Klemens Konopasek, Gössendorf/Graz

Icons

In diesem Buch werden verschiedene Icons verwendet, deren Bedeutung Sie hier finden.

Image

Hinweis: Mit diesem Symbol soll auf interessante Informationen besonders hingewiesen werden.

Image

Praxistipp: Mit diesem Symbol sind Informationen gekennzeichnet, mit denen Sie sich das Leben leichter machen können.

Image

Achtung! Sehen Sie dieses Icon, finden Sie Informationen, wie Sie etwas nicht machen oder worauf Sie ein ganz besonderes Augenmerk legen sollten.

1 Der SQL Server 2017 stellt sich vor