SQL Server FAQ

SQL Server

SQL Server ist eine relationale Datenbankverwaltungssystem-Software, die unter Windows oder Linux auf einer physischen oder virtualisierten Hardwareplattform ausgeführt wird. Es wird als die höchste Ebene in der gesamten Hierarchie angesehen, um Datenbanken, Daten, Sicherheit, Hochverfügbarkeit, Berichterstellung und Buisness Intelligence zu unterstützen.

Einige Leute bezeichnen SQL Server als Hardwareplattform, andere als Software oder Anwendung. Wieder andere bezeichnen SQL Server als Datenbankenmodul.

 

SQL Server Instanz

Eine SQL Server-Instanz ist eine Installation der relationalen SQL Server-Datenbankplattform, die als höchste Ebene in der Softwarehierarchie betrachtet werden kann. Die SQL Server Instanz kapselt alle in diesem Artikel behandelten Datenbankkonzepte (Datenbank, Tabellen, Daten, gespeicherte Prozeduren, Sicherheit usw.) ab.

Auf einem einzelnen Host können zahlreiche SQL Server-Instanzen installiert sein, von denen jede vollständig autonom sein kann. Die zugrunde liegenden CPU-, RAM-, Netzwerk- und Speicherressourcen werden jedoch von allen Instanzen gemeinsam genutzt. Diese Konfiguration kann für Produktion, Qualitätssicherung, Tests oder die Entwicklung verwendet werden. Es handelt sich dabei um eine von der Virtualisierung getrennte Konfiguration.

 

SQL Server Dienst

Der SQL Server-Dienst ist ein Hauptdienst von Windows, der das Starten und Stoppen einer Instanz steuert. Jede SQL Server Instanz verfügt über einen entsprechenden Windows-Dienst. Dieser Windows-Dienst kann so konfiguriert werden, dass er mit einem Domänenkonto ausgeführt wird, um auf Ressourcen im Netzwerk oder einem lokalen Systemkonto zuzugreifen.

 

SQL Server Agent

Der SQL Server Agent ist für die Ausführung von Jobs nach einem vordefinierten Zeitplan verantwortlich. Jobs können T-SQL-, PowerShell-, SSIS-, Python-, R-, DOS- oder MDX-Befehle enthalten. Benutzer können per E-Mail oder Text benachrichtigt werden, wenn ein Job abgeschlossen, fehlschlägt oder erfolgreich ist. Der SQL Server-Agent enthält auch Warnungen, die konfiguriert werden können, wenn Leistungs- oder Betriebsschwellenwerte erreicht werden.

 

Virtuelle Maschine

Eine virtuelle Maschine ist ein unabhängiges Betriebssystem mit einer SQL Server Installation. Der Unterschied besteht darin, dass zwischen der physischen Hardware und der virtuellen Maschine eine Virtualisierungsschicht besteht. Ein einzelner Host unterstützt dabei zahlreiche Gäste (virtuelle Maschinen).

Mithilfe von Virtualisierung können viele unabhängige Maschinen auf einer einzigen Hardwareplattform konsolidiert werden, um die Strom- und Ressourcenkosten zu senken. Jeder Server bleibt eine separate Entität, die noch verwaltet und gewartet werden muss. Für jede virtuelle Maschine ist weiterhin eine Windows- und SQL Server Lizenz erforderlich.

 

Host

Ein Host ist die Hardwareplattform, welche die benötigte Virtualisierungssoftware zur Unterstützung einer oder mehrere virtueller Gastmaschinen bereitstellt.

 

Gast

Ein Gast ist eine unabhängige virtuelle Maschine mit einem Betriebssystem und installiertem SQL Server.

 

VMWare

VMWare ist die aktuell meistbenutze Virtualisierungsplattform zur Unterstützung virtueller Umgebungen.

 

Relationales Datenbank Management System

SQL Server ist eines von vielen relationalen Datenbankverwaltungssystemen auf dem Markt. Das relationale Datenbankverwaltungssystem verwaltet alle Datenbanken, Daten, Transaktionsintegrität, Sicherheit, Benutzerzugriff usw.

 

