SQL Server 2017

Mehr Linux, Docker und Python

30.05.2017
Von Thomas Joos
Mit dem SQL Server 2017 macht Microsoft große Schritte auf Linux und Docker zu. Die neue Datenbankversion unterstützt mehr Plattformen und Programmiersprachen.

Microsoft beschleunigt die Bereitstellung von neuen SQL-Server-Versionen deutlich. Bis dato sind die meisten Unternehmen noch nicht einmal auf SQL Server 2016 migriert, da steht Microsoft schon kurz vor der Veröffentlichung von SQL Server 2017. Bisher war das Produkt vor allem unter den Bezeichnungen SQL Server 2016 vNext oder SQL Server vNext bekannt. Da Microsoft den offiziellen Namen SQL Server 2017 gewählt hat, wird klar, dass die neue Version noch dieses Jahr erscheinen soll - wann genau, ist derzeit aber noch nicht klar.

Die neue Datenbankversion von Microsoft soll noch in diesem Jahr herauskommen.
Die neue Datenbankversion von Microsoft soll noch in diesem Jahr herauskommen.
Foto: Tommy Lee Walker - shutterstock.com

Microsoft stellt derzeit die Vorabversion CTP2 seiner neuen Datenbankserver-Version zum Download bereit. Die CTP2 ist auf Windows-Servern installierbar, unterstützt aber auch die Installation auf Linux-Servern. Dazu bietet Microsoft interessierten Anwendern verschiedene Anleitungen und Images zur Installation. Neben der Zusammenarbeit mit Windows Server 2016 und der Installationsmöglichkeit auf Linux-Servern, bietet SQL Server 2017 weitere interessante Neuerungen. Allerdings ist bei Microsofts kommender Datenbankversion der Großteil der neuen Features klar auf Interoperabilität ausgelegt. Wie jedes neue Release, soll auch der SQL Server 2017 eine bessere Leistung als der direkte Vorgänger bieten.

Microsoft will mit SQL Server 2017 auf Basis von Linux und einem HPE ProLiant-Server einen neuen Weltrekord für den TPC-H 1-TB Datawarehouse-Workload aufgestellt, und damit den eigenen Vorgänger, SQL Server 2016, klar geschlagen haben. Ermöglicht wurde das Microsoft zufolge auch durch die neue Funktion, Non-Clustered Columnstore Indexes im laufenden Betrieb zu erstellen und zu aktualisieren, sowie die Unterstützung für Adaptive Query Processing. Der Code von Datenbankanwendungen muss dazu nicht überarbeitet werden. Der Aufbau eines Online-Indexes lässt sich in SQL Server 2017 pausieren und fortsetzen. Interessant ist das vor allem für Datenbank-Systeme, die sich über verschiedene Standorte und Länder erstrecken. Datenbankverfügbarkeitsgruppen benötigen nicht in allen Bereichen einen Cluster.

Unterstützung auch für den Betrieb auf Linux und in Docker-Containern

Microsoft arbeitete schon beim Windows Server 2016 eng mit den Entwicklern von Docker zusammen, sodass die Container-Technologie auch in das neue Server-Betriebssystem eng integriert ist. Das gilt ebenfalls für den SQL Server 2017. Die neue Version lässt sich nicht nur auf Servern mit Red Hat Linux, SUSE oder Ubuntu installieren, sondern auch in Docker-Containern. Die Container können wiederum auf Linux-Servern betrieben werden, natürlich auch auf Windows Server 2016, und sogar auf macOS X. Dazu müssen Anwender lediglich Docker für macOS X auf dem Mac installieren. SQL Server 2017 kann also problemlos in unterschiedlichen Infrastrukturen genutzt werden, auch in Private-, Hybrid- und Public-Cloud-Umgebungen, auf Basis verschiedener Betriebssysteme.

Auf Linux-Servern lässt sich im SQL Server 2017 auch der SQL Server Agent umfassend nutzen, zum Beispiel zum Replizieren von Datenbanken über Transaktionsprotokolle, über verschiedene Server hinweg. Außerdem ist ein sogenannter Listener für Always-On-Datenbankverfügbarkeitsgruppen auf Linux-Servern verfügbar. Dadurch können Clients direkt mit dem primären Replikat arbeiten. Mit Hilfe dieser neuen Funktionen lassen sich Datenbankverfügbarkeitsgruppen auch über verschiedene Betriebssysteme hinweg replizieren.

Diese Funktionen sind auf Linux-Servern nutzbar

In der Liste der Neuerungen in SQL Server 2017 fällt schnell auf, dass sich Microsoft mit der neuen Datenbankversion vor allem auf die Unterstützung von Linux sowie der Einbindung neuer Programmiersprachen konzentriert.

