iX 12/2017
S. 68
Review
Datenbanken
Aufmacherbild

SQL Server 2017 für Windows und Linux

Grenzüberschreitung

Microsofts relationale Datenbank läuft unter Linux und im Container und will Entwicklern und Administratoren die Arbeit erleichtern. Manche Neuerungen bleiben jedoch unvollständig.

Nur 16 Monate nach SQL Server 2016 liefert Microsoft bereits eine neue Version. Die 2017er-Ausgabe bietet zahlreiche Verbesserungen im Kern des Datenbankmanagementsystems und ist die erste Version, die nicht nur auf Windows, sondern auch auf Linux läuft.

Bei der Installation unter Windows fällt auf, dass die SQL Server Reporting Services nicht mehr im Setup enthalten sind; sie sind ein getrennter Download (siehe ix.de/ix1712068). Bereits beim Vorgänger SQL Server 2016 hatte Microsoft die Verwaltungswerkzeuge des SQL Server Management Studio inklusive SQL Server Profiler ausgegliedert.

Wie bisher bietet der Hersteller sein Datenbanksystem in den kommerziellen Varianten Standard, Enterprise und Web sowie in den kostenfreien Express-, LocalDB- und Developer-Ausgaben an. Die Developer-Variante enthält alle Features, darf jedoch weiterhin lizenzrechtlich nur zu Entwicklungszwecken und nicht im Produktivbetrieb zum Einsatz kommen.

SQL Server on Linux

Die größte und vor einigen Jahren noch undenkbare Neuerung in SQL Server 2017 ist, dass Microsofts Datenbank nun auch auf Linux läuft. Freigegeben sind die Distributionen Red Hat Enterprise Linux 7.3 und 7.4 (Installation mit sudo yum update mssql-server), SUSE Linux Enterprise Server v12 SP2 (sudo zypper update mssql-server) und Ubuntu 16.04 (sudo apt-get install mssql-server). Auch ein 1,4 GByte großes Docker-Image auf Docker Hub, basierend auf Ubuntu, stellt Microsoft bereit. Für den Betrieb der Docker-Images muss man Docker mindestens 4 GByte RAM zuweisen.

Download und Start von SQL Server im Linux-basierten Docker-Container in weniger als zwei Minuten (Abb. 1)

Der Download des Docker-Containers und der Start einer SQL-Server-Instanz dauerte im Test auf einem Windows-System mit Docker for Windows nur 1,8 Minuten (siehe Abbildung 1), was beeindruckend ist im Vergleich zu Download und Ausführung des Windows-Setups, das oft bis zu eine Stunde verschlingt. Der in Abbildung 1 gezeigte Befehl docker run reicht den SQL-Server-Port 1433 zum Docker-Host durch. Der Befehl legt außerdem das Kennwort für den „SA“-Benutzer fest (im Bild mit einem roten Balken verdeckt). SQL Server unter Linux beherrscht nur die Authentifizierung mit Benutzername und Kennwort; die Windows-integrierte Authentifizierung mit Kerberos oder NTLM ist hier nicht nutzbar.

Listing 1: Interaktion mit einem SQL Server in einem Docker-Container per sqlcmd

docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Kennwort'
create database ITVisionsCRM
GO
use ITVisionsCRM 
CREATE TABLE Kunden (ID INT, Kundenname NVARCHAR(50), Datum DATETIME2)
GO
INSERT INTO Kunden VALUES (1, 'www.IT-Visions.de', '1/1/1996')
select * from Kunde
GO
Microsoft SQL Server Management Studio 17.3 verwaltet nicht nur SQL Server 2017, sondern auch ältere Instanzen ab Version 2008 sowie Azure-SQL-Datenbanken (Abb. 2).

SQL Server für Linux verwendet auf Port 1433 das gleiche TDS-Protokoll (Tabular Data Stream) wie SQL Server für Windows, bestehende Client-Anwendungen können also mit SQL Server für Linux kommunizieren. Die Verwaltung des Datenbankmanagementsystems auf Linux selbst ist aber nur dem Kommandozeilenwerkzeug sqlcmd möglich (siehe Befehlsfolge in Listing 1). Für die GUI-basierte Verwaltung benötigt man SQL Server Management Studio ab Version 17.0, das es nur für Windows gibt (siehe Abbildung 2).

Über die neue Systemsicht sys.dm_os_host_info kann der Nutzer mit

select host_platform from sys.dm_os_host_info

ermitteln, ob das Datenbankmanagementsystem, mit dem man aktuell verbunden ist, unter Windows oder Linux läuft (siehe Abbildung 2).