SQL Server Datenbank

Eine Datenbank ist ein logischer Container für Daten, Strukturen und Code mit einem bestimmten, festgelegten Namen. Einzelne Datenbanken können unterstützend für eine oder mehrere Anwendungen und Benutzer eingesetzt werden. Berechtigungen können auf Datenbankebene erteilt werden.

In SQL Server gibt es sowohl System- als auch Benutzerdefinierte Datenbanken. Auf der einfachsten Ebene besteht eine Datenbank aus zwei physischen Dateien. Die Erste ist für Datenbankobjekte und Daten. Die Zweite bezieht sich auf das Transaktionsprotokoll, das zur Aufrechterhaltung der Transaktionsintegrität verwendet wird.

 

SQL Server System Datenbank

Es gibt eine Reihe von SQL Server-Systemdatenbanken, die für bestimmte Funktionen des zugrunde liegenden relationalen Datenbankverwaltungssystems verantwortlich sind. Die Datenbanken umfassen:

  • Master - Beinhaltet alle Systemobjekte zum Ausführen des aktiven relationalen Datenbankverwaltungssystems

  • Model - Vorlagendatenbank für neue benutzerdefinierte Datenbanken und TempDB beim Start von SQL Server

  • TempDB - Speichert alle temporären Objekte wie temporäre Tabellen, Hash- und Sortierdatensätze usw.

  • MSDB - Speichert alle SQL Server Agent-bezogenen Tabellen und gespeicherten Prozeduren

  • ResourceDB - Versteckte Read-Only Datenbank zum Speichern aller Systemobjekte

 

SQL Server benutzerdefinierte Datenbank

Benutzerdefinierte SQL Server Datenbanken werden erstellt, um eine bestimmte Anwendung wie CRM, E-Commerce, Inventar, Berichterstellung usw. zu unterstützen. Jede benutzerdefinierte Datenbank hat einen eindeutigen Namen und einen Datenbankeigentümer, bei dem es sich im Allgemeinen um den Ersteller der Datenbank handelt. Jede benutzerdefinierte Datenbank verfügt über ein oder mehrere Schemas. Jedes Schema enthält Tabellen, Indizes, gespeicherte Prozeduren, Ansichten, Funktionen und mehr.

 

MDF File in SQL Server

Das SQL Server MDF-File ist eine von zwei Kerndateien zur Unterstützung einer physischen SQL Server Datenbank. Es ist für das Speichern der Systemobjekte, benutzerdefinierten Objektdefinitionen (Tabellen, Views, Stored Procedures usw.), Daten und Indizes verantwortlich. Jede SQL Server Datenbank muss über ein MDF-File verfügen und pro Datenbank kann nur ein MDF-File vorhanden sein. Das MDF-File ist im Allgemeinen die größte Datei, die die Datenbank unterstützt.

 

NDF File in SQL Server

Ein SQL Server NDF-File ist eine sekundäre Datendatei zur Unterstützung einer physischen SQL Server Datenbank. Obwohl dies für eine SQL Server Datenbank nicht obligatorisch ist, kann ein NDF-File Tabellen und Indizes unterstützen. NDF-Files werden für SQL Server Datenbanken erstellt, um eine Datenbank auf zahlreichen Festplatten zu speichern, um die Leistung zu verbessern oder das Datenbankwachstum besser kontrollieren zu können.

 

LDF File in SQL Server

Das SQL Server LDF-File ist die zweite der zwei Kerndateien, die eine physische SQL Server Datenbank unterstützen. Es unterstützt das Datenbank-Transaktionsprotokoll, das vor und nach einer Transaktion von Datensätzen gespeichert wird, damit diese gegebenenfalls wieder rückgängig gemacht werden kann. Es macht im Allgemeinen nur einen Bruchteil der Größe der Datenbankdatei aus, möglicherweise 5 - 25% der Datenbank. In machen Fällen, bei besonders großen Transaktionen, muss das Transaktionsprotokoll-File größer sein.

 

SQL Server Database Transaction Log File

