
Zuletzt aktualisiert am 27. September 2020 von Lars
Dieser Artikel ist eigentlich mehr eine Mitschrift einer Laborübung zu SQL Server 2014, daher sind die Abschnitte auch nicht immer ganz logisch aufgebaut. Die Ausgangslage war, dass ich etwas SQL Server 2014 kennen lernen wollte. Neben der Installation wollte ich eine Datenbank erstellen, Felder editieren, Backup erstellen und die Datenbank in Access ansprechen. Wenn neues aufgetaucht ist, hab ich das an den jeweiligen Stellen geklärt.
Editionen von SQL-Server 2014
Alle Editionen des SQL-Servers 2014 gibt es als 32 oder 64 Bit Versionen
Enterprise
"Das Premium-Angebot, SQL Server 2014 Enterprise Edition, übermittelt umfassende hochwertige Datencenterfunktionen mit blitzschneller Performance, unbegrenzter Virtualisierung und End-to-End Business Intelligence – und bietet so hohe Servicelevel für unternehmenswichtige Arbeitslasten und Endbenutzerzugriff auf Dateneinblicke."1
Business Intelligence
"SQL Server 2014 Business Intelligence-Edition bietet eine umfassende Plattform, die Organisationen die Erstellung und Bereitstellung von sicheren, skalierbaren und überschaubaren BI-Lösungen ermöglicht. Bietet neuartige Funktionen wie Browser-basiertes Durchsuchen und Visualisieren von Daten, leistungsstarke Datenkombinationsfunktionen und verbesserte Integrationsverwaltung."1
Standard
"SQL Server 2014 Standard Edition stellt eine grundlegende Datenverwaltungs- und Business Intelligence-Datenbank bereit, auf der Abteilungen und kleinere Unternehmen ihre Anwendungen ausführen. Diese unterstützt allgemeine Entwicklungstools für lokale und Cloudverwendung und ermöglicht eine effektive Datenbankverwaltung mit minimalen IT-Ressourcen."1
Web
"Die SQL Server 2014 Web Edition ist eine mit geringen Anschaffungs- und Betriebskosten verbundene Option für Webhoster und Web-VAPs, die kostengünstige Skalierbarkeit und Verwaltungsfunktionen für Webpräsenzen jeder Größe bietet."1
- Lokalisierung:Deutsch
- Typ:Nachschlagewerk
- Klasse:Programmier-Tools
- Joos, Thomas (Autor)
Developer
"SQL Server 2014 Developer Edition ermöglicht Entwicklern das Erstellen beliebiger Anwendungen auf der Basis von SQL Server. Sämtliche Funktionen der Enterprise Edition stehen zur Verfügung. Die Lizenz bezieht sich jedoch auf die Verwendung als Entwicklungs- und Testsystem und nicht als Produktionsserver. SQL Server Developer ist eine ideale Option zum Erstellen und Testen von Anwendungen."1
Express
"SQL Server 2014 Express Edition ist eine kostenlose Edition auf Einstiegsebene und eignet sich ideal zum Üben und zum Erstellen von datengesteuerten Anwendungen für Desktopcomputer und kleine Server. Dies ist die beste Wahl für unabhängige Softwareanbieter, Entwickler und Tüftler, die Clientanwendungen erstellen. Wenn Sie erweiterte Datenbankfunktionen benötigen, können Sie SQL Server Express nahtlos auf höhere Endversionen von SQL Server aktualisieren. SQL Server Express"1
Im Gegensatz zu früher dürfte SQL Express nun noch viel häufiger eingesetzt werden, denn jetzt ist auch in dieser Edtion das "SQL Server 2014 Management Studio" mit dabei, ein grafisches Tool zur Bearbeitung der Datenbanken. Wenn Sie SQL Server 2014 Management Studio brauchen, achten Sie bitte darauf, dass Sie die Version "mit Tools" auswählen.
1Editionsinfo von Editionen und Komponenten von SQL Server 2014.
Installationsvorrausetzungen SQL Server 2014
SQL Server 2014 benötigt .NET Framework 2014.
RAM
Minimum
- Express-Editionen: 512 MB
- Alle anderen Editionen: 1 GB
Empfohlen
- Express-Editionen: 1 GB
- Alle anderen Editionen: 4 GB und je nach Datenbankgrösse höher
Prozessor
Minimum
- x86-Prozessor: 1,0 GHz
- x64-Prozessor: 1,4 GHz
Empfohlen
- 2,0 GHz oder schneller
Installation am Beispiel der Express Edition
Zunächst habe ich irgendwo eine falsche ISO erwischt. Die richtige sollte es unter
Ressourcen für Microsoft SQL Server 2014 Express geben.
Hier die Variante "mit Tools" auswählen und "SQLEXPRWT_x64_ENU" starten. Bei dieser Version ist das Microsoft SQL Server Management Studio mit dabei.
Eine neue SQL-Installation mit "New SQL Server stand-alone installation or add features on an existing installation" starten.
License Terms bestätigen
Update-Funktionen wie gewünscht festlegen.
Ich installiere hier alle Features.
Und nicht wie ich Microsoft .NET Framework 3.5 vergessen.
Falls doch, kann dies unter Windows Server 2012 (R2) als Server Feature nachinstalliert werden.
Wenn alle Installationvorraussetzungen erfüllt sind, sollte die Installation korrekt durchlaufen.
Erste Schritte im Microsoft SQL Server Management Studio
Starten Sie das "Microsoft SQL Server Management Studio", zum Beispiel indem Sie auf dem Start-Menü "Management" eingeben.
Um eine neue Datenbank anzulegen, klicken Sie mit der rechten Maustaste auf "Database" und wählen Sie "New Database" aus.
Um eine neue Tabelle anzulegen, browsen Sie zu Ihrer Datenbank und Tables und klicken Sie dort mit rechter Maustaste und wählen "Table".
Datentypen in MSSQL