Auf Linux-Servern mit SQL Server 2017 können Anwender verschiedene Images zur Installation des Datenbank-Servers nutzen. Microsoft stellt dazu Pakete für Red Hat, SUSE, Ubuntu und für Docker zur Verfügung. Auch die Installation in Open Shift und Docker Swarm ist möglich, genauso wie Failover-Clustering mit Hilfe von Pacemaker. Darüber hinaus lassen sich Datenbanken auf Linux-Servern problemlos sichern und wiederherstellen. Die Verbindung dazu kann über das SQL Server Management Studio (SMSS) auch von Windows-Rechnern aus hergestellt werden.

Die Befehlszeilentools sqlcmd, bcp und sqlpackage werden auch zur Verbindung mit Linux-Servern unterstützt, wie auch zur Ausführung direkt in Linux. Wie bereits erwähnt, unterstützt der SQL Server Agent nahezu umfassend Linux-Server mit allen Funktionen, die der Agent auch auf Windows-Servern bietet. Eine Überwachung von SQL Server 2017 auf Linux-Servern kann über ein Management Pack durch System Center Operations Manager erfolgen. In-Memory-OLTP und Columnstore ist auf Linux-Servern ebenfalls verfügbar. Auch die Komprimierung sowie die Verschlüsselung der Daten und zeilenbasierte Sicherheit sowie Datenmaskierung werden unterstützt.

Die vorhandenen Treiber und Frameworks, die für SQL-Server zur Verfügung stehen, funktionieren auf Linux-Servern genauso wie auf Windows-Servern. Natürlich kann es sein, dass einzelne Funktionen nicht ganz identisch sind, Microsoft will aber auch hier nacharbeiten. Zu den unterstützten Treibern und Frameworks gehören zum Beispiel Java, .NET, Ruby, Python und viele andere.

SQL Server 2017 unterstützt nicht alle Funktionen auf Linux

Microsoft arbeitet zwar daran, möglichst alle Funktionen in SQL Server 2017 für Linux verfügbar zu machen, die auch auf Windows-Servern funktionieren, allerdings gibt es einige Funktionen, die derzeit noch nicht funktionieren. Dazu gehören DB Mail, Alerts, FileTables, Strech DB, PolyBase, Erweiterungen von Drittanbietern, XPs, Datenbank-Spiegelung und VSS-Snapshots.

Außerdem sind die Analysis Services, Reporting Services, Integration Services, R Services, Master Data Services und Data Quality Servers derzeit nicht auf SQL-Servern verfügbar, die auf Linux installiert werden. Aber auch hier arbeitet Microsoft eigenen Angaben zufolge an Verbesserungen. Ob diese durch ein Servicepack in SQL Server 2017 einfließen, oder erst in der nächsten/übernächsten Version des SQL-Servers, ist derzeit allerdings noch nicht klar.

Python und R in Apps nutzen

Bereits seit dem Vorgänger SQL Server 2016 wird die speziell für statistische Analysen ausgelegte Programmiersprache R unterstützt. In SQL Server 2017 geht Microsoft noch einen Schritt weiter und integriert auch Python. Dadurch können Anwender den SQL Server 2017 effizienter für Anwendungen rund um Machine Learning nutzen. Die Funktion mit der Bezeichnung "Microsoft Machine Learning Services" ermöglicht es zudem, dass Python-Skripte direkt auf dem Datenbank-Server funktionieren.

Microsoft plant die Unterstützung der Programmiersprachen in allen Editionen, auch der kostenlosen Express-Edition. Durch die Unterstützung von Python lassen sich Datenbank-Server auf Basis von SQL Server 2017 auch als Datenquelle für Python-Apps und -Skripte nutzen. Außerdem kann Python-Code auch direkt in SQL-Datenbanken integriert werden. Dazu wird Python, wie bereits R, als Transact-SQL-Prozedur eingebettet. Die ausführbaren Dateien von Python befinden sich im Verzeichnis "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES". Hier lassen sich auch Programme und Skripte starten.

Microsofts SQL Server 2017 unterstützt Python für verschiedene Einsatzzwecke.
Microsofts SQL Server 2017 unterstützt Python für verschiedene Einsatzzwecke.

Wird auf einem Server dieses Verzeichnis zu den Systemvariablen hinzugefügt, lassen sich an allen Stellen des Betriebssystems Python-Skripte nutzen. Microsoft integriert Python zudem auch in neuen Versionen von Visual Studio. Diese sind vollständig kompatibel mit SQL Server 2017.

Neue Version 17.x des SQL Server Management Studio