Das SQL Server Transaktionsprotokoll-File entspricht dem physischen LDF-File und ist für das Speichern von Datensätzen, die an UPDATE- oder DELETE- Transaktionen beteiligt sind, verantwortlich. Es wird verwendet, um Transaktionen zurückzusetzen und die Transaktionsintegrität mit zahlreichen Benutzern in der Datenbank aufrechtzuerhalten.

 

SQL Server Schema

Ein Schema ist ein logischer Container in einer Datenbank, um bestimmten Objekten Berechtigungen zu erteilen. Standardmäßig verfügt eine SQL Server Datenbank über einen dbo- und ein sys-Schema. Obwohl benutzerdefinierte Objekte im dbo-Schema erstellt werden können, wird im Allgemeinen empfohlen, für jede logische Anwendung ein separates Schema zu erstellen.

 

SQL Server Tabelle

Eine Tabelle (engl. Table) ist eine logische Struktur zum Speichern von Daten, die sich auf eine einzelne Entität beziehen, beispielsweise eines Kunden, Produkts, einer Bestellung, usw. Jede Tabelle enthält eine oder mehrere Spalten. Jede Spalte sollte mit dem entsprechenden Datentyp und der entsprechenden Nulleinstellung konfiguriert werden.

 

Reihe in einer SQL Server Tabelle

Ein einzelner Eintrag in einer SQL Server Tabelle der aus mehreren Spalten (engl. Columns) besteht, heißt Reihe (engl. Row).

 

SQL Server Datentypen

Datentypen werden für Spalten in Tabellen, Parameter für gespeicherte Prozeduren, Funktionen und Abfragen definiert. Der Datentyp bestimmt die akzeptierten Daten für die Spalte oder die Parameter. Um den Speicherbedarf auf Tabellenebene zu minimieren und implizierte oder explizite Konvertierungsprobleme zu vermeiden, empfiehlt es sich einen geeigneten Datentyp für Spalten und Parameter auszuwählen. Übliche Datentypen sind:

  • INT

  • DATETIME

  • VARCHAR

  • CHAR

  • ..usw.

 

NULL in SQL Server

NULL ist ein unbekannter Wert. Eine Spalte innerhalb einer Tabelle kann so konfiguriert werden, dass sie NULL Werte zulässt oder nicht.

 

SQL Server Primärschlüssel

Ein Primärschlüssel (engl. primary key) ist im Allgemeinen eine einzelne Spalte, kann jedoch auch aus zwei oder mehr Spalten bestehen, die eine Zeile in einer Tabelle eindeutig identifizieren. Eine Tabelle sollte immer einen Primary Key haben, um jede Zeile eindeutig identifizieren zu können.

 

SQL Server Fremdschlüssel

Ein Fremdschlüssel (engl. foreign key) kann eine oder mehr Spalten umfassen und entspricht einem Schlüssel der sich auf eine andere Tabelle bezieht, um so die Konsistenz der Daten sicherzustellen und eine Abhängigkeit zwischen Tabellen zu modellieren.

 

SQL Server Indizes

SQL Server Indizes sind physische Strukturen, die zur Verbesserung der Datenzugriffsleistung erstellt werden können. Ohne Index wird bei einer Abfrage von Daten ein Tabellenscan durchgeführt, was bedeutet, dass der SQL Server Abfrageprozessor die Tabelle von der ersten bis zur letzten Zeile scannt, um die Abfrage abzuschließen. Bei sehr großen Tabellen kann das viele Ressourcen und Zeit kosten.

Basierend auf den Datanzugriffsmustern sollten SQL Server Indizes mit Bedacht ausgewählt werden. Zu viele oder doppelte Indizes sind kontraproduktiv und wirken sich auf die Leistung von INSERT-, UPDATE-, und DELETE-Vorgängen sowie auf übermäßigen Speicherplatz aus. Die Indizes müssen außerdem regelmäßig, entweder wöchentlich, monatlich oder vierteljährlich gepflegt werden.