Binärdaten fester Länge mit einer Länge von n Bytes, wobei n ein Wert zwischen 1 und 8.000 ist. Die Speichergröße beträgt n Bytes.MAX gibt an, dass die maximale Speichergröße 2^31-1 Byte (2 GB) beträgtmax gibt an, dass die maximale Speichergröße 2^31-1 Byte beträgt. Die Speicherplatzgröße ist die tatsächliche Länge der eingegebenen Daten + 2 Byte.max gibt an, dass die maximale Speichergröße 2^31-1 Byte (2 GB) beträgt. Die Speicherplatzgröße ist die tatsächliche Länge der eingegebenen Daten + 2 Byte.
Datentyp | Bereich |
bigint | -2^63 (-9.223.372.036.854.775.808) bis 2^63-1 (9.223.372.036.854.775.807) |
binary(n) | |
bit | Ein ganzzahliger Datentyp, der den Wert 1, 0 oder NULL annehmen kann. |
char(n) | Nicht-Unicode-Zeichenfolgendaten mit fester Länge. n definiert die Zeichenfolgenlänge und muss ein Wert von 1 bis 8.000 sein. Die Speichergröße beträgt n Bytes. |
date | Datum |
datetime | Datum und Zeit |
datetime2(7) | Definiert ein Datum, das mit einer Uhrzeit kombiniert ist und auf dem 24-Stunden-Format basiert. |
datetimeoffset(7) | Definiert ein auf dem 24-Stunden-Format basierendes Datum, das mit einer Uhrzeit kombiniert ist, bei der die Zeitzone beachtet wird. |
decimal(p,s) | Numerische Datentypen mit fester Genauigkeit und fester Anzahl von Dezimalstellen. p -> Dezimalstellen, s -> Dezimalstellen hinter dem Komma => numeric |
float (n) | Ungefähre Zahlendatentypen für numerische Gleitkommadaten. |
geography | Der Räumlichkeitsdatentyp geography wird als .NET-CLR (Common Language Runtime)-Datentyp in SQL Server implementiert. Dieser Typ stellt Daten in einem Erdkugel-Koordinatensystem dar. |
geometry | Der Räumlichkeitsdatentyp geometry wird als .NET-CLR (Common Language Runtime)-Datentyp in SQL Server implementiert. Dieser Typ stellt Daten in einem euklidischen (flachen) Koordinatensystem dar. |
hierarchyid | Sie können hierarchyid verwenden, um die Position in einer Hierarchie darzustellen. |
image | Binärdaten variabler Länge von 0 bis 2^31-1 (2.147.483.647) Byte. |
int | -2^31 (-2.147.483.648) bis 2^31-1 (2.147.483.647) |
money | Datentypen zur Darstellung von Währungswerten. -922.337.203.685.477,5808 bis 922.337.203.685.477,5807 |
nchar(n) | Unicode-Zeichenfolgendaten mit fester Länge. n definiert die Zeichenfolgenlänge und muss ein Wert von 1 bis 4.000 sein. |
ntext | Unicode-Daten variabler Länge mit einer maximalen Zeichenfolgenlänge von 2^30 - 1 (1.073.741.823) Bytes. Die Speichergröße in Bytes ist doppelt so groß wie die eingegebene Zeichenfolgenlänge. |
numeric(p,s) | Numerische Datentypen mit fester Genauigkeit und fester Anzahl von Dezimalstellen. p -> Dezimalstellen, s -> Dezimalstellen hinter dem Komma => decimal |
nvarchar(n) | Unicode-Zeichenfolgendaten variabler Länge. n definiert die Zeichenfolgenlänge und kann ein Wert von 1 bis 4.000 sein. |
nvarchar(MAX) | |
real | Ungefähre Zahlendatentypen für numerische Gleitkommadaten. |
smalldatetime | Definiert ein Datum, das mit einer Uhrzeit kombiniert wird. Die Uhrzeit basiert auf dem 24-Stunden-Format, wobei die Sekunden immer 0 sind (:00) und es keine Sekundenbruchteile gibt. |
smallint | -2^15 (-32,768) bis 2^15-1 (32,767) |
smallmoney | Datentypen zur Darstellung von Währungswerten. -214.748,3648 bis 214.748,3647 |
sql_variant | Ein Datentyp, der Werte verschiedener von SQL Server unterstützter Datentypen speichert. |
text | Nicht-Unicode-Daten variabler Länge in der Codepage des Servers und mit einer maximalen Zeichenfolgenlänge von 2^31 - 1 (2.147.483.647). |
time(7) | Definiert eine Uhrzeit. Die Uhrzeit basiert auf einem 24-Stunden-Format und beachtet keine Zeitzonen. |
tinyint | 0 bis 255 |
uniqueidentifier | Der uniqueidentifier-Datentyp speichert aus 16 Bytes bestehende Binärwerte, die als GUIDs (Globally Unique Identifier) fungieren. Ein GUID ist eine eindeutige Binärzahl; kein anderer Computer auf der Welt generiert einen GUID-Wert, den es schon einmal gibt. |
varbinary(n) | Binärdaten mit variabler Länge. n muss ein Wert zwischen 1 und 8.000 sein. |
varbinary(MAX) | |
varchar(n) | Nicht-Unicode-Zeichenfolgendaten mit variabler Länge. n muss ein Wert zwischen 1 und 8.000 sein. |
varchar(MAX) | |
xml | Der xml-Datentyp ermöglicht das Speichern von XML-Dokumenten und -Fragmenten in einer SQL Server-Datenbank. |
Erste Schritte im Microsoft SQL Server Management Studio - Fortsetzung
Nach der Erstellung einer Tabelle muss diese gespeichert werden.
Unter Umständen erscheint die Tabelle nicht im Tree links. In diesem Fall auf Tables klicken und "Refresh" wählen.
Um Inhalt in die Tabellen einzugeben, rechts auf die Tabelle klicken und "Edit Top 200 Rows" eingeben.
Backup einer Datenbank
Dem Backup der Datenbank kommt einiges an Bedeutung zu. Ich kann die Datenbankdateien nicht einfach wegkopieren, da diese von der SQL-Engine ständig in Benutzung sind. Man kann aber von der Engine aus einen Datenbank-Dump starten, den ich dann anschließend wegkopieren (auf Band sichern...) kann. Moderne (und entsprechend) teure Backupsysteme bringen aber sog. Agenten mit, die die Datenbank auch im laufenden Betrieb sichern können.
Bei SQL Express gibt es einige Einschränkungen bezüglich der Verwaltungstools. So fehlt die Automatisierungskomponente SQL Server Agent bzw. der Dienst wird zwar mit installiert, jedoch stoppt dieser nach dem Starten sofort wieder. Automatische Tasks lassen sich aber trotzdem ausführen, indem man einfach das passende SQL-Skript via Kommandozeilentool
SQLCMD.EXE
ausführt.
Ist SQL auf C: installiert, befindet sich das Kommandozeilentool unter
C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn
Für eine ältere SQL Express Version ist die Vorgehensweise unter Automatische Backups für SQL Server Express beschrieben.
Folgt man dem Beispiel, dann kann man die folgende SQL-Datei FirstDB.sql (in reinem Textformat) erstellen:
BACKUP DATABASE [FirstDB] TO DISK='C:\Backup\MeineDB_sich.bak' WITH INIT, NAME = N'MeineDB_Sicherung' BACKUP LOG [FirstDB] TO DISK='C:\Backup\MeineDB_Log_sich.bak' WITH INIT, NAME = N'MeineDB_Log_Sicherung'
Meine Datenbank heisst FirstDB. Grundsätzlich empfiehlt es sich, ein SQL-Skript est einmal im Management Studio zu testen. Hierzu kann man die SQL-Datei doppelklicken und Sie wird im Management Studio geöffnet. Mit "Excecute" kann man das Skript ausführen. Man erhält dann allerdings eine Fehlermeldung:



Was ist das SQL-Server Recovery Model (bzw. Wiederherstellungsmodell?
Die beste Erklärung findet man im MSDN-Artikel Wiederherstellungsmodelle (SQL Server).
Das Wiederherstellungsmodell beschreibt, wie mit der Log-Datei (auch Protokolldatei) umgenannt wird. Neben der eigentlichen Datenbank-Datei hat SQL auch sog. Log-Dateien, die die jeweilig aktuellen Änderungen aufnehmen. Diese werden unterschiedliche in die eigentliche Datenbank geschrieben.
Änderungen seit der letzten Sicherung sind nicht geschützt. Bei Auftreten eines Notfalls müssen diese Änderungen erneut vorgenommen werden.Wenn das Protokoll beschädigt ist oder massenprotokollierte Vorgänge seit der letzten Protokollsicherung aufgetreten sind, müssen Änderungen seit der letzten Protokollsicherung erneut vorgenommen werden. Ansonsten gehen keine Daten verloren.
Wiederherstellungsmodell | Beschreibung | Datenverlust |
Einfach | Keine Protokollsicherungen. Gibt Protokollspeicherplatz automatisch wieder frei, um die Speicherplatzanforderungen gering zu halten. Hierdurch entfällt im Wesentlichen die Notwendigkeit, den Speicherplatz für Transaktionsprotokolle zu verwalten. | |
Vollständig | Erfordert Protokollsicherungen. Es gehen keine Daten aufgrund einer verlorenen oder beschädigten Datendatei verloren. Die Wiederherstellung bis zu einem beliebigen Zeitpunkt ist möglich (z. B. vor Anwendungs- oder Benutzerfehlern). | Normalerweise nicht. Wenn das Protokollfragment beschädigt ist, müssen Änderungen seit der letzten Protokollsicherung erneut vorgenommen werden. |
Massenprotokolliert | Erfordert Protokollsicherungen. Eine Ergänzung des vollständigen Wiederherstellungsmodells, die leistungsintensive Massenkopiervorgänge ermöglicht. Senkt die Protokollspeicherauslastung durch den Einsatz von minimaler Protokollierung für die meisten Massenvorgänge. |



Schaut man sich die Eigenschaft der verwendeten Datenbank an, dann wird klar, warum die Sicherung der Log-Datei fehl schlägt, das Recovery model steht auf Simple. Es lässt sich hier jedoch auch für eine bereits erstellte Datenbank ändern und nach Änderung auf "Full" läuft das Skript fehlerfrei durch. Das Backup wird in Form von zwei .bak-Dateien erstellt.



Anschliessend kann man eine DOS-Batchfile erstellen, dass das SQL-Skript aufruft. Hier sind gegenüber dem Link oben ein paar kleine Anpassungen nötig. Konkret ist der Instanz-Name anzupassen
rem Ausführen eines Full Backup der MeineDB-Datenbank "C:Program FilesMicrosoft SQL ServerClient SDKODBC110ToolsBinnSQLCMD.EXE" -S 2012R2MEMBERSQLEXPRESS -E -i C:BackupFirstDB.sql -o C:BackupBackupLog.txt rem Zeitstempel erzeugen for /f "tokens=1-4 delims=. " %%i in ("%date%") do ( set year=%date:~10,4% set month=%date:~4,2% set day=%date:~7,2% ) for /f "tokens=1-4 delims=.:, " %%i in ("%time%") do ( set hour=%%i set minute=%%j ) rem Log-Datei mit Zeitstempel umbenennen ren C:BackupBackupLog.txt FullBackup-%year%-%month%-%day%-%hour%-%minute%.txt
Nach dem Arufruf von SQLCMD.EXE wird lediglich noch ein etwas "CMD-Magic" betrieben, um einen Dateinamen zu erzeugen, der aus Jahr, Monat, Tag, Stunde und Minute besteht, um das Logfile unter diesem Namen auszutesten.
Anschliessend das Skript austesten und bei Erfolg noch in die Aufgabenplanung stellen. Schon sollte ein unbeaufsichtigten Backup klappen. Regelmässige Kontrolle nicht vergessen!
Restore einer Datenbank
Was mache ich jetzt, wenn ich die Datenbank wiederherstellen will?
Rechte Maustaste auf "Databases" und "Restore"



Entsprechende Angaben in der folgenden Maske machen - Aufpassen, dass die richtige Backup-Datei ausgewählt wird.



Zugriff von Extern auf den Servern
Versucht man nun von extern auf den Server zuzugreifen, z.B. mittels ODBC, wird man erst einmal scheitern. Per Standard ist der externe Zugriff deaktiviert. Um dies zu ändern, braucht es den "SQL Server Configuration Manager".
Zumindest bei mir unter Windows Server 2012 suchte ich den jedoch erst einmal vergeblich. Est nach einigem Googlen kam ich drauf:
- Start
- "mmc"
- File
- Add/Remove Snap-ins
- "SQL Server Configuration Manager"
- Add
- OK
- Browsen zu SQL Server Network Configuration
- Protocols for SQLEXPRESS (Instanzname, kann anders lauten)
- Rechtsklick auf TCP/IP
- Enable



Nun kann man zum Beispiel von einem Client aus eine ODBC-Verknüpfung anlegen:
ODBC Data Source Administrator durch Eingabe von "ODBC" auf dem Starbildschirm öffnen
"System DNS" wählen und mit "Add" passenden Treiber (SQL Server) wählen.



In der nächsten Maske Name und Server wählen. Der richtige Server sollte sich durch Klicken auf die Dropdown-Taste rechts auswählen lassen.



Wenn Sie entsprechend der o. g. Weise vorgegangen sind, kann die nächste Maske einfach bestätigt werden.



Hier die gewünschte Standarddatenbank auswählen



Hier wieder bestätigen



Am Schluss haben Sie die Möglichkeit mittels "Test Data Source" die Verbindung zu testen. Dies sollten Sie unbedingt tun. Mögliche Fehlerursachen:
- TCP/IP nicht aktiviert
- Firewall nicht geöffnet für Standardport 1433



Jetzt kann man die ODBC-Verbindung verwenden. In Access passiert das z.B. über die entsprechende Funktion im Reiter "External Data"



Was ist eigentlich eine Instanz
Im Artikel wurde bereits von Instanzen gesprochen. Aber was ist eigentlich eine MS SQL Instanz?
Eine Installation eines MS SQL Servers wird als Instanz bezeichnet. Auf einem Rechner können mehrere Instanzen installiert werden. Diese Instanzen können über angesprochen werden. Beispiel:
2012R2MEMBER\SQLEXPRESS
Jede Instanz nutzt eigene Dienste. Benannte Instanzen verwenden jeweils folgende Dienste: MSSQL$Instanzname und SQLAGENT$Instanzname.
Weitere Quellen



Hallo, hier schreibt Lars. Dipl-Ing. Ingenieurinformatik (FH). Seit Jahrzehnten in der IT tätig. Geprüfter (und begeisterter) Webmaster. Ebenso begeisterter Windows-, Apple-, und Office-User. Ich schreibe über alle möglichen Themen rund um IT. Mehr über mich erfährst du hier: Über mich. Danke für deinen Besuch!