Für die Verwaltung des SQL Server 2017 steht die neue Version 17.x des SQL Server Management Studio (SSMS) zur Verfügung. Mit der neuen Version lassen sich Datenbankserver ab SQL Server 2008 bis SQL Server 2017 verwalten, auch SQL Server 2017 auf Linux-Servern. Zusätzlich können Anwender auch Datenbanken auf Basis von Azure SQL Database und Azure SQL Data Warehouse mit der neuen Version des SQL Server Management Studio managen. Die neue Version des SQL Server Management Studios kann parallel zu älteren Versionen installiert werden.

Mit der neuen Version des SQL Server Management Studios lassen sich Datenbank-Server mit SQL Server 2017 verwalten.
Mit der neuen Version des SQL Server Management Studios lassen sich Datenbank-Server mit SQL Server 2017 verwalten.

Mit der Version 17.x des SQL Server Management Studio lassen sich Datenbanken auf Basis von Windows- und Linux-Servern verwalten. Nutzer können das SQL Server Management Studio auf Rechnern mit Windows 7/8/8.1 und Windows 10 installieren, darüber hinaus auch auf Servern mit Windows Server 2008 R2/2012/2012 R2 und Windows Server 2016. Allerdings basiert das SQL Server Management Studio 17.x auf Visual Studio 2015. Diese Version ist noch nicht vollständig kompatibel mit Windows Server 2016. Microsoft arbeitet aber bereits an Aktualisierungen.

In der neuen Version wurde das PowerShell-Modul zur Verwaltung von SQL-Servern aus dem SQL Server Management Studio ausgelagert und in die PowerShell-Galerie integriert.

Unterstützung für Graphen zur Analyse sozialer Netzwerke

Große Teile der Daten, die nicht auf einem Datenmodell basieren, beziehungsweise die in kein Schema passen, lassen sich mit Graphdatenbanken besser verarbeiten, als mit relationalen Datenbanken. Vor allem wenn in Tabellen ganze Zeilen oder Spalten leer sind, weil sie zum Beispiel aus Quellen kommen, deren Schema nicht fest definierbar ist, spielen Graphdatenbanken oder andere NoSQL-Datenbanken ihre Stärken aus.

SQL Server 2017 unterstützt dafür direkt Graph Data. Diese Art von Daten sind vor allem in Big-Data-Analysen sinnvoll, da sich damit beispielsweise Informationen aus sozialen Netzwerken speichern und analysieren lassen. Beispiele dafür sind Beziehungen zwischen Personen, welche Produkte den Personen gefallen, in welchen Unternehmen die Personen arbeiten, wo sich die Personen zu welchen Zeiten aufhalten, an welchen Veranstaltungen sie teilnehmen, und vieles mehr.

Dazu bietet der SQL Server 2017 die zwei neuen Tabellenarten "NODE" (Knoten) und "EDGE", in denen sich solche Daten speichern lassen. Wird beim Erstellen einer neuen Tabelle die Variante "NODE" verwendet, erstellt der Datenbank-Server für jede Reihe eine NodeID. Tabellen des Typs "EDGE" stellen Verbindungen zwischen verschiedenen NODE-Tabellen her.

Neue Tabellen sollten im SQL Server 2017 bei der Analyse von Graph-Daten aus sozialen Netzwerken helfen.
Neue Tabellen sollten im SQL Server 2017 bei der Analyse von Graph-Daten aus sozialen Netzwerken helfen.

Was kommt noch für SQL Server 2017?

Microsoft plant darüber hinaus ein neues Verwaltungstool für den SQL Server 2017, das in der grafischen Oberfläche Datenbanken auf Windows-Servern genauso verwalten kann, wie auf Linux-Servern und auf macOS X in Docker. Das Werkzeug soll für alle Plattformen zur Verfügung stehen und dabei eine einheitliche Oberfläche bieten. Dadurch lassen sich alle Aufgaben durchführen, die auch im SQL Server Management Studio verfügbar sind.

Fazit

Mit dem SQL Server 2017 geht Microsoft einen großen Schritt auf Linux und Docker zu. Vor allem Umgebungen, in denen Big Data-Berechnungen durchgeführt werden sollen, oder die mit Machine Learning arbeiten, profitieren von den neuen Funktionen. Es lohnt sich einen Blick auf die neue Version zu werfen, auch für Unternehmen, die im Betriebssystem-Bereich auf Linux setzen. Die neue Version hat einen klaren Schwerpunkt auf der Unterstützung alternativer Plattformen und neuer Programmiersprachen. Bezüglich der Datenbank-Engine gibt es zwar auch einige Neuerungen, ob diese aber eine Aktualisierung vorhandener Installationen zur neuen Version rechtfertigen, muss im Einzelfall getestet werden.