SQL Server wird mit zahlreichen Arten von SQL Server Indizes geliefert, die je nach Bedarf einen bestimmten Wert liefern. Die SQL Server-Indizes umfassen:

  • Gruppierter Index (engl. Clustered Index)

  • Nicht-Gruppierter Index (engl. Non-Clustered Index)

  • Covering Index

  • Included Columns

  • Filtered Index

  • ColumnStore Index

  • Full Text Index

  • XML Index

 

SQL Server Gruppierter Index

Ein gruppierter Index (engl. Custered Index) bringt eine physische und logische Reihenfolge in eine Tabelle, wobei pro Tabelle ein einzelner Gruppierter Index erstellt werden kann. Typische Spalten sind eine eindeutige ID wie der Primary Key für eine Tabelle. Es wird empfohlen, für die meisten Tabellen einen Gruppierten Index zu erstellen, um die Datenzugriffsleistung beim Abfragen der Tabelle zu verbessern.

 

SQL Server Nicht-Gruppierter Index

Pro Tabelle können ein oder mehrere nicht-Gruppierte Indizes (engl. Non-Clustered Index) erstellt werden. Nicht-Gruppierte Indizes werden im Allgemeinen für Bereichsabfragen, Fremdschlüssel oder für Spalten verwendet, die in den Klauseln WHERE, ORDER BY und GROUP BYverwendet werden, um bestimmte Abfragen zu erfüllen. Je selektiver die Daten in der Spalte sind, desto größer ist der Nutzen des Index für die Abfrageleistung.

 

SQL Server gespeicherte Prozedur

Eine gespeicherte Prozedur (engl. stored procedure) ist ein Objekt, das in einer Datenbank und einem Schema erstellt wurde und Programmierlogik enthält, um eine diskrete Operation wie das Abrufen, Hinzufügen, Ändern oder Löschen von Daten auszuführen. Prozeduren werden mit T-SQL-Code geschrieben und können, ähnlich wie Methoden in anderen Programmiersprachen wie Java und C++, mehrere Parameter übergeben bekommen. Hierbei kann ein Prozedur verschiedene Ergebnismengen zurückgeben. Sobald ein Prozedur erstellt wurde, kann es mit dem Befehl ALTER geändert, oder mit dem Befehl DROP gelöscht werden.

 

SQL Server Abfrage

Eine SQL Server Abfrage (engl. Query) wird mit T-SQL Code geschrieben und nicht in einer Datenbank, sondern in einer externen Datei gespeichert. Der Benutzer, der die Abfrage ausführt, muss über Berechtigungen für die Tabellen und Views verfügen, auf die mit der Abfrage zugegriffen werden soll. Die Abfrage kann zum Abrufen, Hinzufügen oder Löschen von Daten verwendet werden. Eine Abfrage kann einen oder mehrere Parameter sowie eine oder mehrere Ergebnismengen enthalten.

 

SQL Server Funktionen

Es gibt zwei Arten von SQL Server Funktionen: System- und benutzerdefinierte Funktionen. Systemdefinierte Funktionen werden von Microsoft entwickelt und mit SQL Server mitgeliefert. Sie können Zeichenfolgenmanipulationen, Datumsberechnungen, statistische Berechnungen und vieles mehr durchführen. Sie sind allgemein gehalten und werden in zahlreichen Anwendungen verwendet. Benutzerdefinierte Funktionen werden von Entwicklern und Datenbankadministratoren erstellt, um eine bestimmte Geschäftsanforderung zu erfüllen. Die benutzerdefinierten Funktionen können skalar bewertet, inline-Tabellenwerte oder Tabellen mit mehreren Anweisungen sein.

 

SQL Server Ansicht

Bei einer Ansicht (engl. view) handelt es sich um eine virtuelle Tabelle, deren Code aus einer SELECT Anweisung, die über eine JOIN Anweisung auf eine oder mehrere Tabellen zugreift, besteht. Ein View kann verwendet werden, um eine komplexe Abfrage zu vereinfachen oder um die Berichterstellung für Hauptbenutzer zu vereinfachen.

 

SQL Server Management Studio

Das SQL Server Management Studio (SSMS) ist das langjährige Tool von Microsoft zur Verwaltung und Entwicklung von Datenbankobjekten mit T-SQL-Code. Mit SSMS kann eine Verbindung zu Instanzen des Datenbankmoduls, der Integration Services, der Reporting Services und der Analysis Services hergestellt werden.

Aus administrativer Sicht ermöglicht SSMS, T-SQL-Code zu schreiben, Aufgaben wie Sicherungen, Wiederherstellungen, Konfigurationen von Datenbanken, Optimierungen der Leistungen, Planen von Agent Jobs und viele weitere durchzuführen. SSMS bietet hier eine grafische Benutzeroberfläche, die alle Funktionen von SQL Server übersichtlich darstellt.

Aus Entwicklungssicht ermöglicht SSMS Entwicklern und Business Intelligence-Experten das Erstellen von Tabellen, Prozeduren, Ansichten, Funktionen usw. Es gibt auch Benutzeroberflächen zum visuellen Erstellen von Datenbankdiagrammen und Tabellen, um die Beziehung zwischen Objekten besser zu verstehen. SSMS enthält auch eine visuelle Analyse des Abfrageplans, um die Zusammenhänge von T-SQL-Codes zu verstehen und zu optimieren.

 

SQL Server Profiler und Server Side Trace

Der SQL Server Profiler ist ein langjähriges Tool, das von Datenbankadministratoren oder Entwicklern ausgeführt wird, um jede einzelne Codezeile, die für eine SQL Server Instanz ausgeführt wird, in Form von Ereignissen zu erfassen und so die Leistung zu optimieren. Der Profiler kann eine enorme Datenmenge generieren und möglicherweise die Leistung des überwachten System beeinträchtigen, wenn es auf einer bereits besteuerten SQL Server-Instanz nicht richtig konfiguriert ist. Der Profiler kann so optimiert werden, dass nur Ereignisdaten für bestimmte Benutzer, Datenbanken, Zeiträume usw. erfasst werden. Profilerdaten können zur weiteren Analyse in eine Tabelle oder in eine Textdatei geschrieben werden.

Ein mit dem Profiler verwandter Prozess ist der Server Side Trace. Dieser entspricht einem Satz T-SQL-Code, der für eine SQL Server Instanz entweder über SSMS oder einen SQL Server Agent Job ausgeführt werden kann, um dieselben Ereignisse zu erfassen und in eine Datei zu schreiben. Die Datei wird im Allgemeinen in eine Tabelle geladen, um eine Analyse durchzuführen. Der Server Side Trace hat im Vergleich zum Profiler im Allgemeinen weniger Auswirkungen auf die Leistung der überwachten SQL Server Instanz.

Im Allgemeinen wurde der Profiler aufgrund der Auswirkungen auf die Leistung durch erweiterte Ereignisse ersetzt. Einige SQL Server Experten bevorzugen jedoch weiterhin den Profiler und Server Side Trace für Ad-hoc- oder bestimmte Fälle zur Leistungsoptimierung.

 

SQL Server Extended Events

In vielerlei Hinsicht sind erweiterte SQL Server Ereignisse aus der ursprünglichen Funktionalität von SQL Server Profiler und Server Side Trace hervorgegangen. Viele der gleichen Ereignisse und Konfigurationen sind unter “Erweiterte Ereignisse” im SQL Server Management Studio-Assistenten oder im T-SQL-Code verfügbar. Erweiterte Ereignisse können ausgeführt werden, um eine Datenerfassung zur Leistungsoptimierung durchzuführen oder um Betriebselemente wie eine Datenbank zu überwachen, die offline geschaltet wird. SQL Server wird auch mit einigen standardmäßigen erweiterten Ereignissitzungen und Vorlagen geliefert, die als Ausgangspunkt für die Datenerfassung verwendet werden können. Denk daran, dass diese Daten sehr schnell groß werden können. Es ist wichtig nur die erforderlichen Ereignisse und zugehörigen Daten zu erfassen und diesen Prozess dann als Teil Ihrer täglichen Aufgaben zu überwachen.