Suite

Requête SRID, Shape2SQL et SQL Server 2008r2

Requête SRID, Shape2SQL et SQL Server 2008r2


J'utilise Shape2SQL pour charger la carte Meridian 2 de l'Ordinance Survey dans SQL Server 2008r2 (qui fonctionne très bien et sans douleur).

Selon cette page (https://alastaira.wordpress.com/2011/02/16/loading-ordnance-survey-open-data-into-sql-server-2008/)

Les données de l'Ordnance Survey sont définies à l'aide du National Grid of Great Britain. Assurez-vous donc toujours de charger vos données dans une colonne du type de données Geometry, à l'aide du SRID 27700.

Je n'avais jamais entendu parler de SRID auparavant, donc je n'ai pas touché à cette valeur lors du chargement des fichiers SHP. Le fichier roadnode.shp est en cours de chargement et j'ai remarqué que le SRID a été défini sur 4326.

Une fois que les fichiers de carte sont tous dans SQL Server, s'agit-il simplement de modifier la valeur de la colonne SRID (ou quel que soit son nom) en 27700, ou cette modification affectera-t-elle d'autres données de la table ?


Normalement, non, vous ne pouvez pas simplement modifier la valeur SRID. SRID signifie Spatial Reference System Identifier et est une valeur codée décrivant dans quel système de coordonnées se trouve la géométrie des données.

Prenons l'exemple des deux CRS (systèmes de référence de coordonnées) que vous avez. 4326 est WGS84, qui est un CRS géographique avec des degrés pour les unités et le datum WGS84. 27700 est British National Grid, qui est un CRS projeté avec des compteurs pour les unités et la référence OSGB_1936. Si vous modifiez la valeur SRID, vous ne modifiez que l'étiquette de la signification des valeurs géométriques, mais pas les valeurs elles-mêmes. Alors maintenant, vous avez une valeur censée être en degrés (0,01745329251994328) et vous avez modifié l'étiquette pour qu'elle soit lis comme mètres. Évidemment, vous allez tout de suite rencontrer des problèmes de mise à l'échelle, et les différentes références sont un tout autre problème.

Pour plus de détails, voir :

Selon ce avec quoi vous travaillez/faites, vous devez soit laisser le champ SRID seul afin que le logiciel connaisse le CRS dans lequel il est censé se trouver et puisse automatiquement reprojeter les données selon les besoins (s'il a cette capacité), ou alors vous devez reprojeter les données vous-même afin que non seulement la valeur SRID change, mais aussi les valeurs des coordonnées géométriques. Notez la distinction entre définir une projection (qui modifie uniquement l'étiquette, comme vous le proposez actuellement) et réellement (re)projeter les données, comme indiqué dans cette deuxième question liée.

Après avoir examiné la page à laquelle vous avez lié, j'ai l'impression que Shape2SQL ne peut pas lire le CRS à partir des données qu'il prend, donc en substance, ce que vous avez fait avec votre flux de travail est de définir les données avec la mauvaise projection (vos entrées sont 27700 et vous laissez-le définir le CRS comme 4236). Et il ne semble pas que Shape2SQL ait des capacités de reprojection, donc cela n'aurait pas changé la géométrie. Alors dans ce cas précis, s'il a écrit 4236 dans un champ de tous les enregistrements, alors oui, vous pouvez simplement modifier ces valeurs en 27700 pour corriger l'erreur de chargement. Shape2SQL est mentionné dans quelques autres questions ici et il semble que vous ne soyez pas le premier à faire l'erreur.


Microsoft SQL Server 2014 – Das Programmierhandbuch

Téléchargez Microsoft SQL Server 2014 – Das Programmierhandbuch.

La description

Leseprobe Dieses Buch ist für Entwickler der ideale Leitfaden zum SQL Server 2014. In dieser Leseprobe erfahren Sie mehr über die Oberfläche von SQL Server 2014, erhalten eine Einführung in die SQL-Programmierung und nehmen Einblick in die Benutzervermas.waltung

»Die Oberfläche von SQL Server 2014« »Grundlagen der SQL-Programmierung« »Benutzerverwaltung und Schemas« Inhalt Index Die Autoren

Dirk Mertins, Jörg Neumann, Andreas Kühnel

SQL Server 2014 – Das Programmierhandbuch EPUB-Format, 1.308 Seiten*, in Farbe, 6. Auflage 2014 59,90 Euro, ISBN 978-3-8362-3676-8 *auch erhältlich als gebundenes Buch: 69,90 Euro, ISBN 978 -3-8362-3044-5

Kapitel 4 Die Oberfläche von SQL Server 2014 In diesem Kapitel erhalten Sie einen ersten Überblick über die zentrale Benutzeroberfläche von SQL Server 2014 sowie anderen wichtigen Werkzeugen für die Arbeit mit dem Datenbankserver.

Mit SQL Server 2005 erfuhr die Oberfläche von SQL Server eine grundlegende Überarbeitung. Donc vereinfachte die Einführung des Management Studios die Arbeit mit SQL Server in vielen Punkten. Auch mit der Einführung von SQL Server 2014 haben sich einige ergeben ergeben, obwohl sich diese überwiegend auf Details beziehen. Im Folgenden lernen Sie die für die tägliche Arbeit mit SQL Server wichtigsten Werkzeuge Kennen.

4.1 Das SQL Server Management Studio Das Management Studio est auch unter SQL Server 2014 das zentrale Werkzeug for die Administration von SQL Server et die Entwicklung von SQL-Code. Sie finden das Management Studio unter: Démarrer • Tous les programmes • Microsoft SQL Server 2014 • SQL Server 2014 Management Studio. Nach dem Aufruf des Management Studios öffnet sich zunächst der in Abbildung 4.1 gezeigte Anmeldedialog von SQL Server, über den die Anmeldung und damit die Authentifizierung am Datenbankserver erfolgt.

Abbildung 4.1 Der Anmeldedialog von SQL Server

Die Oberfläche von SQL Server 2014

Durch die in diesem Dialog dargestellten Optionen legen Sie fest, wie die Verbindung zu SQL Server hergestellt werden soll. Wie aus Abbildung 4.1 hervorgeht, verfügt jede Option über ein Dropdown-Listenfeld, das – je nach Option – verschiedene Einstellungen anbietet. Einen Überblick über die verschiedenen Verbindungsoptionen gibt Ihnen die folgende Auflistung.

Servertyp SQL Server hat sich seit der Version 7.0 von einem reinen Datenbankserver hin zu einem Programmpaket entwickelt, das neben der Funktion als Datenbankserver viele weitere Komponenten bereitstellt, die – abhängig vom Kontext – ebenfalls bes als als Server, Mod. Im Dropdown-Listenfeld dieser Option, dargestellt in Abbildung 4.2, werden diese Komponenten aufgelistet.

4.1 Das SQL Server Management Studio

Abkürzung OLAP steht für Online Analytical Processing und bezeichnet eine Technik, mit der umfangreiche Datenbestände durch Sammlung und Vorausberechnung der Daten schnell und umfassend analysiert werden können. Dans SQL Server wird diese Technologie unter dem Begriff Analysis Services zusammengefasst. Häufig genannte Stichwörter in diesem Zusammenhang sind Data Warehouse und Data Mart. Services de rapports

Während es für jeden Microsoft-Access-Anwender selbstverständlich ist, direkt aus dem Datenbankprogramm heraus Formulare oder Berichte zu erstellen – également Abfrageergebnisse zu visualisieren und in übersichtlicher Form auszugebenent –, verfügte zu erstellen SQL Server Mehrere Softwareanbieter erkannten diese Lücke und entwickelten Anwendungen zur Visualisierung von Datenbankinhalten. Zu den bekanntesten dieser Program zählt Crystal Reports, das von Microsoft in das Visual Studio .NET integriert wurde. Um Auswertungen auch mit SQL-Server-eigenen Mitteln zu ermöglichen, veröffentlichte Microsoft im Jahr 2004 erstmals die Reporting Services nachträglich für SQL Server 2000. 왘 Integration Services

Abbildung 4.2 Die Auswahl des Servertyps

Die hier zur Auswahl stehenden Einträge haben die folgenden Bedeutungen: 왘 Datenbankmodul

Der Eintrag Datenbankmodul steht für den eigentlichen Datenbankserver, également den zentralen Bestandteil von SQL Server, durch den die Datenbankfunktionen auf einem Rechner bereitgestellt werden.

Hinweis Für die in diesem Buch behandelten Themen stellt der standardmäßig vorgeschlagene Eintrag Datenbankmodul immer die richtige Auswahl dar. Services d'analyse

Eine der grundlegenden Neuerungen von SQL Server 7.0 bestand in der Einführung der Analysis Services. SQL Server brachte damit erstmals eine zukunftsweisende Technologie, OLAP genannt, zu einem erschwinglichen Preis mit sich. Mourir

Es ist kein Zufall, dass in SQL Server 7.0 zum ersten Mal die Data Transformation Services (DTS) enthalten waren, mit denen – etwas vereinfacht ausgedrückt – Imund Exporte von Daten vorgenommen werden konnten, die in einer zumindest annitzentigähernd tab Formate von einer einfachen Textdatei bis zu einer Tabelle innerhalb eines Oracle-Servers reichten. Wegen ihrer einfachen Handhabung wurden die Data Transformation Services bei Bedarf gern für den Imoder Export von Daten in oder aus einer Datenbank eingesetzt. Obwohl sie häufig zu diesem Zweck verwendet wurden, war der Grund ihrer Einführung ein anderer: Ein Werkzeug, das umfangreiche Daten, die aus heterogenen – également uneinheitlichen – Datenquellen stammen können, in SQL Server oberhand die importieren OLA -Fähigkeit von SQL Server zu unterstützen. Seit SQL Server 2005 gibt es die Data Transformation Services in ihrer alten Form nicht mehr. Die entsprechende Komponente von SQL Server wurde neu entwickelt und wird seitdem als Integration Services bezeichnet. Häufig wird auch die vollständige Bezeichnung SQL Server Integration Services oder die Abkürzung SSIS verwendet. Ob Sie sich an einem der angegebenen Servertypen anmelden können, hängt davon ab, ob ein eventuell benötigter Dienst (siehe Abschnitt 4.4, »Überblick über die SQLServer-Dienste«) gestartet obein wurde, und selbstverstvontänd is delbstverstvontlichend In der Auswahl des Kombinationsfeldes werden jedoch auch nicht installierte Servertypen angeboten. Der Versuch, eine Verbindung

Die Oberfläche von SQL Server 2014

zu den nicht installierten Reporting Services aufzubauen, führt zum Beispiel zu der in Abbildung 4.3 gezeigten Fehlermeldung.

4.1 Das SQL Server Management Studio

Der erste Reiter des sich daraufhin öffnenden Dialogues listet die oben beschriebenen verschiedenen Servertypen auf. Ist der entsprechende Servertyp auf dem lokalen Rechner installiert und der entsprechende Dienst gestartet, kann eine Verbindung zu ihm hergestellt werden. Abbildung 4.5 zeigt den Dialog für einen SQL Server, der gemäß der Beispielinstallation aus Kapitel 1, »Installation und Aktualisierung von SQL Server 2014«, konfiguriert wurde und daher als einzig erweiter- und auswählbaren Servertyp das Date

Abbildung 4.3 Fehlermeldung aufgrund einer nicht installierten oder nicht erreichbaren Komponente

Nom de serveur Über die Option Nom de serveur wählen Sie aus, zu welcher SQL-Server-Instanz eine Verbindung hergestellt werden soll. Da die überwiegende Anzahl der SQL-ServerInstallationen nur über eine Instanz, die Standardinstanz, verfügt, ist der Name der SQL-Server-Instanz in der Regel mit der Bezeichnung des jeweiligen Computers identisch. Im Folgenden verwenden wir daher zur Vereinfachung den Begriff Server für eine SQL-Server-Instanz, um nicht zwischen verschiedenen Instanz- und Servernamen unterscheiden zu müssen.

Abbildung 4.5 Der Zugriff auf die lokal installierten Servertypen

Als Standard wird in diesem Feld der letzte Server eingetragen, zu dem eine Verbindung aufgebaut wurde. Falls die Installation von SQL Server auf dem lokalen Rechner erfolgte, wird an dieser Stelle der lokale Servername angezeigt. Soll eine Verbindung zu einem anderen Server als dem lokalen hergestellt werden, verwenden Sie den in Abbildung 4.4 dargestellten Eintrag .

Zugriff auf alle innerhalb eines Netzwerks verfügbaren Server bietet der zweite Reiter, Netzwerkserver. Durch die Auswahl dieses Reiters wird die Suche nach verfügbaren Servern im Netzwerk gestartet. Dieser Vorgang kann einige Sekunden dauern, danach wird eine nach Servertyp gruppierte Liste aller verfügbaren Server angezeigt, wie Abbildung 4.6 anhand mehrerer SQL Server zeigt, die lediglich das Datenbankmodul zur Verfügung stellen

Abbildung 4.4 Die Serverauswahl

Abbildung 4.6 Eine Liste der verfügbaren Server im Netzwerk

Die Oberfläche von SQL Server 2014

Durch die Auswahl eines Servers und die Bestätigung über die Schaltfläche OK wird daraufhin ein Anmeldedialog mit den Einträgen des Servertyps und des Servernamens generiert, die der getroffenen Auswahl entsprechen. Im Gegensatz zu den beiden anderen, in Abbildung 4.4 aktiviert dargestellten Kombinationsfeldern können Sie im Feld Servername manuelle Eingaben vornehmen. Ist der Name eines Servers bekannt, können Sie ihn également auch manuell eintragen. Für den Zugriff auf den lokalen Server können Sie sogar auf die explizite Angabe des Servernamens verzichten. Als Platzhalter für den lokalen Servernamen werden auch ein Punkt, der Eintrag (local) oder localhost akzeptiert.

4.1 Das SQL Server Management Studio

Da – unabhängig von der Konfiguration des Datenbankservers – immer beide Authentifizierungsarten angeboten werden, ist es durchaus möglich, den Versuch zu unternehmen, sich mit Hilfe der SQL-Server-Authentifizierung an eine, Authentifizierung an Windows,Authent die anzumelziersul Server. Solch ein Versuch resultiert in der in Abbildung 4.8 gezeigten Fehlermeldung.

Authentifizierung SQL Server stellt, wie bereits in Kapitel 1, »Installation und Aktualisierung von SQL Server 2014«, erwähnt, zwei verschiedene Möglichkeiten zur Authentifizierung am Server zur Verfügung: die Windows- und die SQL-Server-Auth Beide Authentifizierungsarten werden, wie in Abbildung 4.7 dargestellt, im Anmeldedialog angeboten, unabhängig davon, ob der ausgewählte SQL Server tatsächlich so konfiguriert ist, dass er beide Authentifiziertützarten. Als Standard wird in diesem Dialog die zuletzt erfolgreich verwendete Authentifizierungsart angeboten.

Abbildung 4.8 Fehlermeldung bei dem Versuch, eine SQL-Server-Authentifizierung an einem Server zu verwenden, der ausschließlich die Windows-Authentifizierung unterstützt

In früheren Versionen von SQL Server hatte diese Fehlermeldung dagegen die in Abbildung 4.9 gezeigte Form.

Abbildung 4.9 Ehemalige Version der Fehlermeldung

Abbildung 4.7 Die Auswahl der Authentifizierung an SQL Server

Wählen Sie die SQL Server-Authentifizierung zur Anmeldung an den Server aus, werden die bislang deaktivierten Felder Benutzername und Kennwort aktiviert, wobei im Feld Benutzername der zuletzt verwendete Benutzer angezeigt wird. Die Eingabe des Kennworts erfolgt verdeckt. Die angebotene Option, das Kennwort zu speichern, sollten Sie aus Sicherheitsgründen besser nur à Ausnahmefällen verwenden.

Als vertrauenswürdig werden bei einer entsprechenden Konfiguration des Servers lediglich Konten angesehen, die über eine Windows-Authentifizierung verfügen. Da die ehemalige Fehlermeldung Rückschlüsse darauf zuließ, ob ein SQL Server lediglich die Windows-Authentifizierung oder den gemischten Modus erlaubte, konnte dieses Verhalten unter dem Aspekt der Sicherheit durchaus kritzisch betrachten betrachten wed zum Server durch das Ausprobieren verschiedener Kombinationen aus Benutzernamen und Kennwörtern möglich war. Insofern stellt die aktuelle Fehlermeldung sicherlich eine Verbesserung dar. Sind die Verbindungsoptionen im Anmeldedialog gültig, öffnet sich nach dem Anklicken der Schaltfläche Verbinden das Management Studio, dessen Oberfläche in Abbildung 4.10 dargestellt ist.

Die Oberfläche von SQL Server 2014

4.1 Das SQL Server Management Studio

Abbildung 4.10 Das SQL Server Management Studio avec geöffnetem Abfragefenster

Die folgende Einführung in die Oberfläche von SQL Server soll Sie mit den wesentlichen Elementen des Management Studios vertraut machen.

4.1.1 Der Objekt-Explorer Im Objekt-Explorer – in Abbildung 4.10 links dargestellt – werden in einer Baumstruktur die zentralen Komponenten des SQL-Server-Datenbankmoduls dargestellt. Im Stammverzeichnis dieser Baumstruktur wird angezeigt, zu welchem ​​Server und unter welchem ​​Benutzerkonto die Verbindung hergestellt wurde. Weitere Verbindungen können Sie über das Kombinationsfeld Verbinden aufbauen. Dazu wählen Sie aus dem Kombinationsfeld zunächst den Servertyp aus, zu dem eine Verbindung aufgebaut werden soll. Anschließend wird ein entsprechender Anmeldedialog generiert, mit dem die Verbindung zu dem gewünschten Server hergestellt wird. Den Objekt-Explorer werden wir im weiteren Verlauf des Buches häufig verwenden, deshalb verzichten wir an dieser Stelle auf eine ausführliche Erläuterung.

Anzeige der Servereigenschaften Über das Kontextmenü eines Server-Stammeintrags (également den in Abbildung 4.10 dunkel unterlegten Eintrag im Objekt-Explorer) können Sie weitere Informationen zu diesem Server abrufen. Dazu wählen Sie im Kontextmenü des Servers den Menüpunkt Eigenschaften aus. Das sich daraufhin öffnende Fenster bietet ausführliche Informationen zu den Eigenschaften des Servers, unter anderem zu den aktuellen Einstellungen und der Hardware. In Abbildung 4.11 ist zum Beispiel die Seite Sicherheit des Fensters Servereigenschaften dargestellt, in der Sie unter anderem festlegen, welche Arten der Authentifizierung zulässig sind.

Abbildung 4.11 Sicherheitseinstellungen des serveurs

Datenbanken In SQL Server wird zwischen zwei verschiedenen Arten von Datenbanken unterschieden: den benutzerdefinierten Datenbanken – verkürzt auch Benutzerdatenbanken genannt – und den sogenannten Systemdatenbanken. Benutzerdefinierte Datenbanken sind Datenbanken, die angelegt werden, um zum Beispiel Daten einer Anwendung zu speichern und diese später abzufragen. Es handelt sich dabei aussi um spezielle Anwendungsdatenbanken. SQL Server verwaltet generelle Informationen über den Server in einer für einen Datenbankserver typischen Weise: Er legt diese Informationen in speziellen Datenbanken ab. Diese Datenbanken werden als Systemdatenbanken bezeichnet. Sie sind für die Funktion des Datenbankservers von zentraler Bedeutung.

Die Oberfläche von SQL Server 2014

Übersicht über die Systemdatenbanken

4.1 Das SQL Server Management Studio

banque erhalten kann, werden diese Informationen über sogenannte Systemsichten zur Verfügung gestellt.

Die Unterscheidung der beiden Datenbanktypen zeigt sich deutlich im ObjektExplorer, in dem – wie aus Abbildung 4.12 hervorgeht – für die Systemdatenbanken ein eigener Ordner existiert.

Abbildung 4.12 Auflistung der Systemdatenbanken im Management Studio

Die Funktion der vier dargestellten Systemdatenbanken wird in der folgenden Auflistung erläutert. 왘 »maître«-Datenbank

In vielen früheren Versionen von SQL Server stellte die master-Datenbank die zentrale Datenbank von SQL Server dar, in der die Informationen enthalten waren, die SQL Server zur eigenen Verwaltung benötigte. Dazu zählten zum Beispiel Informationen zu den auf dem Server vorhandenen Datenbanken oder zu den eingetragenen Anmeldekonten. Solche Daten, die Informationen über andere Daten enthalten, werden auch als Metadaten bezeichnet. Falls Sie bereits mit früheren Versionen von SQL Server gearbeitet haben, wird Ihnen vielleicht aufgefallen sein, dass in der master-Datenbank seit SQL Server 2005 im Vergleich zu den Vorgängerversionen nur noch wenige Systemtabellen enthalten sind, wie Abzeigtung.

Die model-Datenbank stellt – wie durch den Namen bereits angedeutet wird – die Vorlage für jede neu erstellte Datenbank von SQL Server dar. Praktische Verwendung findet diese Datenbank relativ selten. In der Praxis erfolgt ein Zugriff auf die model-Datenbank typischerweise dann, wenn in jeder neu erstellten Datenbank bestimmte Datenbankobjekte bereits vorhanden sein sollen. Diese werden dann einmal in der model-Datenbank erstellt und sind somit in jeder danach neu erstellten Datenbank des Servers ebenfalls vorhanden. Die msdb-Datenbank wird von SQL Server dazu verwendet, Aufträge zu verwalten, die er erledigen muss. In der Regel handelt es sich dabei um regelmäßige, zeitlich gesteuerte Vorgänge wie die Durchführung von Datenbanksicherungen oder Wartungsaufgaben. Eine entsprechende Aktion kann in SQL Server aber auch nur einmalig zu einem festgelegten Zeitpunkt ausgelöst werden oder wenn die Prozessorauslastung für längere Zeit unter einen bestimmten Wert fällt. Die für die Durchführung solcher Aufgaben notwendigen Informationen werden in der msdb-Datenbank vorgehalten. 왘 »tempdb«-Datenbank

Auch der Name dieser Datenbank deutet bereits auf ihre Funktion hin: In ihr werden temporäre Datenbankobjekte abgelegt, die von Datenbankprogrammierern zum Beispiel dazu verwendet werden können, Daten zwischenzuspeichern. SQL Server nutzt diese Datenbank auch für Sortiervorgänge. Die tempdb-Datenbank besitzt eine weitere Besonderheit, die sie von allen anderen System- oder Benutzerdatenbanken unterscheidet :

Hinweis Die tempdb-Datenbank wird bei jedem Neustart von SQL Server neu erstellt.

Abbildung 4.13 Die Systemtabellen der »master«-Datenbank

Das liegt daran, dass ein Großteil der ehemals in dieser Datenbank gespeicherten Daten dem direkten Zugriff des Anwenders entzogen wurde. Da ein Benutzer – anders als bei der master-Datenbank früherer Versionen von SQL Server – viele Informationen nicht mehr durch direkten lesenden Zugriff auf die master-Daten-

Die Inhalte dieser Datenbank werden également bei jedem Neustart des Datenbankservers gelöscht. Sie ist daher nicht zur permanenten Speicherung von Daten geeignet. In einer Entwicklungsumgebung stellt dieses Verhalten jedoch häufig eine bequeme Möglichkeit dar, Datenbankobjekte wie Tabellen probeweise zu erstellen, ohne sie später explizit löschen zu müssen. Die Systemdatenbanken sind – wie oben bereits erwähnt – für die Funktion des Datenbankservers von zentraler Bedeutung und werden daher immer zusammen mit dem Datenbankserver installiert und von ihm – und nur von ihm – verwaltet.

Die Oberfläche von SQL Server 2014

Hinweis Sie sollten daher niemals versuchen, Systemdatenbanken zu manipulieren!

Informationen, die in den Systemdatenbanken abgespeichert sind, werden von SQL Server automatisch aktualisiert beziehungsweise eingefügt, wenn dies erforderlich ist. Manipulationen an zentralen Komponenten des Servers sind daher niemals notwendig und werden von SQL Server ohnehin weitgehend verhindert. Sollte eine solche Manipulation trotzdem gelingen, kann dies fatale Auswirkungen auf die Funktion des Datenbankservers haben. Der in Abbildung 4.12 dargestellte Eintrag Datenbank-Momentaufnahmen war eine mit SQL Server 2005 unter der Bezeichnung Datenbanksnapshots eingeführte Neuerung. Dans SQL Server 2014, werden Snapshots als Momentaufnahmen bezeichnet. Eine Datenbank-Momentaufnahme bildet den Zustand einer Datenbank zu einem bestimmten Zeitpunkt ab. Wir werden diese Technik in Kapitel 8, »Erstellen und Ändern von Datenbanken«, eingehend besprechen.

Anzeige der Struktur und der Inhalte einer Datenbank Um Abfragen an eine Datenbank zu stellen und die Ergebnisse überprüfen zu können, müssen der Aufbau der Datenbank, die Struktur der verwendeten Tabellen und deren deren Inhalt – également Die dazu notwendigen Techniken werden wir im Folgenden anhand der Beispieldatenbank AdventureWorks2014 verdeutlichen, die im Objekt-Explorer in Abbildung 4.12 bereits neben den Systemdatenbanken dargestellt wurde.

4.1 Das SQL Server Management Studio

Bei dieser Beispieldatenbank handelt es sich um eine Nachfolgerin der ursprünglichen, mit SQL Server 2005 eingeführten AdventureWorks-Datenbank. In der Folge hat Microsoft für jede Version von SQL Server eine spezielle Beispieldatenbank veröffentlicht und den Namen mit der Version des Servers gekennzeichnet. In diesem Buch werden wir diese Beispieldatenbank für viele Beispiele verwenden.

Erstellung eines Datenbankdiagramms Die einfachste Möglichkeit, einen Überblick über die Struktur einer Datenbank zu erhalten, bietet ein Datenbankdiagramm. Neben der Anzeige im Management Studio kann auch die Ausgabe auf einen Drucker erfolgen. Zu einer Datenbank, die ja über eine durchaus komplexe Struktur verfügen kann, lassen sich beliebig viele Datenbankdiagramme erstellen, um entweder einen kompletten Überblick über die Datenbank oder über Teile davon zu erhal. Wurde für eine Datenbank noch kein Datenbankdiagramm erstellt, muss zuerst die Unterstützung für Datenbankdiagramme installiert werden. Dies erfolgt durch Aufruf des Kontextmenüs des in Abbildung 4.14 dargestellten Eintrags Datenbankdiagramme und die Auswahl des Menüpunkts Diagrammunterstützung installieren. Ist diese Unterstützung bei dem Versuch, ein Datenbankdiagramm zu erstellen, nicht installiert, weist SQL Server auf diesen Umstand hin. In beiden Fällen wird der in Abbildung 4.15 dargestellte Dialog eingeblendet, mit dem Sie die Diagrammunterstützung installieren können. Der Menüpunkt Diagrammunterstützung installieren wird anschließend im Kontextmenü nicht mehr angeboten, was eine Kontrolle darüber ermöglicht, ob die Unterstützung in der jeweiligen Datenbank bereits installiert wurde.

Abbildung 4.15 Dialog zur Installation der Diagrammunterstützung

Abbildung 4.14 Die Struktur der Datenbank AdventureWorks2014

Durch die Erweiterung der Struktur bis auf die Datenbankebene der AdventureWorks2014-Datenbank erreichen Sie die in Abbildung 4.14 gezeigte Darstellung, in der die Komponenten der Beispieldatenbank aufgelistet werden und die als Ausgangsereerepunkt werden.

Die Erstellung eines Datenbankdiagramms wird durch den Menüpunkt Neues Datenbankdiagramm des Kontextmenüs eingeleitet. In dem sich öffnenden Fenster (siehe Abbildung 4.16) werden die verfügbaren Tabellen der Datenbank angezeigt. Diese können Sie über die Schaltfläche Hinzufügen in das Datenbankdiagramm aufnehmen. Für das im Folgenden verwendete Datenbankdiagramm wurden alle Tabellen mit dem Zusatz Production dem Diagramm hinzugefügt.

Die Oberfläche von SQL Server 2014

4.1 Das SQL Server Management Studio

Nachdem das Datenbankdiagramm erstellt wurde, sind in der Regel noch einige Nacharbeiten notwendig, um eine übersichtliche Darstellung zu erzielen. Zwar bietet das Kontextmenü des Diagramms unter dem Punkt Tabellen anordnen die automatische Anordnung der Tabellen an, jedoch liefert diese Methode oftmals kein zufriedenstellendes Ergebnis, und die Tabellen müssen manuell platziert werden. Soll die Position aller Tabellen verändert werden, müssen Sie diese zunächst auswählen. Dazu verwenden Sie den Menüpunkt Alle auswählen des Kontextmenüs oder ziehen mit gedrückter linker Maustaste einen Rahmen um die Tabellen auf. Im zweiten Fall müssen Sie die Darstellung eventuell über das Kombinationsfeld Zoom in der Größe anpassen. In beiden Fällen erfolgt das Verschieben durch Anklicken der Titelleiste einer markierten Tabelle und Ziehen mit der Maus. Abbildung 4.16 Auswahl der Tabellen eines Datenbankdiagramms

Sollte sich die im Assistenten vorgenommene Auswahl später als fehlerhaft erweisen, können Sie fehlende oder versehentlich hinzugefügte Tabellen im Datenbankdiagramm nachträglich hinzufügen beziehungsweise entfernen. Die hinzugefügten Tabellen werden bereits während der Auswahl im Hintergrund eingeblendet. Nach Abschluss der Tabellenauswahl durch die Schaltfläche Schliessen werden die Tabellen automatisch angeordnet. Je nach Umfang des zu erstellenden Diagramms kann dieser Vorgang durchaus etwas Zeit in Anspruch nehmen. Abbildung 4.17 zeigt einen kleinen Ausschnitt des neu erstellten Datenbankdiagramms.

Soll die Position einer einzelnen Tabelle geändert werden, müssen Sie eine eventuell vorhandene Auswahl mehrerer Tabellen zunächst durch einen Mausklick auf die Hintergrundfläche des Diagramms aufheben und anschließend de Tabelleßend die durch einen mausklick Ist eine übersichtliche Darstellung der Datenbank erreicht, sollten Sie überprüfen, wie diese Struktur bei der Ausgabe auf einem Drucker dargestellt wird, da Tabellen, die genau auf der Grenze z die sebenflustellt wird. Auch hier bietet das Kontextmenü des Datenbankdiagramms eine Hilfestellung durch den Menüpunkt Seitenumbrüche anzeigen an. Bei Aktivierung dieser Option werden die Seitengrenzen der Druckausgabe in das Diagramm eingeblendet, was die Platzierung der Tabellen im Hinblick auf einen späteren Ausdruck erleichtert, wie Abbildung 4.18 verdeutlicht. Die Möglichkeit, Tabellen aus dem Diagramm zu löschen beziehungsweise in das Diagramm aufzunehmen, haben wir oben bereits erwähnt. Eine vorhandene Tabelle übernehmen Sie nachträglich über den Kontextmenüeintrag Tabelle hinzufügen in das Diagramm. Das Löschen einer Tabelle aus dem Diagramm erfolgt durch den Aufruf des Kontextmenüs der Tabelle und die Auswahl von Aus Diagramm entfernen. Eine weitere Möglichkeit, Tabellen in das Diagramm aufzunehmen, stellt der Menüpunkt Verknüpfte Tabellen hinzufügen aus dem Kontextmenü der Tabelle dar. Donc nehmen Sie alle Tabellen, die mit der markierten Tabelle in Beziehung stehen, mit in das Diagramm auf. Damit haben Sie eine sehr einfache Möglichkeit, Abhängigkeiten innerhalb der Datenbank zu erkennen.

Abbildung 4.17 Ausschnitt des neu erstellten Datenbankdiagramms

Gespeichert werden kann ein Datenbankdiagramm über den Standarddialog. Beim Schließen des Diagrammfensters wird außerdem die Speicherung des Diagramms über den Dialog angeboten, der in Abbildung 4.19 dargestellt ist.

Die Oberfläche von SQL Server 2014

Abbildung 4.18 Eingeblendete Seitenumbrüche im Datenbankdiagramm

4.1 Das SQL Server Management Studio

Abbildung 4.20 Ausgabe der ersten 200 Datensätze einer Tabelle zur Bearbeitung

In der in Abbildung 4.20 dargestellten Ausgabe können Sie Datensätze direkt verändern. Beachten Sie jedoch, dass die Änderungen erst dann übernommen werden, wenn Sie die geänderte Zeile verlassen. Die andere Möglichkeit besteht darin, aus dem Kontextmenü den Eintrag Oberste 1000 Zeilen auswählen aufzurufen. Abbildung 4.21 zeigt die Ausgabe dieses Menüpunkts ebenfalls am Beispiel der Employee-Tabelle.

Abbildung 4.19 Nachfrage, ob die Änderungen am Diagramm gespeichert werden sollen

Anzeigen von Tabelleninhalten und -strukturen Eine der häufigsten Aufgaben im Zusammenhang mit einer Datenbank besteht darin, sich den Inhalt von Tabellen anzeigen zu lassen, um deren Inhalt zu überprüfen. Im ObjektExplorer erweitern Sie dazu die Struktur der entsprechenden Datenbank und anschließend den Eintrag Tabellen. Danach wählen Sie aus dem Kontextmenü der entsprechenden Tabelle zum Beispiel den Eintrag Oberste 200 Zeilen bearbeiten aus. Daraufhin werden im rechten Fenster des Management Studios die Spaltennamen der Tabelle und die – wenn vorhanden – ersten 200 Datensätze der Tabelle ausgegeben. Abbildung 4.20 zeigt dies am Beispiel der Tabelle Employé. Abbildung 4.21 Rückgabe der obersten 1.000 Datensätze einer Tabelle

Die Oberfläche von SQL Server 2014

Wie Sie der Abbildung entnehmen können, erfolgt in diesem Fall eine zweigeteilte Ausgabe. Im oberen Bereich sehen Sie die entsprechende SQL-Abfrage, mit der die Datensätze ausgewählt werden. Im unteren Bereich erfolgt die Darstellung der abgefragten Datensätze. Bei Auswahl dieses Menüpunktes können Sie an den ausgegebenen Datensätzen keine Änderungen vornehmen. Eine andere häufig benötigte Information betrifft den Aufbau – aussi die Struktur – einer Tabelle. Diese Anzeige erfolgt ähnlich in diesem Fall wählen Sie im Kontextmenü der Tabelle lediglich den Eintrag Entwerfen aus. Abbildung 4.22 zeigt die Struktur der Tabelle Employé. Auf die in dieser Abbildung dargestellten Informationen gehen wir unter anderem in Kapitel 9, »Erstellen von Tabellen«, näher ein.

Das Bearbeiten von SQL-Anweisungen dans Management Studio

Ein neues Fenster für SQL-Anweisungen öffnen Sie über die Schaltfläche Neue Abfrage oder über die rechts davon platzierte Schaltfläche Datenbankmodul-Abfrage . Bei Verwendung der zweiten Möglichkeit müssen Sie sich sofort erneut am Server authentifizieren. Mit dem Öffnen eines Abfragefensters wird eine weitere grafische Menüzeile zur Abfragebearbeitung eingeblendet (siehe Abbildung 4.23). Wie die Abbildung ebenfalls zeigt, wird im Management Studio ein Abfragefenster mit einem Reiter versehen, was die Arbeit mit mehreren geöffneten Abfragefenstern erheblich erleichtert.

Abbildung 4.23 Das Management Studio mit einem leeren Abfragefenster

SQL Server verwendet im SQL-Abfragefenster eine farbige Markierung des Programmcodes. Da wir auf die SQL-Programmierung erst in Kapitel 5, »Grundlegende Abfragetechniken«, eingehen, soll ein vorhandenes SQL-Server-Skript an dieser Stelle zur Verdeutlichung dienen. Sie laden dieses Skript in ein Abfragefenster, indem Sie das Icon Datei öffnen auswählen und in dem folgenden Dialog die unten angegebene Datei auswählen: Abbildung 4.22 Anzeige der Struktur der Tabelle »Employé«

C:ProgrammeMicrosoft SQL ServerMSSQL12.MSSQLSERVERMSSQLInstall instmsdb.sql Das Skript wird in ein weiteres Abfragefenster geladen (siehe Abbildung 4.24).

4.2 Das Bearbeiten von SQL-Anweisungen im Management Studio Hinweis Für die imersten Teil dieses Buches behandelte Serverprogrammierung unter Verwendung von SQL-Syntax sind natürlich die Möglichkeiten von Interesse, die das Management Studio dazu bietet. Diese Möglichkeiten schauen wir uns in den nächsten Abschnitten näher an.

4.2.1 Der SQL-Abfrage-Editor Zunächst soll die Voraussetzung geschaffen werden, eine Abfrage an SQL Server zu stellen. Zu diesem Zweck müssen Sie das entsprechende Editorfenster öffnen.

Dieses Skript soll lediglich der Anschauung dienen, bitte führen Sie es nicht aus!

Die farbigen Markierungen im Skript haben die folgende Bedeutung: 왘 Blau

Erkannte SQL-Schlüsselwörter werden blau markiert. Diese Kennzeichnung ist bei der Programmierung von SQL-Code hilfreich, da ein falsch geschriebenes Schlüsselwort relativ einfach dadurch identifiziert werden kann, dass es nicht blau dargestellt wird. Außerdem verrät diese Markierung in manchen Fällen mögliche

Die Oberfläche von SQL Server 2014

Abkürzungen von SQL-Schlüsselwörtern. So wird etwa während der Eingabe der SQL-Anweisung EXECUTE sowohl nach der Eingabe von EXEC als auch nach der vollständigen Eingabe of Schlüsselworts eine blaue Markierung verwendet, da EXEC als Abkürzung von wertändigen Eingabe of Schlüsselworts eine blaue Markierung verwendet, da EXEC als Abkürzung von went.

Das Bearbeiten von SQL-Anweisungen dans Management Studio

Die farbige Darstellung, die verwendete Schriftart und weitere Optionen können Sie unter dem Menüpunkt Extras • Optionen… unter dem Eintrag Schriftarten und Farben anpassen. Abbildung 4.25 zeigt den entsprechenden Dialogue.

Abbildung 4.25 Dialog zur Anpassung der Darstellung im Management Studio Abbildung 4.24 Das geladene Skript im Management Studio 왘 Rot

Zeichenketten (angl.: cordes) – aussi Aneinanderreihungen von Zeichen, bestehend aus Buchstaben, Ziffern und Sonderzeichen – werden durch eine rote Hervorhebung gekennzeichnet. Grün

Systemobjekte von SQL Server werden grün markiert. Dunkelgrün

Commentaires – également Teile eines SQL-Skripts, die nur zur Dokumentation vorhanden oder zu Testzwecken deaktiviert sind und bei der Ausführung des Programmcodes nicht berücksichtigt werden sollen – werden dunkelgrün dargestellt. 왘 Magenta

Systemfunktionen werden nun – im Gegensatz zu früheren Versionen von SQL Server – einheitlich in Magenta gekennzeichnet. Rotbraun

Die Verwendung gespeicherter Systemprozeduren wird durch eine rotbraune Färbung angezeigt. Dunkelgrau

Operatoren, die zum Beispiel mathematische oder logische Verknüpfungen herstellen, werden dunkelgrau gekennzeichnet.

Verändern Sie den Quelltext des Skripts, wird Ihnen dies im Management Studio angezeigt. Liens neben dem geänderten Programmcode wird ein gelber Balken eingeblendet, der erst dann seine Farbe in Grün ändert, wenn alle aktuellen Änderungen abgespeichert wurden. Nach der Speicherung werden danach erfolgte Änderungen wiederum gelb markiert. Zum Abspeichern eines SQL-Skripts können Sie die Schaltfläche verwenden. Während diese farbigen Markierungen als Hinweis auf geänderte Programmzeilen dienen, wird ein geänderter und noch nicht abgespeicherter Quelltext dadurch gekennzeichnet, dass dem Titel des Reiters ein Sternchen (*) angehgt Die Bearbeitung von Abfragen erfolgt im Management Studio im Wesentlichen über eine geringe Anzahl von Bedienelementen, die in der zusätzlichen Menüzeile eingeblendet werden. Die grundlegenden Bedienelemente für die Arbeit im Abfragefenster sind: 왘 Verfügbare Datenbanken

Sie können die Datenbank, an die eine Abfrage gestellt werden soll, aus dem Kombinationsfeld Verfügbare Datenbanken auswählen. In Abbildung 4.23 ist in diesem Kombinationsfeld die master-Datenbank ausgewählt, die in der Regel die Standarddatenbank von Benutzern ist. Erfahrungsgemäß ist dieser Umstand eine häufige Fehlerquelle, da bei der Définition von Abfragen oftmals übersehen wird, die entsprechende Datenbank auszuwählen.Chutes Sie bei der Arbeit mit Abfragen

Die Oberfläche von SQL Server 2014

unter SQL Server eine Fehlermeldung erhalten, die auf einen ungültigen Objektnamen hinweist, sollten Sie daher, neben der Überprüfung des Objektnamens, auch kontrollieren, ob an dieser Stelle die korrekte Datenbank isteingetrage. Ausführen

Der Quelltext eines Abfragefensters wird durch die Befehlsschaltfläche Ausführen zur Bearbeitung an den Datenbankserver gesendet. Oftmals ist es jedoch notwendig, nur einen gewissen Teil des Programmcodes an den Server zu übermitteln. Zu diesem Zweck markieren Sie den entsprechenden Programmcode mit der Maus und klicken dann auf die Schaltfläche Ausführen. Abbildung 4.26 soll meurt verdeutlichen. In diesem Beispiel wird lediglich die markierte PRINTAnweisung ausgeführt, nicht das gesamte Skript. Als Ergebnis erfolgt meurt à Abbildung 4.27 gezeigte Ausgabe.

Das Bearbeiten von SQL-Anweisungen dans Management Studio

Die eben beschriebene Möglichkeit, nur einen Teil des vorhandenen Codes auszuführen, wird häufig bei der Fehlersuche während der Entwicklung von SQL-Code angewandt. SQL Server 2014 bietet jedoch ein weitaus mächtigeres Werkzeug, den Debugger. Um den Debugger zu benutzen, müssen Sie Mitglied der Rolle »sysadmin« sein. Das folgende Beispiel soll lediglich eine kurze Einführung in die Benutzung des Debuggers darstellen, der über weitaus mehr Möglichkeiten verfügt, als hier dargestellt werden können. Für dieses Beispiel werden zunächst ein paar Zeilen SQL-Code in ein neues Abfragefenster eingetragen, wie in Abbildung 4.28 dargestellt ist.

Abbildung 4.28 Beispielcode zur Verwendung des Debuggers

Abbildung 4.26 Ausführung eines Teils des Programmcodes

Über die Schaltfläche Debuggen wechseln Sie nun in den DebugModus, dessen Oberfläche Abbildung 4.29 zeigt. Zusätzlich wurde der vorletzten Programmzeile ein Haltepunkt hinzugefügt, den Sie in Abbildung 4.29 als Kreis links neben der Programmzeile sehen. Einen Haltepunkt erzeugen Sie, indem Sie den grauen Bereich links von der entsprechenden Zeile anklicken. Im Debug-Modus wird zunächst an der ersten Programmzeile gestoppt, in Abbildung 4.29 am Pfeilsymbol links von der Zeile zu erkennen. Die Schaltfläche Nächste Anweisung anzeigen bringt die aktuelle Markierung in den sichtbaren Bereich des Abfragefensters, was bei umfangreichen Quelltexten hilfreich sein kann. Über das Icon Einzelschritt durchlaufen Sie den Programmcode zeilenweise (siehe Abbildung 4.30).

Abbildung 4.27 Ausgabe des markierten Programmcodes

Die Oberfläche von SQL Server 2014

Das Bearbeiten von SQL-Anweisungen dans Management Studio

Abbildung 4.31 Erreichen eines Haltepunkts Abbildung 4.29 Abfrage im Debug-Modus

Seit SQL Server 2014 können Sie auch Bedingungen für Haltepunkte festlegen. Ausführung der Abfrage abbrechen

Über diese Schaltfläche brechen Sie die Bearbeitung einer Abfrage ab. Dies ist zum Beispiel dann notwendig, wenn eine Abfrage unerwartet lange zur Ausführung braucht oder wenn sich ein SQL-Programm in einer Endlosschleife befindet. 왘 Analyses

Bevor eine Abfrage ausgeführt wird, können Sie eine Syntaxüberprüfung durchführen. In diesem Zusammenhang sollten Sie jedoch wissen, dass lediglich eine reine Syntaxprüfung erfolgt ein Zugriff auf die entsprechende Datenbank findet nicht statt. Daher werden zum Beispiel falsch geschriebene Tabellennamen über diese Funktion nicht erkannt sie lösen erst bei der tatsächlichen Ausführung der Abfrage einen Fehler aus. 왘 Ergebnisse en Raster

Abfrageergebnisse werden in SQL Server standardmäßig in grafischer, dem Aussehen einer Tabelle entsprechender Form ausgegeben. Diese Ausgabeart wird als Raster bezeichnet. Abbildung 4.32 zeigt einen Teil eines Abfrageergebnisses auf die Tabelle Product in der Standarddarstellung von SQL Server.

Abbildung 4.30 Einzelschritt im Debug-Modus

Über die Schaltfläche Weiter wird mit der Ausführung des Quellcodes bis zum Ende oder – Falls vorhanden – bis zum nächsten Haltepunkt fortgefahren. Dans Abbildung 4.31 stoppt die Ausführung beim Erreichen des definierten Haltepunkts. Siebeden den Debug-Modus über die Schaltfläche Debuggenbeden

Abbildung 4.32 Das Ergebnis einer Abfrage in der Rasterdarstellung

Die Oberfläche von SQL Server 2014

Wird diese Darstellungsart gewählt, erfolgt die Ausgabe von Abfrageergebnissen in Textform. Gegenüber der Darstellung im Raster, wo durch zu geringe Spaltenbreiten häufig ein Teil der dargestellten Informationen nicht direkt einzusehen ist, werden in der Textdarstellung in der Regel alle Informationen ungekürzt dargestellung die. Abbildung 4.33 zeigt das Ergebnis der in Abbildung 4.32 verwendeten Abfrage in der Textdarstellung.

Abbildung 4.33 Das Abfrageergebnis in Textdarstellung 왘 Ergebnisse in Datei

Diese Option stellt die dritte Möglichkeit der Ausgabe eines Abfrageergebnisses dar. Im Gegensatz zu den beiden bisher besprochenen Möglichkeiten erfolgt die Ausgabe nicht auf dem Bildschirm, sondern nach einem Klick auf die Schaltfläche Ausführen öffnet SQL Server den Windows-Speicherdialog. Berichtsdateien sind vom Format son Textdateien, deren Inhalt sich daher relativ einfach in viele andere Anwendungen importieren lässt, wie in Abbildung 4.34 am Beispiel von Microsoft Excel dargestellt ist.

Das Bearbeiten von SQL-Anweisungen dans Management Studio

Kommentiert die ausgewählten Textzeilen aus

Commentaires sur dienen verschiedenen Zwecken. Grundsätzlich werden Programmteile, die als Kommentar gekennzeichnet sind, während der Ausführung des Programmcodes nicht berücksichtigt, également einfach übergangen. Als Kommentare gekennzeichnete Bemerkungen können daher zur Dokumentation eines SQLSkripts verwendet werden, ohne einen Syntaxfehler auszulösen. Kommentare sind auch dann nützlich, wenn – etwa zu Testzwecken – bestimmte Passagen des Programmcodes von der Abarbeitung ausgeschlossen werden sollen. Über diese Schaltfläche können Sie die Zeile, in der sich der Cursor befindet, oder aber mehrere markierte Programmzeilen als Kommentar kennzeichnen oder, wie auch gesagt wird, auskommentieren. Auf die verschiedenen Arten von Kommentaren, die SQL Server unterstützt, gehen wir in Kapitel 5, »Grundlegende Abfragetechniken«, näher ein. 왘 Hebt die Auskommentierung der ausgewählten Textzeilen auf

Hinzugefügte Kommentarmarkierungen werden über diese Schaltfläche wieder entfernt. Einzug vergrößern

Obwohl SQL von sich aus fast keine Anforderungen an die Formatierung von Programmcode stellt, sollten Sie doch – wie auch in anderen Programmiersprachen üblich – den Quelltext durch Einrückungen strukturieren, um die Lesbarkeit zu erhöhen. Ein solcher Einzug wird schrittweise über diese Schaltfläche erzeugt beziehungsweise vergrößert. Auch bei der Verwendung dieser Schaltfläche gilt, dass es ausreicht, den Cursor in dieser Zeile zu platzieren, wenn der Einzug nur für eine Zeile gelten soll. Soll der Einzug auf mehrere Zeilen angewandt werden, müssen Sie alle betreffenden Zeilen markieren. Einzug verkleinern

Diese Schaltfläche ermöglicht die schrittweise Verkleinerung vorhandener Einzüge.

Die Ausführung einer Abfrage im SQL-Editor bewirkt, dass ein weiteres Fenster in der Oberfläche des Management Studios dargestellt wird. Dabei handelt es sich um den sogenannten Ergebnisbereich, der in Abbildung 4.35 rechts unten dargestellt ist. Abbildung 4.32 und Abbildung 4.33 sind diesem Ergebnisbereich entnommen.

Beachten Sie, dass sich ein Wechsel zwischen den drei Ausgabemodi erst bei der nächsten Ausführung einer Abfrage auswirkt.

Die im Ergebnisbereich dargestellten Informationen sind – neben anderen Faktoren – abhängig davon, ob eine Abfrage erfolgreich ausgeführt wurde oder nicht.

Abbildung 4.34 Das in Microsoft Excel importierte Abfrageergebnis

Die Oberfläche von SQL Server 2014

Das Bearbeiten von SQL-Anweisungen dans Management Studio

Abbildung 4.36 Der Reiter »Meldungen« einer erfolgreichen Abfrage

Nicht erfolgreiche Abfrageausführung Abbildung 4.35 Der Ergebnisbereich des Management Studios

Erfolgreiche Abfrageausführung Wurde eine Abfrage erfolgreich ausgeführt, werden im Ergebnisbereich standardmäßig zwei Reiter angezeigt: der Reiter Ergebnisse und der Reiter Meldungen, wie in Abbilhendung ist.35 zu In diesem Fall generiert SQL Server ein Ergebnisset, in der Programmierung auch als Recordset bezeichnet, das in der Clientanwendung, von der die Abfrage ausgelöst wurde, weiterverarbeitet werden kann. Da auch das Management Studio einen Datenbankclient darstellt, empfängt es dieses Ergebnisset und stellt es unter dem Reiter Ergebnisse dar. Wurde von einer fehlerfrei ausgeführten Abfrage kein Datensatz zurückgeliefert, resultiert dies nicht in einer Fehlermeldung – die Abfrage selbst ist ja korrekt ausgeführt worden –, sondern in einem diem sogenannten leer leer.

Tritt während der Ausführung einer Abfrage ein Fehler auf, wie Abbildung 4.37 am Beispiel eines falsch geschriebenen Tabellennamens zeigt, wird im Ergebnisbereich lediglich der Reiter Meldungen angezeentsigt, der die au zeigt. Ein Doppelklick mit der Maus auf die Fehlermeldung setzt den Cursor in die Umgebung des aufgetretenen Fehlers, was die Eingrenzung des Fehlers erleichtert. Im Abfragefenster werden Sie auf ungültige Bezeichner auch durch den in Abbildung 4.37 dargestellten gezackten Unterstrich charnièrewiesen.

Unter dem Reiter Meldungen wird – etwas vereinfacht ausgedrückt – bei einer erfolgreichen Abfrage in der Form (x Zeile(n) betroffen) die Anzahl der ausgewählten Datensätze angezeigt, wobei dashl x für die anzeträns

Abbildung 4.37 Fehlermeldung im Reiter »Meldungen«

Die Oberfläche von SQL Server 2014

Ob eine Abfrage erfolgreich oder fehlerhaft ausgeführt oder vom Anwender abgebrochen wurde, wird außerdem in der Fußzeile des Ergebnisbereichs durch die folgenden Icons und Meldungen angezeigt: 왘

: Die Abfrage wurde erfolgreich ausgeführt.

: Die Abfrage wurde mit Fehlern abgeschlossen.

: Die Abfrage wurde abgebrochen.

Da der Ergebnisbereich nicht über eine Schaltfläche zum Schließen verfügt, müssen Sie ihn – Falls notwendig – über das Hauptmenü ausblenden. Den entsprechenden Menüpunkt finden Sie unter Fenster • Ergebnisbereich ausblenden wieder anzeigen lässt sich der Ergebnisbereich entsprechend unter dem Menüpunkt Fenster • Ergebnisbereich anzeigen. Weitere Informationen zur Ausführung einer Abfrage erhalten Sie über den Aufruf des Eigenschaften-Fensters. Dieses Fenster aktivieren Sie über den Menüpunkt Ansicht • Eigenschaftenfenster. Durch Auswahl dieses Menüpunkts wird, wie Abbildung 4.38 zeigt, ein weiteres Fenster im Management Studio eingeblendet, das in diesem Fall Informationen zu der aktuellen Verbindung ausgibt, seinen Inhalt aber dynamisch dem aktuellen Kontext anpasst

Das Bearbeiten von SQL-Anweisungen dans Management Studio

4.2.3 Der Abfrage-Designer Jeder Benutzer von Microsoft Access kennt den grafischen Abfrage-Editor dieses Programms. Unter Access stellt dieser das bevorzugte Mittel zur Erstellung von Abfragen an die Jet-Engine – également die Access-Datenbank – dar. Hier wird typischerweise nur in Ausnahmefällen auf die ebenfalls mögliche Formulierung von Abfragen mit Hilfe von SQL-Syntax zurückgegriffen. Für Benutzer, die über keine oder geringe Kenntnisse in SQL verfügen, stellt eine grafische Oberfläche zur Abfrageerstellung zunächst eine gut geeignete Möglichkeit dar, einfache Abfragen an eine Datenbank. zu formulier Grafische Abfrage-Editoren stoßen jedoch schnell an ihre Grenzen, da sich bereits etwas komplexere SQL-Anweisungen nicht mehr grafisch darstellen lassen. Aus diesem Grund hat der auch in SQL Server verfügbare Abfrage-Designer nie die Bedeutung seines Pendants in Microsoft Access erhalten. Da in diesem Buch die SQL-Programmierung vermittelt werden soll, beschreiben wir im Folgenden die Verwendung des Abfrage-Designers nur kurz und beispielhaft. Die Möglichkeiten, die der Abfrage-Designer zur Erstellung von Abfragen bietet, sind von einem Anwender mit Kenntnis der zugrunde liegenden SQL-Anweisungen – die im Laufe dieses Buches vermittelt werden – schnell zu erfassen. Der Aufruf des Abfrage-Designers erfolgt aus einem geöffneten Abfragefenster, in dem die abzufragende Datenbank ausgewählt ist, über den Menüpunkt Abfrage • Abfrage in Editor entwerfen. In dem daraufhin erscheinenden und in Abbildung 4.39 dargestellten Dialog wählen Sie die an der Abfrage beteiligten Tabellen, während im Hintergrund bereits die Oberfläche des Abfrage-Designers dargestellt wird.

Abbildung 4.38 Das Eigenschaften-Fenster im Management Studio

Da, wie Abbildung 4.38 zeigt, der verfügbare Platz des Desktops durch dieses Fenster sehr stark eingeschränkt wird, sollten Sie es bei Nichtbenutzung über seine Schaltfläche Schließen wieder schließen.

Abbildung 4.39 Die Auswahl abzufragender Tabellen

Nachdem Sie alle zur Abfrage benötigten Tabellen durch die Schaltfläche Hinzufügen ausgewählt und den Auswahldialog geschlossen haben, können Sie die Abfrage in der in Abbildung 4.40 dargestellten Oberfläche des Designers bearbeiten.

Die Oberfläche von SQL Server 2014

In diesem Beispiel sollen alle Spalten der ausgewählten Tabelle ausgegeben werden, was zum Beispiel durch die Aktivierung des entsprechenden Kontrollkästchens in der Tabellendarstellung erfolgt (siehe Abbildung 4.41). Bei einem Vergleich von Abbildung 4.40 und Abbildung 4.41 werden Sie feststellen, dass der im unteren Teil dargestellte Abfragetext automatisch angepasst wurde.

SQL-Server-Dokumentation et Hilfen zur Programmierung

Abbildung 4.42). Von hier aus können Sie sie mit den bereits beschriebenen Methoden weiterbearbeiten und ausführen.

Abbildung 4.42 Die grafisch erstellte Anweisung im Abfragefenster

4.3 SQL-Server-Dokumentation und Hilfen zur Programmierung Welche Hilfen Ihnen in SQL Server 2014 zur Verfügung stehen, werden Sie in diesem Abschnitt erfahren.

Abbildung 4.40 Die Oberfläche des Abfrage-Designers nach der Tabellenauswahl

4.3.1 Die SQL-Server-Dokumentation Die SQL-Server-Dokumentation stellt als Nachfolgerin der ehemaligen Onlinedokumentation die zentrale Hilfe in SQL Server 2014 dar. Sie finden diese Dokumentation im Programmordner von SQL Server 2014 unterhalb von Dokumentation und Community. Abbildung 4.43 zeigt die SQL-Server-Dokumentation nach dem Aufruf.

Abbildung 4.41 Die Auswahl der an der Abfrage beteiligten Spalten

Verlassen Sie den Designer nun über die Schaltfläche OK, wird die erstellte Abfrageanweisung in das Abfragefenster des Management Studios übernommen (siehe

Abbildung 4.43 Die neue SQL-Server-Dokumentation

Die Oberfläche von SQL Server 2014

Im selben Ordner wie die SQL-Server-Dokumentation finden Sie außerdem die Anwendung Hilfeeinstellungen verwalten hinter der sich der Hilfebibliotheks-Manager verbirgt (siehe Abbildung 4.44) sowie das Ressourcencenter (siehe Abbildung 4.45) und aun den code source Page verweist.

SQL-Server-Dokumentation et Hilfen zur Programmierung

4.3.2 SQL-Server-IntelliSense Zu den wohl häufigsten Fehlern während der Programmierung – unabhängig von der verwendeten Sprache – gehören falsch geschriebene Bezeichner. Mit dem in SQL Server 2008 eingeführten IntelliSense können Sie das Auftreten dieser Art von Fehlern deutlich minimieren. Obwohl diese nützliche Hilfestellung – auch als Autovervollständigung bezeichnet – Benutzern der Microsoft-Windows-Entwicklungsumgebungen schon lange vertraut ist, mussten die Anwender von SQL Server bis zur der oben angegebenen version die von SQL Server war Die Anwendung von IntelliSense ist denkbar einfach, wie das folgende Beispiel zeigt. Verbunden mit der AdventureWorks2014-Datenbank wird eine Abfrage erstellt, über die die Production.Products-Tabelle abgefragt werden soll. Wie Sie in Abbildung 4.46 sehen, zeigt IntelliSense nach den ersten Buchstaben einen zutreffenden Vorschlag für den ersten Teil des Bezeichners an. Sollte der angebotene Eintrag nicht bereits richtig sein, setzen Sie entweder die Eingabe fort oder navigieren mit den Cursortasten zum entsprechenden Eintrag. Einen ausgewählten Eintrag von IntelliSense übernehmen Sie mit der (ÿ)- oder der (¢)Taste.

Abbildung 4.44 Die Anwendung »Hilfeeinstellungen verwalten«

Abbildung 4.46 Angebotener Eintrag von IntelliSense für den ersten Teil des Bezeichners

Nachdem Sie den gewünschten Eintrag Production ausgewählt haben, werden Ihnen nach Eingabe des Punktes als Trennzeichen die zugehörigen Tabellen zur Auswahl angeboten. Den in Abbildung 4.47 gezeigten Eintrag Product könnten Sie nun wie oben beschrieben übernehmen.

Abbildung 4.45 Das Ressourcencenter

Da IntelliSense in manchen Fällen nicht gewollte Ergänzungen vornimmt, können Sie durch Druck auf (Esc) die Autovervollständigung während der Eingabe einer Anweisung unterdrücken. Über das Icon IntelliSense aktiviert können Sie die Autovervollständigung dauerhaft aktivieren oder deaktivieren.

Die Oberfläche von SQL Server 2014

SQL-Server-Dokumentation et Hilfen zur Programmierung

Wollen Sie zum Beispiel einer Tabelle eine Spalte hinzufügen, erweitern Sie den Eintrag Table der Struktur und wählen die entsprechende Aktion – in diesem Fall den in Abbildung 4.49 dargestellten Eintrag Ajouter une colonne – durchlick einen Doppelk

Abbildung 4.49 Im Kontext einer Tabelle verfügbare Vorlagen Abbildung 4.47 Anzeige der auswählbaren Tabellen

4.3.3 Der Vorlagen-Explorer Eine weitere Hilfe zur Programmierung stellt im Management Studio der VorlagenExplorer dar, über den Sie das Grundgerüst einer Anweisung erzeugen, das Sie dann lediglich vervollständigen müssen. Vorlagen (auf Englisch auch als Templates bezeichnet) können Sie auch selbst erstellen und unter SQL Server verwenden. Den Vorlagen-Explorer rufen Sie über Ansicht • Vorlagen-Explorer auf, wodurch ein zusätzliches Fenster eingeblendet wird. Darin wird eine Zusammenstellung von Oberbegriffen angeboten, wie Sie in Abbildung 4.48 sehen.

Durch die Auswahl der Vorlage wird ein neues Abfragefenster geöffnet, in dem das Codefragment angezeigt wird, das in Abbildung 4.50 als typisches Beispiel für die Struktur einer Vorlage dargestellt ist.

Abbildung 4.50 Générerte Vorlage

Beim Betrachten von Abbildung 4.50 fällt die Verwendung spitzer Klammern () auf, die zur Kennzeichnung von Platzhaltern dienen und in der Abbildung in Verbindung mit den Einträgen schema_name und table_name verwendet werden.

Abbildung 4.48 Das Management Studio avec eingeblendetem Vorlagen-Explorer

Um die Parameter durch eigene Werte zu ersetzen, müssen Sie lediglich den entsprechenden Dialog über die Schaltfläche Werte für Vorlagenparameter angeben aufrufen. In dem verwendeten Beispiel öffnet sich das in Abbildung 4.51 gezeigte Fenster, in dem Sie die angebotenen Parameterwerte ersetzen können.

Die Oberfläche von SQL Server 2014

SQL-Server-Dokumentation et Hilfen zur Programmierung

So komfortabel die Verwendung von Vorlagen – vielleicht in besonderer Weise für einen in der SQL-Syntax nicht erfahrenen Benutzer – erscheinen mag, so risikoreich ist es, den angebotenen Beispielcode gedankenlos zu übernehmen.

Abbildung 4.51 In der Vorlage verwendete Paramètre

So werden durch das in Abbildung 4.52 dargestellte Ändern des Eintrags »sample_ table« in »TestTabelle« und die Änderung des Datenbanknamens in »AdventureWorks2014« alle Vorkommen dieser Platzhalter in der Vorlage an die neuen Werte, wrte angepassigt.

Wie Sie zum Beispiel Abbildung 4.53 entnehmen können, enthält die Vorlage eine DROP TABLE-Anweisung, die in SQL dazu dient, eine Tabelle zu löschen. Übernehmen Sie die im Beispiel verwendete Vorlage zum Hinzufügen einer Spalte unverändert, wird eine bestehende Tabelle zunächst gelöscht, um danach mit den Angaben der Vorlage neu erstellt zu werden. Abschließend wird der neu erstellten Tabelle eine weitere Spalte hinzugefügt, was wohl kaum der ursprünglichen Absicht – dem Hinzufügen einer Spalte zu einer bestehenden Tabelle – entsprechen dürfte. Seit SQL Server 2014 können Sie neben den vordefinierten Vorlagen auch sogenannte Codeausschnitte (engl.: snippets) verwenden. Die Verwaltung dieser Codeausschnitte rufen Sie über den Menüpunkt Extras • Codeausschnitt-Manager. auf.

4.3.4 Die Skript-Generierung

Abbildung 4.52 Geänderte Vorlagenparameter

SQL Server bietet viele Möglichkeiten zur automatischen Erstellung von Skripten. Als Beispiel betrachten wir eine Möglichkeit, die es erlaubt, Informationen darüber zu erhalten, welche Anweisungen aus einem grafischen Dialog an SQL Server gesendet würden, wenn der Dialog bestätigt würde. In vielen Fällen erhalten Sie mit dieser Vorgehensweise nützliche Informationen über verwendete gespeicherte Prozeduren oder zu anderen Details einer Abfrage. In diesem Beispiel soll der Dialog zum Löschen aus dem Kontextmenü der AdventureWorks2014-Datenbank aufgerufen werden, wie in Abbildung 4.54 dargestellt.

Abbildung 4.53 Übernahme der Parameter in das SQL-Skript

Abbildung 4.54 Dialog zum Löschen der AdventureWorks2014-Datenbank

Die Oberfläche von SQL Server 2014

SQL-Server-Dokumentation et Hilfen zur Programmierung

Bitte bestätigen Sie diesen Dialog nicht, sondern klicken Sie auf die Schaltfläche Skript . Dadurch werden Ihnen die Anweisungen in einem Abfragefenster dargestellt, die bei einem Klick auf die OK-Schaltfläche an SQL Server gesendet würden. Abbildung 4.55 zeigt die generierte Anweisung zum Löschen der AdventureWorks2014-Datenbank.

Abbildung 4.56 Das Management Studio mit eingeblendetem Lesezeichenfenster Abbildung 4.55 SQL-Anweisung des Löschen-Dialogs

Da die Anzeige des Quellcodes an vielen Stellen innerhalb von SQL Server angeboten wird, stellt sie eine gute Möglichkeit dar, sich mit den verwendeten SQL-Anweisungen vertraut zu machen.

4.3.5 Die Verwendung von Lesezeichen Eine Neuerung in SQL Server 2005 bestand in der Einführung von Lesezeichen (auf Englisch als Bookmarks bezeichnet), die eine zusätzliche Unterstützung bei der Programmierung von SQL Server darstellen. Die seitdem verwendete Technik, Abfragefenster durch Reiter anzuwählen, erleichtert die Arbeit mit unterschiedlichen Quelltexten erheblich. Bearbeiten Sie ein oder mehrere umfangreiche Quelltexte, ist es häufig notwendig, bestimmte Stellen des bearbeiteten Codes zu markieren. Zu diesem Zweck können Sie Lesezeichen nutzen. Dazu blenden Sie zunächst das Lesezeichenfenster (siehe Abbildung 4.56) über den Menüpunkt Ansicht • Lesezeichenfenster ein. Über das Lesezeichenfenster erfolgen die Verwaltung und der Zugriff auf die Lesezeichen. Sie erstellen Lesezeichen, indem Sie den Cursor im Quelltext in der Zeile positionieren, für die ein Lesezeichen angelegt werden soll, und dann die Schaltfläche Lesezeichen für die aktuelle Zeile umschalten anklicken. Die entsprechende Zeile wird daraufhin mit einem Symbole links neben dem Quelltext markiert, wie es Abbildung 4.57 zeigt.

Abbildung 4.57 Darstellung eines Lesezeichens im Quelltext und im Lesezeichenfenster

Auf dieselbe Art und Weise oder über die Schaltfläche Löschen entfernen Sie ein Lesezeichen wieder. Alternativ deaktivieren oder aktivieren Sie ein Lesezeichen über das vorangestellte Kontrollkästchen. Für alle angelegten Lesezeichen kann dies auch über die Schaltfläche Alle Lesezeichen deaktivieren erfolgen. Sie können Lesezeichen selbstverständlich auch umbenennen, um ihnen aussagekräftigere Namen zu geben.

Die Oberfläche von SQL Server 2014

Um zu einem Lesezeichen zu gelangen, führen Sie Entweder einen Doppelklick auf den entsprechenden Eintrag im Lesezeichenfenster aus, oder - tombe Eine Liste aus mehreren Lesezeichen vorliegt - Sie durchlaufen die Lesezeichen mit Hilfe der Schaltflächen Einfügemarke zum vorherigen Lesezeichen verschieben und Einfügemarke zum nächsten Lesezeichen verschieben zyklisch . Wurden Lesezeichen nach verschiedenen Kriterien erstellt, können Sie sie zu Gruppen zusammengefasst in Ordnern verwalten. Einen solchen Ordner erstellen Sie über die Schaltfläche Neuer Ordner und können ihn anschließend seinem Inhalt entsprechend umbenennen. Vorhandene Lesezeichen können Sie danach mit Drag & Drop in den entsprechenden Ordner verschieben. Abbildung 4.58 zeigt ein Beispiel dazu.

Überblick über die SQL-Server-Dienste

4.4 Überblick über die SQL-Server-Dienste SQL Server benötigt – je nach verwendeten Komponenten – verschiedene Dienste, um die benötigte Funktionalität zur Verfügung zu stellen. Einige dieser Dienste werden nach der Installation von SQL Server bei jedem Start des Betriebssystems automatisch gestartet, was bei einem in der Praxis betriebenen Datenbankserver durchaus sinnvoll ist. Bei einem SQL Server, der sich nicht in einer Produktivumgebung befindet, kann es sinnvoll sein, die Startart der Dienste zu ändern, um Ressourcen zu sparen, wenn SQL Server nicht verwendet wird. Aber auch auf einem Datenbankserver in einer Produktivumgebung ist es unter Umständen notwendig, Dienste zu aktivieren oder zu deaktivieren. Die zu SQL Server gehörigen Dienste lassen sich selbstverständlich wie alle anderen Dienste in der Windows-Systemsteuerung konfigurieren, obwohl Microsoft diese Vorgehensweise nicht empfiehlt. Einige der Dienste können ebenfalls im Management Studio beeinflusst werden. Die in Abbildung 4.59 dargestellten Dienste SQL Server und SQL Server-Agent zum Beispiel lassen sich über ihr Kontextmenü direkt aus der Oberfläche heraus steuern. Die beste Möglichkeit zur Verwaltung der SQL-Server-Dienste bietet der SQL-Server-Konfigurations-Manager. Sie finden ihn im SQL-Server-Programmordner in dem Unterordner Konfigurationstools unter dem Eintrag SQL Server 2014-Konfigurations-Manager. Nach dem Start des Konfigurations-Managers öffnet sich das in Abbildung 4.59 dargestellte Fenster, in dem die vorhandenen SQL-Server-Dienste angezeigt werden. Die vier abgebildeten Dienste haben in SQL Server die folgenden Bedeutungen: 왘 Lanceur de démon de filtre de texte intégral SQL

Durch diesen Dienst wird die Erstellung von Volltextindizes ermöglicht. Diese werden dazu verwendet, umfangreiche Texte, die in einer Datenbank hinterlegt sind, nach Schlüsselwörtern zu durchsuchen. 왘 SQL Server Abbildung 4.58 Aufteilung von Lesezeichen auf verschiedene Ordner

Mit den Schaltflächen Einfügemarke zum vorherigen Lesezeichen im aktuellen Ordner verschieben und Einfügemarke zum nächsten Lesezeichen im aktuellen Ordner verschieben navigieren Sie innerhalb der Ordner zu den einzel.nen Lesezeichen im aktuellen Dans SQL Server 2014, werden Lesezeichen gespeichert und sind beim nächsten Öffnen einer SQL-Skriptdatei wieder verfügbar.

Dieser Dienst stellt den zentralen Datenbankdienst dar. Ohne ihn wäre der Rechner nicht fähig, Datenbankabfragen entgegenzunehmen und zu bearbeiten, également également Datenbankserver zu fongieren. Dieser Dienst wird nach der Installation von SQL Server standardmäßig bei jedem Start des Rechners ausgeführt. 왘 SQL Server-Navigateur

Der SQL-Server-Browser-Dienst dient dazu, einem Client zu ermöglichen, Eigenschaften der Verbindung abzufragen. Donc stellt der SQL-Server-Browser zum Beispiel bei Benannten Instanzen dem Client Informationen darüber zur Verfügung, unter welchem ​​Port eine spezifische Instanz angesprochen werden kann. 왘 SQL Server-Agent

Der SQL-Server-Agent-Dienst dient dazu, wiederkehrende Aufgaben innerhalb des

Die Oberfläche von SQL Server 2014

Serveurs zu verwalten. Typischerweise wird dieser Dienst dazu verwendet, Datenbanksicherungen oder Wartungsaufgaben zu verwalten und sie auszulösen.

Das Dienstprogramm »sqlcmd«

inhalts, wie wir weiter oben in diesem Kapitel am Beispiel des SQL Server Management Studios als grafische Oberfläche bereits gezeigt haben.

Abbildung 4.59 Auflistung der Dienste im Konfigurations-Manager

Die Bezeichnungen dieser vier Dienste entsprechen weitgehend den in der WindowsSystemsteuerung verwendeten Bezeichnungen, was ein Auffinden der Dienste vereinfacht. Über das Kontextmenü eines jeden Dienstes können Sie diesen starten, beenden, anhalten, fortsetzen und neu starten. Durch den Aufruf der Eigenschaften eines Dienstes können Sie ihn im Konfigurations-Manager konfigurieren.

Abbildung 4.60 Die verfügbaren Parameter von »sqlcmd«

4.5 Das Dienstprogramm »sqlcmd«

Um eine Abfrage unter sqlcmd auszuführen, ist zunächst eine erfolgreiche Anmeldung an den Datenbankserver notwendig. Ohne Angabe von Parametern geht sqlcmd von einer vertrauten Verbindung am lokalen Server aus. Genau das soll in diesem Beispiel erfolgen, weshalb wir sqlcmd ohne Angabe von Parametern aufrufen können, wie in Abbildung 4.61 dargestellt.

Es ist keine grafische Oberfläche wie das Management Studio erforderlich, um eine Verbindung zu SQL Server herzustellen. SQL Server können Sie auch über Dienstprogramme von der Kommandozeile aus ansprechen. Die dazu verwendeten Programme hießen in früheren Versionen von SQL Server isql beziehungsweise osql seit SQL Server 2005 lautet die Bezeichnung der Befehlszeilenanwendung sqlcmd. Um sich mit den Möglichkeiten dieses Programms vertraut zu machen, können Sie es über die Eingabeufforderung unter Angabe des Parameters -? zur Anzeige der Hilfe aufrufen. Dieser in Abbildung 4.60 dargestellte Aufruf liefert eine List der Parameter zurück, die zusammen mit sqlcmd verwendet werden können. Wie Sie sehen, wird bei der Angabe von Parametern zwischen Groß- und Kleinschreibung unterschieden.

Abbildung 4.61 Erfolgreiche Verbindungsaufnahme zum Datenbankserver

Im Folgenden bauen wir als Beispiel mit sqlcmd eine Verbindung zu SQL Server auf, wählen eine Datenbank aus und setzen eine Abfrage auf eine Tabelle innerhalb der Datenbank ab. Die in diesem Beispiel verwendeten Abfragebefehle werden wir erst im weiteren Verlauf behandeln und erläutern. Als Vorgriff darauf sei erwähnt, dass die verwendeten Anweisungen die Datenbank AdventureWorks2014 auswählen und den Inhalt der Tabelle Produit abfragen. Dies entspicht der Anzeige eines Tabellen-

Das Erscheinungsbild von sqlcmd ändert sich nun dahingehend, dass wie in der Abbildung eine Zeilennummer am Beginn jeder Zeile eingeblendet wird. Um die Beispieldatenbank AdventureWorks2014 auszuwählen, wird die folgende Anweisung verwendet, wie Abbildung 4.62 zeigt:

Abbildung 4.62 Auswahl der Beispieldatenbank AdventureWorks2014

Die Oberfläche von SQL Server 2014

Um den Inhalt der Product-Tabelle auszugeben, müssen Sie nun noch die folgende Anweisung an SQL Server stellen: SELECT * FROM Production.Product

In der Oberfläche von sqlcmd ergibt sich daher die in Abbildung 4.63 dargestellte Anweisungsfolge.

Intégration SQL-Server dans Windows PowerShell

Sicherlich entspricht die Ausgabe der Abfrage nicht den heutigen Standards, était moderne Programmierumgebungen angeht. Dieses Beispiel sollte Ihnen lediglich zeigen, dass es auch mit minimalen Mitteln und ohne grafische Oberfläche möglich ist, auf SQL Server zuzugreifen. Sie beenden sqlcmd durch die Eingabe von exit oder quit.

4.6 SQL-Server-Integration in die Windows PowerShell Abbildung 4.63 Die Oberfläche von »sqlcmd« mit der Anweisung zur Abfrage der »Product«-Tabelle

Die Ausführung der Anweisungen wird über die Eingabe von GO gestartet, wie in Abbildung 4.64 zu sehen ist. Durch die Eingabe der GO-Anweisung und einen Druck auf die (¢)-Taste werden die betreffenden Codezeilen an SQL Server übermittelt, was innerhalb von sqlcmd auch dadurch angezeigt wird, dass nach nach dem durch GO dieenummer derweiger der Sender Server Zeilen wieder bei der Zeilennummer 1 début.

Die Windows PowerShell stellt eine Umgebung zur Skripterstellung dar, in der Ihnen eine objektorientierte, auf dem .NET Framework basierende Skriptsprache zur Verfügung steht. Mit der PowerShell-Skriptsprache verfügen Sie über weitaus komplexere Möglichkeiten als bei der Verwendung anderer Skriptsprachen. Die Windows PowerShell ist Bestandteil aller aktuellen Windows-Versionen, sie wird von Microsoft aber auch zum freien Download angeboten. Dadurch erhalten Administratoren zum Beispiel die Möglichkeit, Wartungsskripte für eine Vielzahl von Rechnern mit Hilfe einer einzigen Skriptsprache zu erstellen. Die Verwendung der PowerShell-Skriptsprache ist auf diversen Microsoft-Seiten dokumentiert, für erfahrene Visual-StudioBenutzer mag die PowerShell-Schnellreferenz für einen unkomplizierten Einstieg in die Skriptsprache ausreichend seinung (66).

Abbildung 4.64 Das Starten des Abfragestapels durch das »GO«-Kommando

Als Ergebnis wird der Inhalt der Product-Tabelle zurückgegeben (Abbildung 4.65).

Abbildung 4.66 PowerShell-Schnellreferenz (Auszug) Abbildung 4.65 Das Abfrageergebnis in unformatierter Darstellung

Die Oberfläche von SQL Server 2014

Diese kurz gefasste Referenz können Sie sich aus dem Microsoft Download Center von der Seite Windows PowerShell Quick Reference (http://www.microsoft.com/en-us/ download/details.aspx ?id=7097) Herunterladen.

Intégration SQL-Server dans Windows PowerShell

4.6.2 Aufruf der PowerShell avec SQL-Server-Integration Pour la Verwendung der Windows PowerShell avec SQL Server Stehen Ihnen verschiedene Möglichkeiten zur Verfügung. Zwei besonders komfortable Möglichkeiten besprechen wir im Folgenden.

4.6.1 Allgemeiner Aufruf der PowerShell Um die Windows PowerShell aufzurufen, wechseln Sie zunächst in den PowerShellProgrammordner. Die Position dieses Programmordners ist von der installierten PowerShell-Version abhängig. Pour Windows PowerShell 1.0 trouvé sie den entsprechenden Ordner im Programm-Hauptverzeichnis, for die Versionen 2.0 et 3.0 im Ordner Zubehör. Unabhängig von der installierten Version finden Sie in dem jeweiligen Verzeichnis den Eintrag zum Start der in Abbildung 4.67 gezeigten PowerShellOberfläche.

Das Dienstprogramm »sqlps« Um mit der Windows PowerShell auf SQL Server zuzugreifen, können Sie das Dienstprogramm sqlps verwenden. Dabei handelt es sich um eine speziell für die Verwendung mit SQL Server angepasste PowerShell-Oberfläche. An der Eingabeaufforderung können Sie das Programm aus jedem beliebigen Verzeichnis heraus aufrufen, da ein Pfad auf den Speicherort gesetzt ist. Abbildung 4.69 zeigt die Oberfläche von sqlps.

Abbildung 4.67 Die PowerShell-Oberfläche

Ist PowerShell mindestens in der Version 2.0 vorhanden, finden Sie in dem Programmordner einen weiteren, mit Windows PowerShell ISE bezeichneten Eintrag vor. Die PowerShell ISE (Integrated Scripting Environment) stellt eine grafische Oberfläche zur Verfügung, die über mehr Funktionen als die nicht-grafische Oberfläche verfügt und damit ein komfortableres Arbeiten mit der PowerShell-Skriptspra. Die Oberfläche der PowerShell ISE sehen Sie in Abbildung 4.68.

Abbildung 4.69 Start von »sqlps« an der Eingabeufforderung

Aufruf der PowerShell aus dem Management Studio Bei geöffnetem Management Studio steht Ihnen eine weitere Möglichkeit zur Verfügung, die PowerShell mit geladenen SQL-Server-Erweiterungen aufzurufen. Wählen Sie dazu für einen geeigneten Knotenpunkt im Objekt-Explorer aus dem Kontextmenü den Eintrag PowerShell starten aus. Abbildung 4.70 zeigt die auf diese Weise für den Knoten Datenbanken geöffnete PowerShell-Oberfläche.

Abbildung 4.70 Aufruf der PowerShell für den Datenbankknoten

Abbildung 4.68 Die grafische Oberfläche der PowerShell ISE

Welche der drei beschriebenen Möglichkeiten zum Aufruf der PowerShell mit SQLServer-Unterstützung für Ihre Zwecke am besten geeignet ist, hängt von verschiedenen Faktoren ab. Donc liefert die erste Variante – aussi die Windows PowerShell mit registrierten SQL-Server-Erweiterungen – typischerweise viel mehr Detailinformationen als die anderen beiden Möglichkeiten zurück, was die Ausgabe für das menschliche Auge häufig unübersichtlich macht. Die PowerShell ISE charnière bietet in Kombination mit der grafischen Oberfläche weitaus mehr Komfort bei der Erstellung von Skripten, zum Beispiel durch die Möglichkeit, Haltepunkte zum Debuggen zu

Die Oberfläche von SQL Server 2014

verwenden. Während der Arbeit mit dem Management Studio ist die Möglichkeit of Aufrufs der PowerShell aus der Programmumgebung heraus besonders praktisch. Auch die folgenden Abbildungen wurden auf diese Weise erstellt – wenn Sie einen anderen Aufruf verwenden, kann die Darstellung daher von den gedruckten Abbildungen abweichen.

Intégration SQL-Server dans Windows PowerShell

Die Verzeichnisstruktur des gesamten SQLSERVER-Laufwerks ist recht umfangreich, für den Zugriff auf die Datenbankebene von SQL Server ergibt sich jedoch ein relativ einfacher Pfad, wie er bereits in Abbildung 4.70 am Beispiel des Aufrhas Management Studio Die Pfadangabe hat dabei die folgende Forme : SQLSERVER:SQL echnernameinstanznameDatabases

4.6.3 Zugriff auf SQL Server avec Windows PowerShell Die Windows PowerShell stellt verschiedene Bereiche eines Windows-Rechners in einer an das Dateisystem angelehnten Form zur Verfügung.Wegen dieser Analogie werden diese Bereiche auch als Laufwerke bezeichnet. Einen Überblick über die zur Verfügung stehenden Laufwerke erhalten Sie über die Anweisung Get-PSDrive. Abbildung 4.71 zeigt eine mögliche Ausgabe dieses Befehls.

Abbildung 4.72 Anwendbare Befehle für ein SQLSERVER-Laufwerk

Der Rechnername lautet in dem in Abbildung 4.70 gezeigten Beispiel SQLCLIENT, die Angabe von DEFAULT als Instanzname verweist auf die SQL-Server-Standardinstanz. Da der aktuelle Pfad auf den Datenbankknoten verweist, können Sie sich nun – zum Beispiel durch Eingabe von dir – den Ordnerinhalt und damit eine Auflistung der vorhandenen benutzerdefinierten Datenbanken anzeheigen lassen ( In diesem Fall ist die einzig bislang vorhandene benutzerdefinierte Datenbank die AdventureWorks2014-Datenbank.

Abbildung 4.71 Mögliche Ausgabe von »Get-PSDrive«

Wie Sie Abbildung 4.71 entnehmen können, werden neben den vorhandenen physischen Laufwerken unter anderem auch Teile der Registry (HKCU, HKLM), Zertifikate bzw. Zertifikatspeicher (cert) und eben auch SQL Server (SQLSERVER) als Laufwerke dargestellt. Falls Sie auf das Laufwerk SQLSERVER nicht zugreifen können, überprüfen Sie, ob der SQL-Server-Dienst gestartet wurde und ob Sie die PowerShell mit installierten SQL-Server-Erweiterungen gestartet haben. Mit Hilfe der in Abbildung 4.72 dargestellten Anweisungen sowie der ebenfalls dargestellten Abkürzungen (Aliasse) können Sie durch die Struktur des SQLSERVER-Laufwerks navigieren und weitere Aktionen wie zum Beispien das Umbenennek. Wie Sie bei einem Vergleich mit Abbildung 4.72 feststellen werden, stimmen viele der dargestellten Aliasse mit den Anweisungen überein, die Sie von der Arbeit am Dateisystem gewohnt sind. So können Sie zum Beispiel mit der cd-Anweisung das aktuelle Verzeichnis wechseln und so die Struktur des SQLSERVER-Laufwerks durchlaufen.

Abbildung 4.73 Auflistung der benutzerdefinierten Datenbanken

Wie wir oben bereits erwähnt haben, können Sie mit Hilfe der Laufwerksbefehle die Laufwerksinhalte ändern. So zeigt das folgende Beispiel die Möglichkeiten, mit Hilfe der ren-Anweisung die Datenbank AdventureWorks2014 in AW umzubenennen.

Hinweis Bitte führen Sie dieses Beispiel nicht aus, oder benennen Sie die Datenbank danach wieder mit ihrem ursprünglichen Namen.

Die Oberfläche von SQL Server 2014

Intégration SQL-Server dans Windows PowerShell

Den Wechsel von Verzeichnissen können Sie ebenso, wie Sie es vom Dateisystem her gewohnt sind, mit dem cd-Befehl vornehmen. Mit der folgenden Anweisung wechseln Sie so von der Datenbankebene in den Ordner Tables der AdventureWorks2014Datenbank.

Ein erneuter Aufruf von dir liefert nun aber nicht, wie man vermuten könnte, den Tabelleninhalt – also die Datensätze – zurück, sondern eine Auflistung der mit der Tabelle verbundenen Objekttypen, wie Abbildung 4.75 zeigt.

Beispiel : cd AdventureWorks2014Tables

Auch hier bewirkt der Befehl dir die Ausgabe des Verzeichnisinhalts, in diesem Falle also der Tabellen innerhalb der AdventureWorks2014-Datenbank, wie der in Abbildung 4.74 dargestellte Ausschnitt zeigt.

Abbildung 4.75 Der Inhalt des Ordners der Tabelle »Production.Produit«

Da kein entsprechender Laufwerksbefehl zum Anzeigen eines Tabelleninhalts existiert, müssen Sie zu diesem Zweck ein sogenanntes SQL-Server-Cmdlet verwenden.

4.6.4 Die SQL-Server-Cmdlets Für die Ausführung von SQL-Anweisungen – wie die Abfrage eines Tabelleninhalts – aus der PowerShell verwenden Sie das Cmdlet Invoke-Sqlcmd, das wir an dieser Stelle beispielhaft für diespezchens SQL- Im einfachsten Fall rufen Sie das Cmdlet unter Angabe der auszuführenden SQL-Anweisung auf, die Sie in Anführungszeichen setzen.

Syntaxe : Invoke-Sqlcmd "sql-anweisung"

Mit dem folgenden Beispiel fragen Sie den Inhalt der Tabelle Production.Produit ab. Abbildung 4.74 Ausschnitt der in der Datenbank vorhandenen Tabellen

Mit dem folgenden Beispiel können Sie sogar noch eine Ebene tiefer, nämlich in den Ordner der Tabelle Production.Product, wechseln.

Beispiel : Invoke-Sqlcmd "SELECT * FROM Production.Product"

Einen von dieser Abfrage zurückgegebenen Datensatz sehen Sie in Abbildung 4.76.

Die Oberfläche von SQL Server 2014

Prozentsatz der Prozessorzeit, die von SQL Server beansprucht wurde 왘 Wartende Tasks

Anzahl der Tasks, die auf Ressourcen warten 왘 Datenbank-E/A

Menge der übertragenen Daten (MB/Sek.) zwischen Arbeitsspeicher und Laufwerken (in beiden Richtungen) sowie zwischen Laufwerken selbst. E/A steht dabei für »Eingabe/Ausgabe«. Batchanforderungen/Sekunde

Anzahl der pro Sekunde eingegangenen Lots (Abfragestapel) Unterhalb der grafischen Anzeigen können Sie sich durch Aufklappen der entsprechenden Felder Informationen zu den folgenden Bereichen anzeigen lassen: 왘 Prozesse

Abbildung 4.76 Ein im Abfrageergebnis enthaltener Datensatz

4.7 Der SQL-Server-Aktivitätsmonitor Der Aktivitätsmonitor stellt Ihnen einen umfangreichen Überblick über die aktuellen Aktivitäten in SQL Server zur Verfügung. Sie starten den Aktivitätsmonitor über die Schaltfläche Aktivitätsmonitor oder durch Auswahl des Eintrags Aktivitätsmonitor aus dem Kontextmenü des Serversymbols im Objekt-Explorer. Die Oberfläche des Aktivitätsmonitors nach dem Öffnen zeigt Abbildung 4.77.

Hier finden Sie eine Auflistung der externen Verbindungen, die momentan zu SQL Server hergestellt sind. Jeder Verbindung zu SQL Server wird eine Sitzungs-ID (anglais: System Process ID, abgekürzt SPI) zugewiesen. Externen Verbindungen – également Verbindungen, die nicht von SQL Server selbst hergestellt wurden – wird eine SPI größer 50 zugewiesen. Durch Aufruf des Kontextmenüs einer Verbindung und Auswahl von Details können Sie sich den letzten von dieser Verbindung empfangenen SQL-Befehlsbatch anzeigen lassen (siehe Abbildung 4.78).

Abbildung 4.78 Détails einer Verbindung zu SQL Server

Über die weiteren Einträge des Kontextmenüs können Sie eine Verbindung zu SQL Server trennen und eine Profiler-Ablaufverfolgung (siehe Kapitel 23, »Indizes«) für diese Verbindung starten. 왘 Ressourcenwartevorgänge Abbildung 4.77 Der SQL-Server-Aktivitätsmonitor

Ganz oben in der Oberfläche des Aktivitätsmonitors sehen Sie unter der Überschrift Übersicht vier grafische Anzeigen, in denen der zeitliche Verlauf der folgenden Indikatoren angezeigt wird :

In diesem Bereich werden Ihnen Informationen über die Wartezeit und -häufigkeit angezeigt, die bei verschiedenen leistungsrelevanten Komponenten aufgetreten sind. Zu diesen Komponenten gehören sowohl SQL-Server-interne – wie zum Beispiel Sperren (siehe Kapitel 25, »Transaktionen«) – als auch hardwarebezogene, wie der Netzwerkdurchsatz. Die in diesem Bereich dargestellten Informationen können Ihnen bei Problemen mit der Leistung von SQL Server einen ersten Anhaltspunkt über eventuelle Schwachpunkte der vorhandenen Installation liefern.

Die Oberfläche von SQL Server 2014

Die hier dargestellten Informationen beziehen sich auf die Schreib- und Lesezugriffe auf die Datenbankdateien der auf dem Server vorhandenen Datenbanken. Dazu zählen die Schreib- und Leserate (en MB/Sek.) sowie die Antwortzeit der jeweiligen Datei. 왘 Aktuelle Ressourcenintensive Abfragen

Die hier dargestellten Informationen können Sie verwenden, um die Abfragen zu identifizieren, die die meisten Ressourcen verbrauchen. Zu den dargestellten Informationen zählen unter anderem die CPU-Auslastung sowie Schreib- und Lesevorgänge.

4.8 Berichte Neben dem Aktivitätsmonitor steht Ihnen im Management Studio eine weitere Möglichkeit zur Verfügung, einen schnellen Überblick über aktuelle Vorgänge und Eigenschaften einer Datenbank zu erhalten. Dabei handelt es sich um die Standardberichte, die Sie aus dem Kontextmenü einer Datenbank aufrufen können, indem Sie Berichte und danach Standardberichte auswählen. Abbildung 4.79 zeigt als Beispiel den Bericht zur Datenträgerverwendung der AdventureWorks2014-Datenbank.

Abbildung 4.79 Bericht über die Datenträgerverwendung der Beispieldatenbank

Sie können sich Berichte auf ähnliche Weise auch für Informationen auf Serverebene ausgeben lassen. Rufen Sie dazu im Objekt-Explorer das Kontextmenü des Servereintrags aus, und wählen Sie dann zuerst Berichte und anschließend Standardberichte aus.

Kapitel 6 Grundlagen der SQL-Programmierung In diesem Kapitel besprechen wir die Grundlagen der SQL-Programmierung, die als Voraussetzung für die in späteren Kapiteln behandelten Themen notwendig sind.

Die Abfragesprache SQL stellt nicht nur, wie der Name vermuten lässt, Befehle zur Abfrage von Datenbanken zur Verfügung, sondern ermöglicht auch die Erstellung von SQL-Programmen. Der Sprachumfang mag – im Vergleich zu anderen modernen Programmiersprachen – relativ gering sein, er ist aber ausreichend, um alle in der Datenbankprogrammierung auftretenden Aufgaben zu lösen.

6.1 Das Stapeltrennzeichen GO Das sogenannte Stapeltrennzeichen GO ist eine Anweisung, die in SQL-Skripten häufig Verwendung findet. Dans Abbildung 6.1 ist es am Beispiel eines SQL-Skripts dargestellt.

Abbildung 6.1 Verwendung des Stapeltrennzeichens GO

Das Stapeltrennzeichen, das auch Batch-Trennzeichen (anglais: batch Stapel, Bündel) genannt wird, stellt keine SQL-Anweisung dar. Tatsächlich steht die Anweisung GO in keinem direkten Zusammenhang mit dem Datenbankserver, sondern ist ein

Grundlagen der SQL-Programmierung

Éditeur-Befehl, d. h. eine Steueranweisung, die eine Folge von SQL-Anweisungen in mehrere Abschnitte unterteilt, die dann einzeln zum Server gesendet werden. Ein solcher Abschnitt wird als Stapel oder Batch bezeichnet. Die folgenden beiden Abfragen werden aussi als ein Stapel an den Server gesendet :

Beispiel: SELECT * FROM Production.Product SELECT * FROM Purchasing.Vendor

Durch Einfügen einer GO-Anweisung werden diese Anweisungen in zwei Stapel aufgeteilt und dem Server getrennt übermittelt:

Beispiel: SELECT * FROM Production.Product GO SELECT * FROM Purchasing.Vendor

Zum Vergleich: Der gleiche Effekt hätte ohne die Verwendung von GO erzielt werden können, indem man die Abfragen durch Markierung mit der Maus getrennt ausgeführt hätte. Auch in diesem Fall wären zwei Stapel an den Server gesendet worden. Sie werden, tombe Sie die beiden Beispiele ausprobiert haben, keinerlei Unterschiede in der Ausgabe festgestellt haben. Beide Ergebnisse sind vollkommen identisch, was die Frage aufkommen lässt, zu welchem ​​Zweck GO verwendet werden kann, wenn keine unmittelbare Auswirkung dieser Anweisung festzustellen ist. Es gibt jedoch Fälle, in denen GO zwingend Verwendung finden muss. Ein typisches Beispiel stellt ein automatisch ablaufendes Skript dar. Ein solches Skript kann Befehle enthalten, die nur dann ausgeführt werden können, wenn sie die erste Anweisung eines Stapels sind. Um die Aufteilung eines solchen Skripts in mehrere Dateien, die dann einzeln ausgeführt werden müssten, zu vermeiden, wird innerhalb des Skripts vor den entsprechenden Befehlen ein neuer Stapel durch die Angabeun von GO . Da es sich bei dem Stapeltrennzeichen nicht um eine SQL-Anweisung handelt, können Sie auch einen anderen Ausdruck anstelle von GO als Stapeltrennzeichen definieren. Das entsprechende Dialogfeld ist in Abbildung 6.2 abgebildet. Sie finden es unter Extras • Optionen. unter dem Eintrag Abfrageausführung.

Abbildung 6.2 Möglichkeit der Trennzeichendfinition

6.2 (Lokale) Variablen Wie andere Programmiersprachen auch bietet SQL die Möglichkeit, Variablen zu verwenden. Eine Variable stellt einen Zwischenspeicher dar, in dem ein veränderlicher Wert abgespeichert und später wieder ausgelesen werden kann.

6.2.1 Variablendeklaration Bei der Verwendung von Variablen unter SQL Server gibt es eine Besonderheit zu beachten, was die Variablennamen betrifft: Diese müssen mit dem @-Zeichen beginnen! Außerdem muss eine Variable, bevor sie verwendet werden kann, über die DECLARE-Anweisung deklariert werden :

Syntaxe : DECLARE nom_variable datentyp

Beispiel : DÉCLARER @zahl entier

Die Deklaration einer Variablen – aussi die Zuweisung eines Datentyps – ist notwendig, da der Datenbankserver für die Verwendung einer Variablen Speicherplatz und

Grundlagen der SQL-Programmierung

andere Ressourcen reservieren muss, weil die verschiedene Datentypen einen unterschiedlichen Speicherbedarf und Verwaltungsaufwand erfordern. Die Auswahl des Datentyps hängt dabei von der zu speichernden Information ab. Mehrere Variablen in einer einzigen DECLARE-Anweisung erstellen Sie, indem Sie die Deklarationen in einer Liste, durch Kommas getrennt, angeben:

Hinweis Wird einer Variablen nach der Deklaration kein Wert mittels SET zugewiesen, enthält diese Variable keinen Wert, également NULL!

Die Nichtbeachtung dieser Tatsache resultiert schnell in Programmierfehlern, wie das folgende Beispiel zeigt:

DECLARE @zahl entier FIXER @zahl = @zahl + 42 SELECT @zahl

DÉCLARER @zahl entier, @text varchar(20)

Die Wertezuweisung an eine Variable erfolgt über die SET-Anweisung.

Als Ausgabe erfolgt NULL, da zu einer nichtinitialisierten Variablen – également einem NULLWert – eine Zahl addiert wird. Da NULL aber nicht der Zahl 0 entspricht, sondern einen nicht vorhandenen Wert repräsentiert, ist das Ergebnis ebenfalls NULL.

6.2.3 Kombinierte Deklaration und Wertezuweisung

6.2.2 Wertezuweisung an eine Variable

Beispiel : DECLARE @zahl integer, @text varchar(20) SET @zahl = 42 SET @text = 'zweiundvierzig'

Obwohl es möglich ist, mehrere Variablen innerhalb einer DECLARE-Anweisung zu erstellen, erlaubt die SET-Anweisung nicht die Wertezuweisung an mehrere Variablen. Das heißt, Sie müssen für jede Zuweisung eines Werts an eine Variable eine gesonderte SET-Anweisung verwenden. Ebenso wenig ist es zulässig – wie in anderen Programmiersprachen teilweise möglich –, eine Variable im Zuge der Deklaration mit einem Wert vorzubelegen. Die erste Wertezuweisung an eine neu erstellte Variable – auch als Initialisierung bezeichnet – muss in SQL in einer gesonderten SETAnweisung erfolgen. Sie sollten es sich zur Regel machen, eine neu erstellte Variable immer zu initialisieren, es sei denn, Sie sind sich sicher, dass die Variable im späteren Programmablauf einen definierten Wert zugewiesen bekommt. Chutes Sie mit nichtinitialisierten Variablen arbeiten, sollten Sie sich immer der folgenden Tatsache bewusst sein:

Mit SQL Server 2008 wurde die Möglichkeit eingeführt, Variablen in einer einzelnen Anweisung zu deklarieren und zu initialisieren. Dies geschieht in der folgenden Forme :

Syntaxe : DECLARE nom_variable datentyp = wert

Das folgende Beispiel zeigt die Deklaration und Initialisierung einer einzelnen Variablen:

Beispiel : DÉCLARER @zahl entier = 42

Es lassen sich ebenfalls mehrere Variablen innerhalb einer Anweisung deklarieren und initialisieren, indem Sie die einzelnen Variablen durch Kommas trennen:

Syntaxe : DECLARE nom_variable datentyp = wert, nom_variable datentyp = wert

Das folgende Beispiel zeigt die kombinierte Deklaration und Initialisierung zweier Variablen.

Grundlagen der SQL-Programmierung

6.2.5 Gültigkeitsbereich von Variablen

DÉCLARER @zahl entier = 42, @text varchar(20) = 'zweiundvierzig'

Eine Variable stellt kein dauerhaftes Datenbankobjekt dar – wie zum Beispiel eine Tabelle –, im Gegenteil: Variablen werden zu einem bestimmten Zweck erstellt, verwendet und danach automatisch gelöscht. Es ist aussi nicht notwendig (und auch nicht möglich), eine Variable manuell zu löschen. Es stellt sich aussi die Frage, was der Gültigkeitsbereich einer Variablen – der manchmal auch etwas lax als »Lebensdauer« einer Variablen bezeichnet wird – ist, bis zu welchem ​​Punkt sie aussi nach ihrer Deklaration zu verwenden ist. Diese Frage ist eindeutig zu beantworten:

Um Lesern, die eine ältere Version von SQL Server verwenden, ein Umschreiben der Beispiele zu ersparen, verwenden wir im weiteren Verlauf des Buches die klassische Syntax.

6.2.4 Inkrement und Dekrement Mit SQL Server 2008 wurden zwei neue Operatoren eingeführt, um einen Wert zu erhöhen (Inkrement) beziehungsweise zu verringern (Dekrement). Gerade Variablen müssen häufig (z. B. beim Durchlaufen einer Schleife) im Wert erhöht oder verringert werden. Bisher war die Bildung des Inkrements und Dekrements in SQL Server nur in den nachfolgend am Beispiel einer Variablen gezeigten Formen möglich, die nicht mehr dem Stand moderner Programmiersprachen entsprachen:

Unter Verwendung der neuen Operatoren += und -= kann diese Zuweisung eleganter erfolgen. Für das Inkrement gilt die folgende Syntaxe :

Für die Bildung des Dekrements entsprechend die nachstehende Syntaxe.

Das oben angegebene Beispiel hat unter Verwendung dieser Operatoren das folgende Aussehen:

Beispiel : DECLARE @int entier SET @int=42 SET @int+=1 SET @int-=1

Hinweis Der Gültigkeitsbereich einer Variablen ist der Stapel, in dem sie deklariert wurde!

Um diesen Umstand zu demonstrieren, sollen zunächst in einem Stapel eine Variablendeklaration, eine Wertzuweisung an die Variable und anschließend die Ausgabe des Variablenwerts erfolgen:

Beispiel: DECLARE @zahl entier SET @zahl = 42 SELECT @zahl

Als Ergebnis wird – wie erwartet – die Zahl »42« ausgegeben. Nun wird dem Code eine zweite SELECT-Anweisung zur Ausgabe des Variablenwerts hinzugefügt, die durch das Stapeltrennzeichen GO abgetrennt wird:

Beispiel: DECLARE @zahl entier SET @zahl = 42 SELECT @zahl GO SELECT @zahl

Als Ergebnis der ersten Abfrage wird zwar weiterhin der Wert »42« ausgegeben, im Reiter Meldungen erfolgt jedoch die folgende Ausgabe: (1 Zeile(n) betroffen) Meldung 137, Ebene 15, Status 2, Zeile 1 Die "@larvariable" muss deklariert werden.

Die Variable @zahl ist also mit Beendigung des Stapels durch GO gelöscht worden und somit im zweiten Stapel nicht mehr bekannt!

Grundlagen der SQL-Programmierung

6.2.6 Verwendung von Variablen Variablen können Sie fast überall dort einsetzen, wo eine feste, ihrem Datentyp entsprechende Angabe ebenfalls zulässig wäre. Innerhalb einer SELECT-Anweisung können Sie eine Variable zum Beispiel als Argument innerhalb der WHERE-Klausel verwenden:

Beispiel: Declare @Number nvarchar(25) SET @Number = 'AR-5381' SELECT * FROM Production.Product WHERE ProductNumber = @Number

6.2.7 Variables locales et globales dans SQL Server In der Überschrift dieses Abschnitts haben wir die bisher besprochene Variablenart als lokale Variable bezeichnet, daneben existiert aber auch die Bezeichnung globale Variable. Diese Bezeichnungen sind etwas irreführend, gerade da in anderen Programmiersprachen die Begriffe »lokal« und »global« eine andere Bedeutung besitzen als in SQL, wo sich diese Begriffe auf die Verbindung zum Server beziehen.Wenn zum Beispiel eine Variable in einer Verbindung zum Server deklariert wird, ist diese Variable für alle anderen Verbindungen unsichtbar. Aus ihnen heraus kann diese Variable weder angesprochen noch ausgelesen werden, sie existiert nur für die Verbindung, in der sie definiert wurde. Es handelt sich daher um eine lokale Variable. Als global Variablen werden in SQL keine Variablen im oben beschriebenen, herkömmlichen Sinne bezeichnet, sondern Funktionen. Auch diese können verschiedene Werte annehmen und zurückgeben. Die Namen vieler Funktionen beginnen daher – in Anlehnung an die Benennung einer lokalen Variablen – mit zwei @-Zeichen, wie Sie Abschnitt 6.5 sehen werden. Funktionen können von jeder Verbindung aus aufgerufen und abgefragt werden. Daher werden sie auch als global Variablen bezeichnet, obwohl ihnen kein Wert zugewiesen werden kann, es sich also nicht um Variablen im herkömmlichen Sinn handelt.

tet, dass eine Wertzuweisung mit einer SELECT-Anweisung kombiniert werden muss, wozu in SQL zwei verschiedene Möglichkeiten existieren.

Wertezuweisung mit SET und Abfrage Die erste Möglichkeit, den aus einer Abfrage ermittelten Wert einer Variablen zuzuweisen, orientiert sich an der bekannten

Syntaxe : SET nom_variable = (abfrage)

Bei Verwendung dieser Methode der Wertzuweisung ist zu beachten, dass die Abfrage so definiert sein muss, dass sie als Ergebnis nur einen einzigen Wert zurückliefert. Im folgenden Beispiel wird dieser Umstand nicht beachtet:

Beispiel: DECLARE @Number nvarchar(25) SET @Number = (SELECT ProductNumber FROM Production.Product) SELECT @Number

Dieses Beispiel erzeugt die folgende, auszugsweise wiedergegebene Fehlermeldung: Meldung 512, Ebene 16, Status 1, Zeile 2 Die Unterabfrage hat mehr als einen Wert zurückgegeben.

Lauffähig wird dieser Code erst dann, wenn zum Beispiel durch Verwendung der WHERE-Klausel nur ein einziger Datensatz ausgewählt wird. Zweckmäßigerweise geschieht dies durch einen Vergleich auf den Primärschlüssel der Tabelle, die Spalte ProductID:

6.2.8 Wertezuweisung an Variablen durch Abfragen Die Wertezuweisung an eine Variable kann in SQL auf verschiedene Weisen erfolgen. Eine Möglichkeit besteht darin, der Variablen einen bestimmten, vorgegebenen Wert zuzuweisen, wie wir weiter oben bereits beschrieben haben. Es kann in der Datenbankprogrammierung aber durchaus notwendig sein, den Wert einer Variablen im Programm nicht vorzugeben, sondern ihn aus Datensätzen zu ermitteln, was bedeu-

DECLARE @Number nvarchar(25) SET @Number = (SELECT ProductNumber FROM Production.Product WHERE ProductID = 870) SELECT @Number

Als Ergebnis erhält die Variable den Wert WB-H098.

Grundlagen der SQL-Programmierung

Abfrage mit kombinierter Wertzuweisung Die zweite Möglichkeit, einer Variablen ein Abfrageergebnis zuzuweisen, besteht darin, die Zuweisung direkt innerhalb einer SELECT-Anweisung vorzunehmen. Diese zweite Möglichkeit unterscheidet sich in einem Punkt signifikant von der im letzten Abschnitt besprochenen Möglichkeit. Dieser Unterschied betrifft das Abfrageergebnis der verwendeten SELECT-Anweisung. Um diesen Unterschied zu verdeutlichen, soll die fehlerauslösende Abfrage ohne WHERE-Klausel aus dem letzten Abschnitt noch einmal gesondert ausgeführt werden:

FROM Production.Product SELECT @Number

Die in diesem Beispiel verwendete Abfrage liefert – wie Sie oben gesehen haben – mehr als einen Wert, nämlich alle Produktnummern, zurück. Die Variable kann jedoch nur einen einzigen Wert abspeichern. Es stellt sich also die Frage, welchen Wert die Variable nach Abarbeitung des Codes enthält. Wie in Abbildung 6.3 gezeigt, ist der letzte zurückgegebene Wert der zugrundeliegenden SELECT-Anweisung der Eintrag WB-H098, und genau dieser Wert wird beim Auslesen des Variableninhalts im vorbilgegenzur Beispiel.

SELECT ProductNumber FROM Production.Product Abbildung 6.4 Wert der Variablen nach Beendigung des Beispiels

Abbildung 6.3 zeigt die letzten Zeilen des Abfrageergebnisses. Beachten Sie bitte den grau unterlegten letzten Wert des Abfrageergebnisses, WB-H098.

Abbildung 6.3 Abfrageergebnis auf die Produktnummern

Um einer Variablen einen Wert innerhalb einer Abfrage innerhalb der SELECT-Anweisung zuzuweisen, geben Sie den Variablennamen gefolgt von dem Gleichheitszeichen direkt nach SELECT an:

Syntaxe : SELECT nom_variable = nom_spal FROM nom_schéma.nom_table

Intéressant dans diesem Zusammenhang ist, dass die gleiche Abfrage, die bei der Verwendung mit SET einen Fehler auslöste, innerhalb dieser Anweisung zulässig ist :

Beispiel : DECLARE @Number nvarchar(25) SELECT @Number = ProductNumber

Die Wertzuweisung an eine Variable innerhalb einer SELECT-Anweisung setzt also im Gegensatz zu der im letzten Abschnitt besprochenen SET-Anweisung nicht voraus, dass die verwendete Abfrage nur einen Wert als Ergebnis liefert, Wert ergebnis liefert, Wertzuweisung wert als Ergebnis liefert, Wertzuweisung Sie können sich dieses Verhalten so vorstellen, dass jeder innerhalb der Abfrage zurückgegebene Wert den vorherigen Wert der Variablen überschreibt, so dass am Ende der Ausführung die Variable den zuletzt von der Abfragiethältten. Die Wertezuweisung mittels einer Abfrage, die mehrere Ergebnisse zurückliefert, ist sicherlich ein Sonderfall. In der Regel wird auch bei dieser Methode die SELECT-Anweisung so definiert, dass das Abfrageergebnis nur aus einem Wert besteht, analog zu der im letzten Abschnitt besprochenen Verwendung der SET-Anweisung. Dans manchen Fällen können Sie diese Möglichkeit allerdings auch sehr geschickt einsetzen, wie das folgende Beispiel verdeutlicht. Hier wird die Aggregatfunktion MAX über eine entsprechende Abfrage nachgebildet:

Beispiel: DECLARE @Price money SELECT @Price = ListPrice FROM Production.Product ORDER BY ListPrice SELECT @Price

Der Inhalt der Variablen ist in diesem Fall identisch mit dem Wert der entsprechenden Aggregatfunktion.

Grundlagen der SQL-Programmierung

6.3 Ablaufsteuerung Innerhalb von Programmen ist es häufig notwendig, die Abarbeitung von Programmcode zu steuern, um auf bestimmte Umstände zu reagieren oder um einen Codeabschnitt mehrfach nacheinander auszuführen. Die entsprechenden Anweisungen einer Programmiersprache, die es ermöglichen, den Ablauf eines Programms zu beeinflussen, werden unter dem Begriff Ablaufsteuerung zusammengefasst. Auch in SQL stehen Sprachelemente zur Ablaufsteuerung zur Verfügung, allerdings ist ihre Anzahl im Vergleich zu anderen Programmiersprachen sehr gering. Es existieren nur wenige, grundlegende Befehle. Diese geringe Auswahl an zur Verfügung stehenden Sprachmitteln erfordert in manchen Fällen eine – verglichen mit anderen Programmiersprachen – etwas umständlichere Programmierung.

6.3.1 Blöcke Bei der Verwendung von Befehlen zur Ablaufsteuerung ist es souvent notwendig, mehrere SQL-Anweisungen zu einer Einheit, einem sogenannten Block, zusammenzufassen. Ein Block wird in SQL mit BEGIN eingeleitet et mit END abgeschlossen:

Syntaxe : BEGIN anweisungen END

Formal können Sie mehrere Anweisungen an beliebiger Stelle innerhalb eines SQLSkripts mit BEGIN und END zu einem Block zusammenfassen. In der Regel wird dadurch kein Fehler ausgelöst, der Block hat aber auch keine Auswirkung auf die Abarbeitung des Quelltextes, er wird einfach ignoriert. Es gibt jedoch auch Fälle, in denen Blöcke in Verbindung mit Befehlen zur Ablaufsteuerung zwingend verwendet werden müssen, wie wir im Folgenden zeigen werden.

AUTREMENT COMMENCER anweisungen FIN

Ergibt die Auswertung des nach IF angegebenen Ausdrucks den logischen Wert true, so wird der unmittelbar darauf folgende Codeabschnitt – auch IF-Zweig genannt – ausgeführt, der zweite Teil SE der Anweissung demürd, aussi Schlütz n'ignore. Ergibt die Auswertung des Ausdrucks den Wert false, ist das Verhalten genau umgekehrt, der IF-Zweig wird übersprungen und der nach ELSE folgende Code – entsprechend auch ELSE-Zweig genannt – wird. ausgef In beiden Fällen wird dann mit der Abarbeitung von eventuell nach dem Ende der IF. ELSE-Anweisung stehendem Code fortgefahren. Im folgenden Beispiel wird die IF. ELSE-Anweisung verwendet, um den Inhalt einer Variablen auf einen bestimmten Wert zu testen und mit einer entsprechenden Ausgabe zu reagieren:

Beispiel: DECLARE @Zahl smallint SET @Zahl = 42 IF @Zahl = 42 BEGIN PRINT '@Zahl gleich 42' END ELSE BEGIN PRINT '@Zahl ungleich 42' END PRINT 'Ausführung beendet'

Dieses Beispiel erzeugt die folgende Ausgabe :

6.3.2 SI … SINON Dé IF. ELSE-Anweisung stellt die Möglichkeit bereit, verschiedene Codeabschnitte in Abhängigkeit vom Wahrheitswert eines Ausdrucks auszuführen.

Syntaxe : IF ausdruck BEGIN anweisungen END

@Zahl gleich 42 Ausführung bedet

Da der Vergleich als Ergebnis true ergeben hat, wurde lediglich der IF-Zweig durchlaufen und dann die nach dem Ende von IF. ELSE stehende PRINT-Anweisung ausgeführt. Im folgenden Beispiel wird durch die Initialisierung der Variablen mit einem anderen Wert die Ausführung des ELSE-Zweigs erzwungen:

Grundlagen der SQL-Programmierung

Beispiel: DECLARE @Zahl smallint SET @Zahl = 43 IF @Zahl = 42 BEGIN PRINT '@Zahl gleich 42' END ELSE BEGIN PRINT '@Zahl ungleich 42' END PRINT 'Ausführung beendet'

In diesem Fall kommt es zu folgender Ausgabe: @Zahl ungleich 42 Ausführung beendet

Die Verwendung von IF . AUTREMENT muss nicht immer mit der oben angegebenen Syntaxe in ihrer vollständigen Form erfolgen. Il est donc insbesondere die Verwendung des ELSE-Zweigs facultatif. Wird er nicht benötigt, kann der zweite Teil der Anweisung – beginnend mit ELSE – einfach entfallen. Eine weitere Abwandlung der Syntax ist dann möglich, wenn der IF-oder ELSE-Zweig nur eine Anweisung umfasst. In diesem Fall können Sie auf die Angabe eines Blocks in dem jeweiligen Zweig verzichten. Das folgende Beispiel entspricht von der Funktionalität her also dem ersten Beispiel dieses Abschnitts, da in diesem Fall sowohl im IF- als auch im ELSE-Zweig nur eine Anweisung zu bearbeiten ist:

Beispiel: DECLARE @Zahl smallint SET @Zahl = 42 IF @Zahl = 42 PRINT '@Zahl gleich 42' ELSE PRINT '@Zahl ungleich 42' PRINT 'Ausführung beendet'

Manche Programmiersprachen stellen die Möglichkeit zur Verfügung, weitere Vergleiche innerhalb der IF-Anweisung vorzunehmen, wenn die vorhergehenden Vergleiche nicht zutreffend waren. Solche zusätzlichen Vergleiche werden häufig mit else if oder ähnlichen Schlüsselwörtern eingeleitet. Dans SQL ist dies nicht möglich,

allerdings können ELSE. IF-Anweisungen geschachtelt werden, wodurch eine entsprechende Funktionalität nachgebildet wird, wie das folgende Beispiel zeigt :

Beispiel: DECLARE @Zahl smallint SET @Zahl = 42 IF @Zahl = 0 THEN 'leicht' WHEN Weight >= 100 THEN 'mittel' WHEN Weight >= 1000 THEN 'schwer' ELSE '-' END AS Gewicht FROM Production.Product

Das Ergebnis dieser Abfrage ist, dass für alle Bücher, bei denen in der Spalte Weight ein Wert eingetragen ist, als Ausgabe leicht erfolgt. Liegt in dieser Spalte bei einem Datensatz ein NULL-Wert vor, wird als Ergebnis der Bindestrich ausgegeben. Abbildung 6.9 veranschaulicht die Veränderung gegenüber den in Abbildung 6.8 dargestellten Datensätzen.

Abbildung 6.9 Ergebnis einer falsch definierten CASE-Funktion

Dieses Beispiel zeigt deutlich, dass die CASE-Funktion denjenigen WHEN-Zweig verwendet, der als erster ein wahres Ergebnis liefert. Alle anderen Zweige, die ebenfalls wahre Ergebnisse liefern könnten, werden nicht mehr ausgewertet. Dieses Verhalten sollten Sie berücksichtigen, wenn Sie die CASE-Funktion auf umfangreiche Datenbestände anwenden: Werden die Vergleiche, die erwartungsgemäß am häufigsten als Ergebnis true ergeben, frühunelle in der CASE-Fdies. Nachfolgend noch einmal eine Zusammenfassung des Verhaltens der beiden Arten der CASE-Funktion :

Hinweis Für beide Arten der CASE-Funktion dorure, dass die Verwendung des ELSE-Zweigs facultatif ist WHERE-Zweige dürfen in beliebiger Anzahl angegeben werden. Der Rückgabewert der Funktion richtet sich zunächst nach dem ersten WHEN-Zweig, dessen Ausdruck als Ergebnis true liefert. Ist dies bei keinem WHEN-Zweig der Fall, wird der Rückgabewert des ELSE-Zweigs verwendet. Ist dieser nicht vorhanden, liefert die CASE-Funktion einen NULL-Wert zurück.

SÉLECTIONNEZ le numéro de produit, le poids,

Grundlagen der SQL-Programmierung

Weitere Möglichkeiten zur Anwendung der CASE-Funktion Wie oben bereits erwähnt, wird die CASE-Funktion hauptsächlich in Verbindung mit Abfragen verwendet. Eine sehr typische Anwendung dieser Funktion besteht innerhalb von Datenbanken zum Beispiel darin, das in einer Bit-Spalte codierte Geschlecht einer Person in die Anrede »Frau« beziehungsweise »Herr« umzusetzen, um in diesezuerm Awenner Anrede Die CASE-Funktion kann jedoch nicht nur innerhalb einer Abfrage verwendet werden. Bei dem zu verarbeitenden Wert muss es sich aussi nicht zwangsläufig um einen Spaltenwert handeln, andere Ausdrücke in anderen Zusammenhängen können ebenso über die CASE-Funktion ausgewertet werden. Donc können Sie zum Beispiel auch eine Wertzuweisung an eine Variable in Verbindung mit SET und der CASE-Funktion realisieren, wie das folgende Beispiel zeigt :

Beispiel: DECLARE @Eingabe smallint SET @Eingabe = 42 DECLARE @Ausgabe CHAR(15) SET @Ausgabe = CASE @Eingabe WHEN 42 THEN 'zweiundvierzig' ELSE 'unbekannt' END PRINT @Ausgabe

In diesem Beispiel wird der Variable @Ausgabe über die CASE-Funktion ein Wert zugewiesen, der von dem Wert der Variablen @Eingabe abhängig ist.

der Spalte wird in der Abfrage zur Kontrolle mit ausgegeben. Durch die IIF-Funktion wird ein Spaltenwert kleiner gleich 500 als niedrig, ein Wert größer als 500 als hoch klassifiziert.

Beispiel: SELECT SafetyStockLevel, IIF(SafetyStockLevel (Vergleichsoperator) . 175 .NET 2.0 . 797 .NET Assembly Loader . 801 .NET-Assembly . 795 .NET-CLR 1.0 . 796 1.1 . 796 2.0 . 796 .NET-Runtime . 796 . NET-Speichermanagement . 796 .NET-Threadpool . 797 .NET-Typen . 843 [] (Klammeroperator) . 198 @@CONNECTIONS . 257 @@CURSOR_ROWS . 656 @@ERROR . 268, 282, 289, 899 @@FETCH_STATUS . 656 @@IDENTITY-Funktion . 600 @@LANGUAGE . 257 @@MAX_CONNECTIONS . 257 @@OPTIONS . 257 @@ROWCOUNT . 268, 637 @@SERVERNAME . 257 @@VERSION . 257 * (Multiplikation) . 174 * (Platzhalter) . 179 / (Division) . 174 % (Modulo-Division) . 174 % (Platzhalter) . 197 + (Addition) . 174 + (Zeichenverkettung) . 174 = (Vergleichsoperator) . 175

Un Abfrage an Datenbankmodul . 123

Abfrage (Forts.) analysieren . 129 asynchrone. 1018 auf verschiedene Serveur . 313 ausführen . 126 Ausführung abbrechen . 129 débogueur. 127 Duplikate elimineren . 183 einfache. 177 Ergebnis einschränken . 187 Ergebnis sortieren . 184 Ergebnisse zusammenfassen . 210 neuf. 123 paramètres . 1015 récursif . 895 Unterabfrage . 204 Abfrageausführung . 132 abgébrochène. 134 erfolgreiche . 132, 134 nicht erfolgreiche . 133, 134 Abfrageausführung (Optionen) . 228 Abfrage-Designer . 135 Abfrage-Editeur . 122 Abfrageergebnis . 131, 210 Abfrageerstellung, grafische . 135 Abfragefenster . 123 IntelliSense . 139 Abfrageleistung verbessern . 675 Abfrageoptimierer . 534 Abhängigkeit, intérieur . 96 Ablaufsteuerung . 238 RUPTURE . 244 CONTINUER . 245 ALLER À . 246 SI … AUTREMENT . 238 SI EXISTE . 241 RETOUR . 246 ATTENDRE . 247 PENDANT . 243 Ablaufverfolgung . 702 ABS . 267 ABSOLU n . 648 Accepter les modifications . 1070, 1076, 1089 AcceptRejectRule . 1076 Accès . 135, 314 Accumuler-Méthode . 860 ACIDE . 731 AJOUTER . 371

Une addition . 174 Ajouter-Méthode DbSet . 1262 AddWithValue (Méthode) . 1016 Administrateur . 44, 85 Kennwort . 45 sa. 45 Système . 45 AdventureWorks2014 . 70, 116, 706 Product-Tabelle . 70 ProductVendor-Tabelle . 76 Vendeur-Tabelle . 76 APRÈS-Déclenchement . 582, 588, 594, 867 Agrégat . 859 benutzerdefiniertes . 794, 859 installations. 866 Fonction d'agrégation . 200 MOY. 201 COMPTE. 202 MAX. 201 MIN. 202 SOMME . 201 Méthode d'agrégation . 1188 Aktivierungsprozedur . 636 Moniteur d'activité . 158% Prozessorzeit . 159 Batchanforderungen/Sekunde . 159 Datenbank-E/A . 159, 160 Prozesse . 159 Ressourcenwartevorgänge . 159 Wartende Tâches . 159 Aktualisierung aktualisierte Instanz . 63 Durchführung . 58 État de la mise à niveau . 61 Volltextkataloge . 60 Zusammenfassung . 60 Aktualisierung von SQL Server . 51 Conseiller de mise à niveau . 51 Aktualisierung von SQL Server 2005 . 51 Aktualisierung von SQL Server 2008 . 51 Aktualisierung von SQL Server 2008 R2 . 51 Aktualisierung von SQL Server 2012 . 51 Aktualisierungsweitergabe . 459 Algorithme, schützenswerter . 555 Alias ​​. 304, 885 Tabelle . 304 TOUS. 207, 1140 ALL SERVER-Option . 868 AllowDBNull (Eigenschaft) . 1054 MODIFIER . 601

ALTER ASSEMBLY-Déclaration . 802 Option DONNÉES NON VÉRIFIÉES . 802 VISIBILITÉ-Option . 803 MODIFIER LA COLONNE . 372 MODIFIER LA BASE DE DONNÉES . 327 FONCTION DE MODIFICATION . 566, 574 MODIFIER LA CONNEXION . 480 MODIFIER LA CONNEXION . AVEC DEFAULT_ DATABASE . 480 PROCÉDURE DE MODIFICATION . 549, 787 MODIFIER LA TABLE . AJOUTER . 371 MODIFIER LA TABLE . AJOUTER UNE CONTRAINTE . 384 MODIFIER LA TABLE . MODIFIER LA COLONNE . 372 MODIFIER LE TABLEAU . LAISSER LA COLONNE . 373 MODIFIER LA TABLE . CONTRAINTE DE LAISSE . 386 MODIFIER LA TABLE . CONTRAINTE NOCHECK . 385 MODIFIER LA TABLE . AVEC NOCHECK . 385 MODIFICATION DE LA GÂCHETTE . 594 Déclaration ALTER TYPE . 849 MODIFIER L'UTILISATEUR . 502 MODIFIER L'UTILISATEUR . AVEC DEFAULT_SCHEMA . 502 MODIFIER LA VUE . COMME . 522 MODIFIER LA COLLECTION DE SCHÉMA XML . 936 Institut national américain de normalisation . 163 Analyse der zu erfassenden Informationen . 97 démarrage . 707 von Beziehungen . 98 Assistant d'analyse . 55 Authentifizierung . 56 Services d'analyse . 106 ET . 176 Änderungsnachverfolgung . 607, 623 Tabellenaktivierung . 624 Versionswert . 625 Änderungsweitergabe . 380 Anmeldedialog . 105 ANSI . 163 ANSI SQL-92-Standard . 859 ANSI-konforme Abfrage . 880 Anweisungsberechtigung . 488 Tout. 207, 1139 AppDomain . 798 Domaine d'application . 797, 798 Gestion de domaine d'application . 798 Appliquer les modifications en cours . 1238 Appliquer les modifications d'origine . 1238 Arbeitsauslastung . 701 ArcInfo-Forme . 434 Exception d'argument . 1056

ArgumentException-Classe . 848 ArgumentOutOfRangeException-Classe . 857 Aristote. 175 Tableau . 641 AS . 180, 666, 892 ASCII . 263, 265 Assemblée . 798 ALTER ASSEMBLY . 802 bereitstellen . 817 CRÉER UN ASSEMBLAGE . 801 installations. 801 Kompilieren . 808 Chargement . 797 avec sqlcmd bereitstellen . 819 ohne Visual Studio Kompilieren . 818 PERMISSION_SET . 803 Sicherheitsstufen . 803 Code source . 802 Versionierung . 802, 843 Verwaltung . 796, 801 Chargeur d'assemblage . 801 Résolveur d'assemblage . 797 Association . 1163 Association des producteurs de pétrole et de gaz . 414 AssociationSet . 1162 Association . 1159 Atomarität . 732 Atomicité . 732 Attach-Methode DbSet . 1264 Attribut. 71, 92 atomes . 92 éléments . 93 Attributwert atomar . 92 élémentaire. 92 Liste . 93 Auflösung einer m:n-Beziehung . 99 Ausführungskontext . 799 Ausführungsplan . 534, 825 veralteter . 558 Ausgabe mit PRINT et SELECT . 225 Ausgabeparameter verwenden . 545 Ausgabestrom steuern . 834 Auswahloperator . 192 ENTRE . 194 EN . 196 EST. 193 COMME . 196 Auswertungsreihenfolge . 174 ußere Verknüpfung . 308

Authentifizierung . 105, 110, 474 Gemischter Modus . 45 Serveur SQL . 44, 110, 474 fenêtres . 45, 110, 474 Authentifizierungsmodus . 44 AutoDetectChangesEnabled . 1269 AutoIncrément (Eigenschaft) . 1063 AutoIncrementSeed (Eigenschaft) . 1063 Pas d'incrémentation automatique (Eigenschaft) . 1063 Autoinkrementspalte . 1063 Mode AUTO . 956 Moyenne . 1139 MOY. 201 Azur. 38

B Arbre équilibré . 678 Bankleitzahl . 75 Code-barres . 75 Basistabelle . 518, 597 lot . 227 Lot-Trennzeichen . 227 B-Baum . 678 bcp . 472 COMMENCER . 238 COMMENCER LA TRANSACTION . 737 COMMENCER ESSAYER . 900 BeginEdit (Méthode) . 1060 BeginExecuteReader (Méthode) . 1019 CommencerTransaction (Méthode) . 996 Beispieldatenbank . 48 Montage . 48 Northwind . 441 Benutzer . 479 Aktivierung . 494 Deaktivierung . 494 Assemblage Benutzer . 799 Benutzerdefinierte Funktion . 563, 794, 820 ändern . 566, 574 Aufruf mit EXECUTER . 566 Darstellung im Objekt-Explorer . 565 Fehlerbehandlung . 564 en ligne. 568 löschen . 566, 574 paramètre Anzahl Eingabe maximal . 563 Rückgabedatentyp . 564 Skalarwert. 564 Standardwert . 563 Tabellenwert . 568, 571 Übersicht . 563

Benutzerdefinierte Funktion (Forts.) UDF . 563 Fonction définie par l'utilisateur . 563 Benutzerdefinierte Serialisierung . 854 Benutzerdefinierter Datentyp . 553, 794, 842 aktualisieren . 853 erstellen. 844 Zugriff vom Client . 858 Benutzerdefinierter Fehler . 291 anzeigen . 293 auslösen . 294 erstellen. 291 à Landessprache . 297 löschen . 302 nicht vordefinierter . 295 Déclencheur Benutzerdefinierter . 794, 867 installations. 873 Benutzerdefiniertes Agrégat . 794, 859 installations. 866 Nom Benutzer . 110 Benutzerverwaltung . 473 Alias ​​. 480 Datenbankzugriff erteilen . 478 Eigenschaften eines Benutzers anzeigen . 477 invités. 498 Connexion . 474 SQL-Server-Log-in einrichten . 476 Standardschema zuweisen . 502 Windows-Log-in einrichten . 475 Zusammenfassung zu Rollen . 481 Zuweisung einer Rolle . 486 Zuweisung einer Standarddatenbank . 480 Berechnete Spalte . 181 Berechnete Spalten (Tabelle) . 355 Berechtigung . 482 an Benutzer und Rollen déjà . 487 Anweisungs- . 488 entziehen. 488 erben. 482 gewähren . 488 Objet . 488 déjà prises . 490 verweigern. 488 weitergeben . 491 Bericht (Datenbank) . 160 Berichtsdatei . 130 Besitzerkette, gebrochene . 500 Beständigkeit . 732 ENTRE . 194

Bezeichner. 165 begrenzter. 166 régulateur . 166 vollqualifizierter . 500 Béziehung . 80 1:1 . 98 1:1-Beziehung . 80 1:n . 98 1:n-Beziehung . 81 m:n . 99 m:n-Beziehung . 82 bigint. 167 BASE BINAIRE 64 . 954 BinaryReader-Klasse . 854 BinaryWriter-Classe . 854 bits . 167 BLOB-Daten . 363 Bloc . 238 BLZ. 75 Signet . 144 RUPTURE . 244 Breitengrad . 406 B-Arbre . 678 Copie en masse . 470 Programme de copie en bloc . 472 INSERT EN VRAC . 470, 850 administrateur en bloc . 483 Bundesamt für Karthographie und Geodäsie . 434

C C++. 793 Cache . 671, 734, 795 APPELÉ SUR NULL INPUT-Option . 822 AnnulerModifier (Méthode) . 1060 CASCADE . 381 sensible à la casse . 165 Fonction CASE . 248 einfache . 249 complexes . 251 Wertezuweisung durch . 254 CAST . 270 CAPTURE . 552 Bloc CATCH . 283, 840, 900 Modification de la capture des données . 607 Abfragefunktionen . 615 Änderungstabelle . 613 Aufzeichnungsinstanz . 613 Bénutzer . 610 Datenbankkonfiguration . 609

Change Data Capture (Forts.) Datetime-Wrapperfunktionen . 622 Funktionsweise . 608 Schéma . 609, 613, 615 Überwachung einrichten . 610 zyklische Abfragen . 620 Suivi des modifications . 1266 씮 nderungsnachverfolgung CHANGE_TRACKING_CURRENT_ VERSION . 625 CHANGE_TRACKING_MIN_VALID_VERSION . 626 ChangeDatabase (Méthode) . 996 ChangePassword (Méthode) . 980 ChangeState . 1237 CHANGEABLE . 626 CARACTÈRE . 263, 265 car(n) . 167, 169 CHARINDEX . 264, 265 VÉRIFIER . 578, 581 VÉRIFIER L'OPTION . 525 CHECK-Contrainte . 374, 378, 385 POINT DE CONTRLE . 735 ARCS DE CIRCULAIRE . 429 CHAÎNE CIRCULAIRE . 430 COURBE COMPOSÉE . 431 POLYGONE COURBE . 432 CORDE CIRCULAIRE . 430 ClearAllPools (Méthode) . 997 ClearPool (Méthode) . 997 Cliente . 65, 84 ClientWins . 1246 FERMER . 655 Fermé (Méthode) . 983 Cloud-Datenspeicherung . 38 CLR . 791 Betriebssystemoperationen . 796 Hébergement-API . 798 Intégration . 791, 795 Tâches . 797 CLR activé . 807 Compteur de performances d'exécution CLR . 877 CLR contre T-SQL . 807 CLR-Datentypen . 405, 816 CLR-Fonction . 824 skalakres. 820 tabellenwertige . 820 CLR-Hébergement . 796 CLR-Objekt . 808 administrateurs . 874 Laufzeitinformationen . 876

CLR-Objekt (Forts.) Surveillance . 874 CLR-Sicherheitsstufen . 803 ACCÈS_EXTERNE . 803 SR . 803 DANGEREUX . 803 CLR-Unterstützung aktivieren . 805 par Skript aktivieren . 807 clr _en RECON sp_conf CLUSTERED . 687, 689 Codd, Dr Edgar Frank . 66 Sécurité d'accès par code . 799 Collection-Méthode . 1259 Mappages de colonnes (Eigenschaft) . 1040 Columnstore-Index . 717 Erstellung eines gruppierten Index . 724 Informationen zu vorhandenen Indes . 728 Leistungsvergleich . 720 nicht gruppierter Index . 719 Prinzip. 717 Steuerung der Verwendung . 724 Générateur de commandes . 1079 CommandTimeout (Eigenschaft) . 1002 Énumération CommandType . 1026 CommandType (Eigenschaft) . 1026 ENGAGER UNE TRANSACTION . 738 Communityprojekte und Beispiele . 138 COM-Objekt . 793 einbinden. 793 Édition compacte . 38 COURBE COMPOSÉE . 431 CONCAT . 264, 267 Langage de définition de schéma conceptuel . 1161, 1163 CONNECTER . 494 Délai de connexion . 985 État de la connexion . 983 ConnectionString-Eigenschaft . 980 ConnectionTimeout (Eigenschaft) . 995 Cohérence . 732 Contrainte . 374, 601, 824 ConstraintCollection . 1053 contient() . 942 CONTINUER . 245 Continuer la mise à jour sur erreur . 1101 Contrat . 630

Manette . 346 CONVERTIR . 271 Copie sur écriture . 341 Compte . 202, 1136 COMPTE(*) . 203 COMPTE(DISTINCTE) . 202 Gestion CPU . 796 CRÉER . 601 CRÉER UN ASSEMBLAGE . 801 CREATE ASSEMBLY-Déclaration . 801, 819 CRÉER UNE BASE DE DONNÉES . 315 CRÉER UNE FONCTION . 564, 568, 572 CREATE FUNCTION-Déclaration . 822, 825 CRÉER UN INDEX . SUR . 686 CRÉER UNE CONNEXION . 475 CRÉER UNE CONNEXION . DE WINDOWS. 475 CRÉER UNE CONNEXION . AVEC MOT DE PASSE. 476 PROCÉDURE DE CRÉATION . COMME . 535 CREATE PROCEDURE-Instruction . 819 CRÉER UN RLE . 484 CRÉER UN SCHÉMA . 501 CRÉER UN SCHÉMA . AUTORISATION. 501 CRÉER UN INDEX SPATIAL . 439, 440 CRÉER UN TABLEAU . 353 CRÉER UN DÉCLENCHEUR . SUR . 582, 591 CRÉER UN DÉCLENCHEUR . SUR TOUS LES SERVEURS. 602 CRÉER UN DÉCLENCHEUR . SUR BASE DE DONNÉES. 604 CREATE TRIGGER-Instruction . 873 CRÉER TYPE-Anweisung . 553 Déclaration CREATE TYPE . 849 CRÉER UN UTILISATEUR . 479 CRÉER UN UTILISATEUR… POUR SE CONNECTER . 480 CRÉER UNE VUE . COMME . 520 CRÉER UNE VUE … COMME … AVEC L'OPTION DE VÉRIFICATION . 527 CRÉER UN INDEX XML . 947 CRÉER UNE COLLECTION DE SCHÉMA XML . 935 CREATE_DATABASE . 602 CréerCommande (Méthode) . 997, 1001 CROSS APPLY-Déclaration . 881 JOINT CROISÉ . 310 Rapports Crystal . 107 CSDL . 1161, 1163 CTE . 891 CUBE-Opérateur . 219, 222 Curseur . 641 positions absoluesangabe . 652 Aktualisierungsoptionen . 644 ausgewählte Daten aktualisieren und löschen . 661 automatisches Durchlaufen . 656

Curseur (Forts.) bildlauffähiger . 644, 649 Daten in der Auswahl aktualisieren . 661 Daten in der Auswahl löschen . 661 Daten in der Cursorauswahl . 661 Datensätze abrufen . 646 dynamiseur . 644 -ende . 654 erstellen. 643 FETCH-Anweisung . 646 Fonctionnalités . 656 Funktionsweise . 641 Lese- . 644 löschen . 655 Nichtsperr- . 644 öffnen . 645 Positionsangabe . 648 positions relatives . 652 schliessen . 655 serveurs seitiger . 642 Sperr- . 644 Sperroptionen . 644 statisticien. 644 Struktur . 645 Verwendung von Positionsangaben . 647 Vorwärts- . 644 Zugriffsoptionen . 644 POLYGONE COURBE . 432 Client (Bibliothèque) . 802 CYCLE . 670

D d (Platzhalter) . 296 Langage de contrôle des données . 164 Langage de définition de données . 164, 601 Langage de manipulation de données . 164, 579 Data Mart . 107 Langage de requête de données . 164 Services de transformation de données . 107 Entrepôt de données . 107 DataAccess-Paramètre . 821, 851 Base de données (Eigenschaft) . 995 Vérificateur de cohérence de la base de données . 334 Commandes de la console de base de données . 334 propriétaire de la base de données . 500 colonne de données . 1046CollectionColonneDonnées . 1046 DataColumnMappingCollection . 1042 DataMember . 1169 DataReader-Klasse . 833

DataRecord-Klasse . 829 DataRelation . 1073 Ligne de données . 1046 DataRowCollection . 1046 DataRowState . 1066 DataRowVersion . 1067 DataRowViewState . 1088 Ensemble de données . 1040, 1044 Source de données (Eigenschaft) . 995 Table de données . 1037, 1045 DataTableMapping . 1039 AJOUT DE DATE . 258, 261 DATEDIFF . 258, 261 DATE DE PIÈCES . 259, 262 Datei öffnen . 123 Dateigruppe . 317, 330, 362 Datei-ID . 678 Dateivergrößerung . 319 Daten, Speicherung im Dateisystem . 362 Datenabfragesprache . 164 NOM DATE . 258 Banque de date . 113 ändern . 327 Auswahl durch UTILISATION . 177 benutzerdefinierte . 113 Dateien löschen . 329 eigenständige . 505 erstellen. 315 erstellen mit mehreren Dateien . 324 für die Arbeitsauslastungsanalyse . 706 Grundlagen . 65 historique. 66 Inhaler . 116 löschen . 324 physische. 85 relationnel . 67 Norme- . 125 Struktur . 116 Système- . 113 verfügbare . 125 verkleinern . 333 Verwaltung . 84 Datenbankbericht . 160 Datenbankdatei . 316 Eigenschaften ändern . 329 hinzufügen . 327 nachträgliche Änderung . 327 verkleinern . 335 Diagramme Datenbank . 117 ausdrucken . 119 erstellen . 117

Datenbankdiagramm (Forts.) Seitenumbrüche anzeigen . 119 discours. 119 Tabelle entfernen . 119 Tabelle hinzufügen . 117, 119 Tabellen anordnen . 119 Unterstützung installieren . 117 verknüpfte Tabellen hinzufügen . 119 Datenbankentwurf . 89 Dénormalisation . 100 Grundlagen. 89 normalisateur . 90 Datenbank-Hauptschlüssel . 351 Datenbankkonfiguration . 623 Datenbankmanagementsystem Hauptaufgabe . 86 Struktur . 84 Datenbankmodule . 106, 109 Datenbankmodul-Abfrage . 123 Datenbankmodul-Optimierungsratgeber . 701 Datenbank-Momentaufnahme . 116, 337 Datenbankobjekt, temporäres . 115 Datenbankrolle benutzerdefinierte . 484 fête . 483 Datenbanksicherung . 115 Datenbanktrigger . 605 Datenbankzugriff erteilen . 478 Date de datei . 317 primaires . 316, 318 sekundäre . 317, 318, 324 Datendéfinitionssprache . 164 Datenintegrität . 68, 374, 796 Implémentation . 374 Datenkonsistenz . 69, 581 Datenmanipulation auf Sichten . 597 Datenmanipulationsprache . 164 Fournisseur de date . 974, 975 Datensatz ändern . 456 einfügen . 451 copies. 461 löschen . 459 manipulateurs . 451 mit IDENTITY-Wert einfügen . 454 avec NULL et DEFAULT eingeben . 453 Datensteuerungssprache . 164 Type de date . 842, 843 benutzerdefinierter . 553, 794

Datentyp (Forts.) CLR . 405, 414 geodätischer . 406 géographie . 406 géométrie . 406 hierarchischer. 405, 441 raboteuse . 406 räumlicher . 405 Datentypen dans SQL Server . 70 bigint. 167 bits. 167 car(n) . 167 dateheure. 167 décimal. 167 flotteur. 167 argent. 167 nchar(n) . 167 numérique. 167 nvarchar(n) . 167 réel. 167 petitedateheure. 167 petite monnaie . 167 minuscule. 167 variables (max) . 171 varchar(n) . 167 Datenverschlüsselung, transparente . 350 DATEPARTIE . 258, 260, 824, 887 dateheure . 167, 168 Datums-/Uhrzeitfunktionen . 167, 257 Datums-/Uhrzeitwerte . 172 JOUR . 257, 258, 260 jour de l'année . 257 db_accessadmin . 484 db_backupoperator . 484 db_datareader . 484 db_datawriter . 484 db_ddladmin . 484 db_denydatareader . 484 db_denydatawriter . 484 DB_ID-Funktion . 691 db_owner . 484 db_securityadmin . 484 DBCC . 334 DBCC CHECKDB . 850 DBCC CHECKFILEGROUP . 850 TABLEAU DE CONTRLE DBCC . 850 DBCC SHOW_STATISTICS . 699 DBCC SHOWCONTIG . 691 BASE DE DONNÉES RÉDUITE DBCC . 334 FICHIER RÉTRACTABLE DBCC . 335 DBConcurrencyException . 1101, 1106

DbContext . 1251 DbContext-API . 1251 dbcréateur . 483 DbEntityEntry . 1258 SGBD . 83 dbo. 500 DbSet . 1252 DbUpdateException . 1265 DCL. 164 LDD . 164, 601 DDL-Ereignisgruppe . 603 Déclencheur DDL . 601, 605, 867 avec Datenbankbereich . 601, 604 avec Serverbereich . 601 Blocage . 757, 796, 799 Beispiel . 759 Oper . 758 Situation . 758 Vermeidung . 759 DÉALLOCATION . 655 Débogage . 127 étés . 128 Einzelschritt. 127 Haltepunkt. 127 nächste Anweisung anzeigen . 127 plus. 128 Débogage . 802 décimal. 167, 168 DÉCLARER . 229, 643 DÉCLARER . LE CURSEUR . 643 PAR DÉFAUT . 453, 525, 541, 563, 577 VALEURS PAR DÉFAUT . 456 DEFAULT-Contrainte . 374, 379 Par défautSiVide . 1145 DEFAUT-Wert . 913 Chargement différé . 1196 Deklarative Integrität . 601 Décrément . 232 RETARD . 247 SUPPRIMER . 459, 526, 528, 579, 730 Supprimer (Méthode) . 946, 1061 SUPPRIMER DE . 459 Commande Supprimer . 1081, 1093 supprimé. 869, 914 SUPPRIMÉ-Tabelle . 469, 584, 642 DeleteObject-Méthode . 1218 Dénormalisation . 100 DENSE_RANK-Fonction . 906 DENSE_RANK-Méthode . 907 REFUSER . 488 Tableau détaillé . 380

DetectChanges-Methode . 1267 Édition développeur . 38 Dienst . 107, 147, 629 Dienstendpunkt . 629 Diensthauptschlüssel . 350 Dienstkonto . 44 DIFFÉRENCE . 264 RépertoireInfo-Klasse . 842 DÉCLENCHEUR DE DÉSACTIVATION . SUR . 588 administrateur de disque . 483 Distinct. 183, 1134 Division . 174 DLL-Dateien-Benennung . 787 DML . 164, 579 DML-Anweisung . 596, 730 Déclencheur DML . 579, 587, 605, 867 programmes . 581 Documentation et communauté . 137 Domänenkonto . 44 Doppelt verkettete Liste . 680 DQL . 164 GOUTTE . 601 LAISSER LA COLONNE . 373 SUPPRIMER LA BASE DE DONNÉES . 324 FONCTION DROP . 566, 574 INDICE DE PERTE . 694 PROCÉDURE DE LAISSE . 549 STATISTIQUES DE PERTE . 698 TABLE DE LAISSE . 373 DÉCLENCHEUR DE GOUTTE . 591 GÂCHETTE À GOUTTE . SUR TOUS LES SERVEURS. 604 DROP TYPE-Déclaration . 849 SUPPRIMER L'UTILISATEUR . 479 BAISSER LA VUE . 522 SUPPRIMER LA COLLECTE DE SCHÉMA XML . 936 DROP_EXISTING . 693 DTS . 107 Durabilité . 732 DYNAMIQUE . 644 Dynamische Management-View . 876 Dynamische SQL-Anweisung . 277 EXECUTER . 278 sp_executesql . 278

E avide de chargement. 1198, 1257 Ebène . 280 Editionsvergleich . 38 Propriété EdmScalar . 1169 Eigenschaften-Fenster . 134

Eigenständige Datenbank . 505 Besonderheiten der Benutzerverwaltung . 508 Durchführung der Konvertierung . 512 Erstellung . 506 Identifizierung . 507 Identifizierung von datenbankübergreifenden Elementen . 513 Configuration des serveurs . 505 Konvertierung . 511 Konvertierung von Benutzern . 513 Konzept . 505 Migrations . 514 Verbindungsaufbau . 509 Eingabeparameter verwenden . 536 Einschränkung . 374 activités. 385 activités actives . 385 Définition . 375 Définition auf Spaltenebene . 375 Définition auf Tabellenebene . 375 Eigenschaften . 376 löschen . 386 nachträgliche Définition . 384 verwalten. 384 Einzug vergrößern . 131 verkleinern . 131 ÉlémentAt . 1145 ÉlémentOuParDéfaut . 1145 ÉLÉMENTS . 952 ELSE-Zweig . 239 CHIFFREMENT . 555 FIN . 238 TERMINER L'ESSAI . 900 EndEdit (Méthode) . 1060 EndExecuteReader (Méthode) . 1019 Endlosschleife . 129 EnlistTransaction (Méthode) . 997 Édition Entreprise . 37 Entität . 71, 1155 Entitätsklasse . 1167 Entitätstyp . 71 Modèle de données d'entité . 1150 Entité SQL . 1199 EntityClient-Provider . 1174, 1205 EntityCollection . 1186 EntitéConnexion . 1172, 1206 EntityContainer . 1162, 1163 EntityDataReader . 1205 Clé d'entité . 1167, 1222, 1235

EntityKeyProperty . 1169 Entité-Relation-Diagramme . 102 EntitySet . 1162 État de l'entité . 1167, 1224, 1274 TypeEntité . 1163 Entrée-Méthode . 1258 Entscheidungstabelle mit PIVOT erstellen . 887 MOIS . 259, 263 EPSG (European Petroleum Survey Group) . 414 Nachfolge . 414 EPSG-Code . 414 ER-Diagramme . 102 Ereignisauswahl . 702 Ereignisbenachrichtigung . 629 auslösen . 634 empfangen . 634 erstellen. 633 Löschen von Objekten . 640 Ereignisgruppe . 604 Ergebnis. 132 à Datei. 130 en trame . 129 dans le texte. 130 Ergebnisbereich . 131 Erreur-Funktionen ERROR_LINE() . 287 ERROR_LINE-Fonction . 901 ERREUR_MESSAGE() . 287 ERROR_MESSAGE-Fonction . 901 ERROR_NUMBER() . 286 ERROR_NUMBER-Funktion . 901 ERREUR_PROCÉDURE() . 287 ERROR_PROCEDURE-Funktion . 901 ERROR_SEVERITY() . 287 ERROR_SEVERITY-Funktion . 901 ETAT_ERREUR() . 287 ERROR_STATE-Funktion . 901 Gestion des erreurs . 282 Erweiterte gespeicherte Prozedur . 792 Débogage . 792 Nachteile . 792 eSQL . 1173 European Petroleum Survey Group . 414 Édition d'évaluation . 37 Notifications d'événements/ Ereignisbenachrichtigung . 629 EventData-Eigenschaft . 871 Paramètre d'événement . 868 Excel. 314

À l'exception . 222, 223, 1136 EXCEPT-Déclaration . 917 Serrure exclusive . 744 EXÉCUTIF . 124 EXECUTER . 124, 278, 533 EXÉCUTER COMME . 560, 784 Nom Benutzer . 561 APPELANT . 560 PROPRIÉTAIRE . 561 SOI. 560 ExecuteAndSend()-Méthode . 833, 869 ExecuteNonQuery (Méthode) . 1002 ExecuteReader (Méthode) . 1002 ExecuteScalar (Méthode) . 1002 ExecuteStoreCommand-Méthode . 1210 ExecuteStoreQuery-Méthode . 1210 existent() . 940 Exklusionsverknüpfung . 305 Exklusiv-ODER-Funktion . 348 Chargement explicite . 1258 EXPLICITE-Modus . 960 Explizite Konvertierung . 269 ​​Édition express . 38 Datenbankgröße maximale . 38 EXTERNE . 836 ACCÈS_EXTERNE . 803, 812

F Usine-Méthode . 1214 Fallunterscheidung . 248 CAS . 248 ISNULL . 255 Farbcodierung . 123 Blau. 123 Dunkelgrau. 124 Dunkelgrün . 124 Grün . 124 Magenta . 124 Pourriture . 124 Rotbraun. 124 Fehler. 291 abbruchverursachender . 291 benutzerdefinierter . 291 is_event_logged-Parameter . 282 sévérité-Paramètre . 281 paramètre-texte . 282 Fehler auslösen . 904 avec Paramètren . 295 programmgesteuert . 294 RAISERROR-Fonction . 904

Fehlerbehandlung . 282, 899 @@ERREUR . 282 Funktionen zur . 286 ESSAYER… ATTRAPER . 282 verschachtelte . 905 Fehlermeldung . 279 Ébène. 280 Meldung. 280 Meldungstext. 281 État . 280 Struktur. 279 Zeile. 281 Fehlernummer . 300 Festkommazahl . 167 RÉCUPÉRER . 215 RÉCUPÉRER . DE . 646 Fibre . 796 CROISSANCE DE FICHIER . 316, 319, 323 NOM DE FICHIER . 316, 318, 323 FILESTREAM . 45, 362, 397 Aktivierung auf Serverebene . 397 Aktivierung einer Instanz . 363 Dateigruppe . 367, 398 SUPPRIMER . 370 Empfehlungen . 363 filestream_access_level . 398 pour Transact-SQL-Zugriff aktivieren . 364 GUID-Spalte . 368 INSÉRER . 369 Configuration einer Datenbank . 366 nachträgliche Konfiguration einer Datenbank . 368 SÉLECTIONNER . 369 Speicherung von FILESTREAM-Daten . 368 Streamingzugriff von Remoteclients auf FILESTREAM . 365 Tabelledéfinition . 368 unverschlüsselte Speicherung von FILESTREAM-Daten . 363 MISE À JOUR . 370 Windows-Freigabe . 398 Zugriff auf FILESTREAM-Daten mit Transact-SQL . 369 Table de fichiers . 397 Assembler le nom de fichier (optionnel) . 400 CRÉER UN TABLEAU . COMME FILETABLE . 400 Darstellung im Objekt-Explorer . 401 database_default . 401 Répertoire (Option) . 400 DIRECTORY_NAME (optionnel) . 399 Erstellung . 400

FileTable (Forts.) Erstellung einer Datenbank zur Verwendung von FileT . 399 nom_fichier . 402 type_fichier . 402 NOM DE CONTRAINTE UNIQUE CHEMIN PLEIN . 401 Inhalt im Windows-Explorer . 403 is_archive . 402 est_répertoire . 402 est_caché . 402 nicht transaktionaler Zugriff . 398 nicht transaktionaler Zugriff COMPLET . 399 nicht transaktionaler Zugriff OFF . 399 nicht transaktionaler Zugriff LECTURE SEULEMENT . 399 NON_TRANSACTED_ACCESS (Option) . 399 parent_path_locator . 404 path_locator . 404 NOM DE LA CONTRAINTE DE CLÉ PRIMAIRE . 400 Sichten. 404 NOM DE LA CONTRAINTE UNIQUE STREAMID . 400 Struktur . 402 Tabelleninhalt . 403 virtuelles Verzeichnis . 402 Voraussetzungen . 397 Windows-Freigabe pour FILESTREAM . 398 Zugriff auf . 402 Zugriff avec Windows Explorer . 402 Remplissage (Méthode) . 1034 Erreur de remplissage (Ereignis) . 1043 FACTEUR DE REMPLISSAGE . 688 FillRowMethodName-Parameter . 821, 828 FillSchema (Méthode) . 1052, 1056 enfin-Block . 840 Find_Methode, DbSet . 1253 Déclencher un déclencheur . 579 FireInfoMessageEventOnUserErrors . 995 Premier (Opérateur) . 648, 1142 Première méthode . 1180 FirstOrDefault . 1143 Méthode FirstOrDefault . 1180 flotteur. 167 fn_cdc_get_all_changes . 615, 617, 621 tous . 617 toutes les mises à jour anciennes. 618 fn_cdc_get_net_changes . 615, 618, 621 tous . 619 tous avec masque. 619 tous avec fusion. 620

POUR SUPPRIMER-Klausel . 870 POUR INSÉRER-Klausel . 870 POUR LA MISE À JOUR-Klausel . 870 POUR XML . 949 POUR XML-Klausel XMLDATA . 967 CLÉ ÉTRANGÈRE . 76, 581 FOREIGN KEY-Contraint . 374, 377, 1053 POUR-Klausel . 885 FORMAT . 275 Formateurung . 165 FORMATER MESSAGE . 301 Format-Paramètre . 844, 859 FORWARD_ONLY . 644, 648, 657 Fragmentierung . 690, 692 Fremdschlüssel . 76, 171 mit NULL-Zulässigkeit . 455 Fremdschlüsselverletzung . 76 de . 1120, 1122 Fonction. 1115 Fonction . 256 benutzerdefinierte . 794 bereitstellen . 822 CONCAT. 267 Datum/Uhrzeit . 257 Fehlerbehandlung . 286 IIF . 254 Configurations- . 257 Konvertierung . 268 mathématiques . 267 Statut . 268 Zeichenfolge . 263 zur Statusabfrage . 268 Funktionsauswahl . 42 Funktionskörper . 565

G Ganzzahl. 167 Collecteur d'ordures . 797 Steuerung . 797 Gebrochene Besitzerkette . 500 Indice Gefilterter . 713 Modus Gemischter . 111, 474 GEO84 . 434 Geodaten Ebenen der räumlichen Indizierung . 437 Erstellung von Indizes . 438 Index auf eine géographie-Spalte . 439 Index auf eine géométrie-Spalte . 440 Indizierung . 437 Rasterung einer Ebene . 438

Geodaten (Forts.) Unterschiede in der Indizierung . 438 Geodätischer Datentyp . 406 Langage de balisage géographique . 406, 407 géographie-Datentyp . 406 praktisches Beispiel . 433 Méthodes géométriques . 420 GeometryCollection . 413 géométrie-Datentyp . 406 Georeferenzierung . 434 Gespeicherte Prozedur . 531, 794, 812 Anzeige der Paramètre . 544 Paramètre Ausgabe . 545 Eingabeparameter . 536 CHIFFREMENT . 555 erstellen. 535 löschen . 549 Größe maximale . 533, 548 Paramètre anzahl maximal . 548 avec Visual Studio erstellen . 812 Optionen . 555 Performancegewinn . 533 positionsbezogène Übergabe . 540 Quelltext . 532 RECOMPILER . 558 RETOUR . 549 Rückgabestatuscode . 548 schützenswerter Algorithme . 555 systemintern kompilierte . 781 Tabellenübergabe . 553 verweisbezogène Übergabe . 542 GetAncestor-Methode . 448 GetChildRows . 1076 GETDATE . 259, 260 GetDescendant-Methode . 446 GetLevel-Méthode . 447 GetModifiedProperties . 1234 GetName (Méthode) . 1014 GetObjectByKey . 1235 GetOrdinal (Méthode) . 1012 GetParentRow . 1076, 1077 Get-PSDrive . 154 GetReparentedValue-Methode . 449 GetRoot-Méthode . 444 GetSchema (Méthode) . 997 GetSchemaTable (Méthode) . 1013 Gleitkommazahl . 167 Variable globale . 234 GML (langage de balisage géographique) . 406, 407

ALLER . 227, 535, 604 ALLER À . 246 GPS (Global Positioning System) . 405, 414 SUBVENTION . 488 SUBVENTION . AVEC OPTION DE SUBVENTION . 491 GROUPER PAR . 217 CUBES . 219, 222 ENSEMBLES DE GROUPEMENT . 219, 220 ENROULEMENT . 219, 221 GROUPER PAR … AVOIR . 218 Grouper par . 1129 GROUPEMENT ENSEMBLES-Opérateur . 219, 220 Rejoindre un groupe . 1133 Gruppierte Rangliste mit Windowing . 908 Invité . 498 Gültigkeitsbereich von Variablen . 233

H Hardwareserver . 66 HasErrors (Eigenschaft) . 1103 Fonction de hachage . 775 Hash-Index BUCKET_COUNT . 778 Hauptschlüssel Datenbank . 351 Dienst . 350 tas. 676, 680 Hierarchische Daten-Verarbeitung . 895 Hierarchischer Datentyp . 405, 441 Abbildung von Selbstreferenzierungen . 442 GetAncestor-Methode . 448 GetDescendant-Methode . 446 GetLevel-Méthode . 447 GetReparentedValue-Methode . 449 GetRoot-Méthode . 444 IsDescendantOf-Methode . 449 Méthode. 443 Méthode d'analyse . 445 Méthode de lecture . 450 ToString-Méthode . 443 unter T-SQL nicht unterstützte Methode . 450 Méthode d'écriture . 450 Hiérarchie . 404 Hilfeeinstellungen verwalten . 138 VERROUILLAGE . 756 Hôte . 796 Hébergement-API . 798 Couche d'hébergement . 799 HostProtection-Attribut . 801

Je I/O-Zugriff . 797 IBinarySerialize-Interface . 854, 863 Identitätswechsel . 561 IDENTITÉ . 356, 454, 600, 642 IDENTITYCOL . 357 Identité-Spalte . 356, 913 IEnumerable . 1117 IEnumerable-Interface . 825, 828 SI EXISTE . 241, 312 IFELSE . 238 SI-Zweig . 239 Code IL . 801 Impersonalisation . 803, 838 Ignorer-Méthode . 839 Implizite Konvertierung . 269 ​​EN . 196 Méthode d'inclusion . 1199 INCRÉMENT . 666 Index . 675 automatische Erstellung . 689 Arbre équilibré . 678 B-Baum . 678 Blattebene. 678, 683 B-Arbre . 678 regroupés. 676 magasin de colonnes . 717 durchlaufen . 679 erstellen. 686 Fragmentierung . 690, 692 Füllfaktor . 688 für speicheroptimierte Tabelle . 773 geeignete Spalten . 700 gefiltre. 713 gruppierter. 676, 680 Fonction de hachage . 775 Hash-Index . 774 Niveau feuille . 678 löschen . 694 manuelle Erstellung . 686 Neuerstellung . 693 nicht geeignete Spalten . 701 nicht gruppierter . 676 nicht gruppierter auf gruppiertem . 683 nicht gruppierter auf Heap . 676 nicht gruppierter Hash-Index . 776

Index (Forts.) oberste Seite . 678 Planung . 699 primärer . 946 racine. 678 Schlüsselwert . 678 page . 678 secondes. 947 Stamm/Wurzel . 678 Statistiques . 694 Struktur . 675, 677 Umwandlung . 682 Uniquificateur . 683 verwalten. 690 Indextype . 946 InfoMessage (Ereignis) . 832, 990 Informationsschemasicht . 529 Initialisation . 230 Méthode d'initialisation . 860 Inkonsistenz . 746 Incrément . 232 Fonction en ligne . 568, 572 In-Memory-ADO.NET-Datenprovider . 828 OLTP en mémoire . 763 JOINT INTERNE . 305 Umkehrung der Funktionsweise . 311 Jointures internes (EF) . 1190 Innere Verknüpfung . 305 INSÉRER . 451, 525, 527, 579, 730, 946 avec mehreren Datensätzen . 460 INSÉRER … SÉLECTIONNER . 462 INSÉRER DANS . LES VALEURS PAR DÉFAUT . 456 INSÉRER DANS . VALEURS . 451 InsérerCommande . 1081, 1093 inséré-Tabelle . 469, 584, 869, 914 Installation . 37, 40 Aktivierung von FILESTREAM . 45 Auswahl des Authentifizierungsmodus . 44 Beispieldatenbank . 48 benannte Instanz . 43 Centre . 39 Dienstkonten . 44 Festlegung eines Administrateurs . 44 Funktionsauswahl . 42 Instanzkonfiguration . 43 mehrfache . 43 Produktschlüssel . 40 Standardinstanz . 43 Systemkonfigurationsprüfung . 40 Volltextsuche . 42 zeitlich befristete Version . 40

Centre d'installation . 51 Installationsvoraussetzungen . 38 Matériel . 39 Composants logiciels . 38 Instanz . 108 benanente. 43 Norme- . 43, 108 Instanzkonfiguration . 43 AU LIEU DE-Trigger . 582, 591, 594, 867 Verwendung mit Sicht . 597 Option de sécurité intégrée . 842 Services d'intégration . 107 Integrität deklarative . 601 prozédurale . 601 Integritätsart . 86 benutzerdefinierte . 88 Domänen- . 87 Entitäts- . 87 référentiel . 87 IntelliSense . 139 Objektauswahl . 139 Vorschlag übernehmen . 139 Langue intermédiaire . 801 Organisation internationale de normalisation . 163 Interne Transaktionsverarbeitung . 734 INTERSECTION . 222, 224, 1135 INTERSECT-Déclaration . 917 INullable-Interface . 845 InvalidOperationException . 983 EST. 193 is_event_logged . 282 ISBN. 75, 93 IsByteOrdered-Parameter . 844 IsDescendantOf-Methode . 449 IsDeterministic-Parameter . 821, 851 IsFixedLength-Parameter . 844 IsInvariantToDuplicates-Parameter . 859 IsInvariantToNulls-Parameter . 860 IsInvariantToOrder-Parameter . 860 IsLoaded-Eigenschaft . 1259 IsMutator-Paramètre . 851 ISNULL . 255 Est Nullable . 1169 IsNullIfEmpty-Parameter . 860 IsNull-Méthode . 845 ISO . 163 iso_week . 257 Isolement . 732 Isolationsstufe auf Verbindungsebene . 745

Isolationsstufe (Forts.) Eigenschaften . 753 Informationen über . 754 LIRE ENGAGÉ . 748 LIRE SANS ENGAGEMENT . 746 LECTURE RÉPÉTABLE . 750 SÉRIALISABLES . 752 ISO-SQL-2003-Standard . 931 IsPrecise-Parameter . 822, 851 isql (Dienstprogramm) . 148 IsSendingResultsets-Eigenschaft . 838 ItemArray (Eigenschaft) . 1061 Itérateur . 825

J Jahr. 257 JIT-Image . 798 Rejoindre . 1131 JOIN-Opérateur . 303 JONCTION CROISÉE . 310 JOINT INTERNE . 305 JOINT EXTÉRIEUR GAUCHE . 308 mehrfache Anwendung . 309 JOINT EXTÉRIEUR . 308 JOINT EXTÉRIEUR DROIT . 308 Just-in-Time-Kompilierung . 798

K Kalenderwoche. 257 Produits Kartesisches . 310 Kennwort. 110 voix. 110 Kennzeihnung . 172 von Datums-/Uhrzeitwerten . 172 von Zahlenwerten. 172 von Zeichenketten. 172 Opérateur Klammer . 198 Klassenbibliothek . 808 Kombinierte Deklaration und Wertezuweisung . 231 Commentaire . 124, 173 Bloc-. 173 entfernen. 131 hinzufügen . 131 Zeilen- . 173 Kompatibilität festlegen . 879 Komplexe Eigenschaften . 1158 Fonction de configuration . 257 Configurations-Manager . 147

Konsistenz. Contexte. Konvertierung. explicite. implicite. Informationsverlust . Konvertierungsfunktion . Koordinaten kartesische . Polaire- . Koordinatenreferenzsystem . Koordinatenübergabe an räumlichen Datentyp . Kopfgesteuerte Schleife . Kopie bei Schreibvorgang. Kopie einer Tabelle. Kreuztabelle in flache Écoutez transformieren . mit PIVOT erstellen . Kreuzverknüpfung .

732 829 269 269 269 272 268 406 406 414 407 243 341 463 889 883 310

L Längengrad. 406 language_id . 281 Dernière . 648, 1144 LastOrDefault . 1144 Laufzeitinformationen . 876 Chargement différé . 1194, 1256 GAUCHE . 264 JOINT EXTÉRIEUR GAUCHE . 308 Jointures externes gauches (EF) . 1191 Leistungsindikator . 876, 877 LEN . 264 Lesezeichen . 144 activités. 145 activités actives . 145 à Ordner gruppieren . 146 löschen . 145 umbenennen . 145 umschalten. 144 Zugriff auf . 146 Lesezeichenfenster . 144 COMME . 196 LineString . 410 Linke äußere Verknüpfung . 308 LINQ . 1111 Liste, doppelt verkettete . 680 Lizenzvereinbarungen . 53 Charger DbSet . 1254 Charge-Méthode . 1197

(locale) . 110 Jeu de bases de données local . 1254 hôte local . 110 JOURNAL . 316 CONNEXION . 316 Numéro de séquence du journal . 614 Connexion . 474 logische Operatoren . 175 ET . 176 PAS . 176 OU . 176 Variable locale . 229, 234 Verwendung des Datentyps »table« . 574 LongCount . 1136 Connexion en boucle . 792 Löschweitergabe . 380, 460 INFÉRIEUR . 264 LSN . 614 LTRIM . 264

M m:n-Beziehung, Auflösung . 99 Code géré . 793, 795 Management Studio Abfrage-Designer . 135 Eigenschaften-Fenster . 134 Ergebnisbereich . 131 Lesezeichen . 144 Lesezeichenfenster . 144 Neue Abfrage . 123 Oberfläche . 111 Skript-Generierung . 143 verbes. 111 Vorlagen-Explorer . 140 Management-View, dynamische . 876 Langage de spécification de mappage . 1161, 1164 MARS (ensembles de résultats actifs multiples) . 1009 Massenkopieren . 470 bcp . 472 INSERT EN VRAC . 470 maître (Systemdatenbank) . 114 Mastertabelle . 380 CORRESPONDANT . 466 CORRESPONDANT PAR CIBLE . 466 Mathematische Funktionen . 267 max. 201, 1139 MaxByteSize-Parameter . 844, 859 MaxLength (Eigenschaft) . 1054 TAILLE MAX . 316, 319, 323 VALEUR MAX . 669

Mehrfache JOIN-Anweisungen . 309 Mehrtabellenabfrage . 303 Meldung . 280 Meldungen. 132 Meldungstext . 281 Mengenlehre . 67 Mercator-Projektion . 436 MERGE-Anweisung . 464 abschließendes Semikolon . 465 Ausgabeparameter von OUTPUT . 469 supprimé-Tabelle . 469 Filterung in der ON-Klausel . 468 Filterung in der WHEN-Klausel . 469 Filterung von Datensätzen . 468 Grundlagen. 464 inséré-Tabelle . 469 CORRESPONDANT . 466 CORRESPONDANT PAR CIBLE . 466 NON CORRESPONDANT À LA SOURCE . 466 ACTIVÉ . 464 SORTIE-Klausel . 469 Quelltabelle . 464 ALORS-Klausel . 464 UTILISATION . 464 Verknüpfungsbedingung . 464 Zieltabelle . 464 Méthode de fusion . 860 Option de fusion . 1226 Message . 288 id_message . 281 Methodenüberladung . 809 Microsoft.SqlServer.Server-Namespace . 815, 821, 830 Millisekunde . 258 min. 202, 1139 Minutes . 258 VALEUR MIN . 670 Mise en miroir . 348 MissingMappingAction (Eigenschaft) . 1042 MissingMappingAction (énumération) . 1043 MissingSchemaAction (Eigenschaft) . 1052 MissingSchemaAction (énumération) . 1058 M-Méthode . modèle 419. modèle 323 (Systemdatenbank) . 115 modèle-Datenbank . 319 MODIFIER LE FICHIER . 329 modifier() . 941 Modulo-Division . 174 Modus, gemischter . 474

Momentaufnahme erstellen . 337 Verwaltung interne . 340 mit mehreren Dateien . 343 Monat. 257 argent. 167, 168 MOIS . 257, 258, 260 m-Paramètre (räumlicher Datentyp) . 408 mscorlib.dll . 800 msdb (Systemdatenbank) . 115 MSL . 1161, 1164 MultiLineString . 410 Multiplication . 174 Multipoint . 409 Mutateur-Méthode . 852

N NOM . 316, 318, 323 Nom vollgekennzeichneter . 313 vollqualifizierter . 313, 501 Namensauflösung, verzögerte . 558 Nom-Paramètre . 822, 844, 860, 868 Espace de noms . 933 Serialisierung natif . 853 Propriété de navigation . 1164 Navigationseigenschaft . 1158, 1184 nchar(n) . 167, 169 NET 2.0 . Chargeur d'assemblage 797 NET . 801 NET-Assemblage . 795 NET-Runtime . 796 NET-Speichermanagement . 796 NET-Threadpool . 797 NET-Typen . 843 Netzwerkserver . 109 Neue Abfrage . 123 Neue Ablaufverfolgung . 702 Neustart . 115 NewRow (Méthode) . 1062 SUIVANT. 648 VALEUR SUIVANTE . 665 NextResult (Méthode) . 1011 NICHT . 176 Nicht gruppierter Hash-Index . 776 CONTRAINTE NOCHECK . 385 CONTRAINTE NOCHECK TOUS . 386 nœuds() . 941 Table de nœuds . 946 NOLOCK . 756

NON-CLUSTER. 676, 687, 689 Forme normale . 90 Normalisation . 89 praktische Anwendung . 97 Normalisierungsregel . 90 1. Forme normale . 91 2. Forme normale . 94 3. Forme normale . 95 Northwind-Beispieldatenbank . 441 PAS. 176, 177, 193 NON CORRESPONDANT À LA SOURCE . 466 NTFS-Dateisystem . 363 Fonction NTILE . 906 NTILE-Méthode . 912 NULL. 193, 231, 453, 541 Null-Eigenschaft . 845 NULL-Wert . 810, 913 optimierte Speicherung . 358 NULL-Zulässigkeit . 354 Numéro . 288 numérique. 167, 168 nvarchar(n) . 167, 169

O O/R-Mapper . 843 Services d'objets . 1173 OBJECT_ID-Fonction . 556, 691 ObjectContext . 1171, 1211 Requête d'objet . 1180 Mappage relationnel objet . 1149 Jeu d'objets . 1177 ObjectStateEntry . 1222, 1229 ObjectStateManager . 1222 Objektberechtigung . 488 Explorateur d'objets . 112 Objektverwaltung . 500, 501 ODBC. 792 ODER-Verknüpfung . 176 Office-Document . 932 DÉCALAGE . 215 OGC (Open Geospatial Consortium) . 405 OLAP . 106 OLE DB . 792 Commande OleDb . 999 ON . 306, 316, 362, 464 SUR SUPPRESSION . 381 EN MISE À JOUR . 381 Traitement analytique en ligne . 107 Banque en ligne . 75 OnNullCall-Parameter . 851

Ouvrir (Méthode) . 645, 982 Consortium géospatial ouvert . 405 OPENXML ein XML-Dokument in eine Tabelle importieren . 969 OPENXML-Rowset-Provider . 968 sp_xml_preparedocument . 968 sp_xml_removedocument . 970 OPENXML-Abfragen . 917 Opérateur . 124, 173 arithmétique. 174 Auswahl. 192 logischer. 175 Vergleich. 174 Verknüpfung . 303 Zeichenkette . 174 Operatorenrangfolge . 176, 190 OPG (Association des producteurs de pétrole et de gaz) . 414 Optimierungsratgeber . 701 OPTIMISTE . 644 Exception de concurrence optimiste . 1246 OPTION (MAXRECURSION X) . 898 OU . 176, 177 Oracle. 107, 163, 165, 314, 741 ORDRE PAR-Klausel . 184 Trier par . 1127 Ordre par ordre décroissant . 1127 Commandes.dll . 802 osql (programme Dienst) . 148 EXTERNE APPLY-Déclaration . 881 JOINT EXTÉRIEUR . 308, 880 SORTIE . 469, 545 Ausgabeparamètre . 469 SORTIE-Klausel . 913, 914 SORTIE-Paramètre . 817 OVER-Klausel . 908

P PacketSize (Eigenschaft) . 995 PAD_INDEX . 688 pages . 676 Paging . 215 avec ROW_NUMBER . 910 Téléappel (EF) . 1182 PAGLOCK . 756 Parallélité . 746 Paramètre . 810 ParameterDirection (énumération) . 1030 Paramètres-Auflistung . 1016

Parametrisierte Sicht . 570 Parität . 348 Méthode d'analyse . 416, 445, 845, 846 Aufruf (explication) . 416 Aufruf (implificateur) . 417 CLOISON BY-Klausel . 909 Partitionierung . 389 Partitionierungsspalte . 390 Fonction partitions . 390 Schéma des partitions . 392 CHEMIN-Index . 264, 265, 947 PATH-Modus . 958 Performances . 843 Compteur de performances . 877 PERMISSION_SET-Paramètre . 803 Numéro personnel . 75 Physischer Speicherort . 362, 683 Tuyau . 830 PIVOT-Anweisung . 883 pointe . 408 Polarkoordinaten . 406 Polygone . 411 mit nicht geschlossener Fläche . 412 Poste . 678 Positions en absolu . 652 parent. 652 Placesmarke . 641 PUISSANCE . 268 Primäre Datendatei . 316, 318 Index Primärer . 946 Primärschlüssel . 72, 171 Eindeutigkeit . 72 combiniers . 72 Vorhandensein . 75 Wahl eines . 73 Primärschlüsselverletzung . 72 PRIMAIRE . 317, 362 CLÉ PRIMAIRE . 72, 577, 689, 1054 PRIMARY KEY-Contraint . 374, 376 IMPRESSION . 126, 225, 269, 284, 287 AVANT . 648 Procédure-Objekt . 808 administrateur de processus . 483 Produktivumgebung . 147 Profileur . 701, 876 Programmcode farbige Markierung . 123 Programmgesteuerte Fehlerauslösung . 294 Projection . 180, 1179 PropertyChanged . 1168

Modification de propriété . 1168 PROPRIÉTÉ-Index . 947 Protokoll . 86, 734 Protokolldatei . 316, 317, 318 ProviderManifestToken . 1162 ProviderToken . 1162 Prozedur. 287 avec le débogage de Visual Studio . 819 temporaires . 817 contre Funktion. 807 Prozedurale Integrität . 601 Prozessorauslastung . 115 publics . 484 pubs (Beispieldatenbank) . 90 Pufferüberlauf . 799

Q Quartal . 257 trimestre. 257 Quelltabelle . 464 Interopérabilité des requêtes . 781 Optimiseur de requête . 893 requête() . 940 Moteur de requête . 825, 915 Méthode de requête . 1261 File d'attente . 630

R Système RAID . 346 RAID 0 . 346 RAID 1 . 347 RAID 3 . 348 RAID5 . 349 RAISERREUR . 294, 295 RAISERROR-Funktion . 904 RAND. 267 RANG-Fonction . 906 Ranking- und Windowing-Funktionen . 906 RANK-Méthode . 906 Räumlicher Datentyp . 405 allgemeine Verwendung . 417 géographie . 406 méthodes géométriques . 420 géométrie . 406 GeometryCollection . 413 grundlegende Techniken . 414 Klassenmodell. 407 Koordinatenübergabe . 407 LineString . 410

Räumlicher Datentyp (Forts.) Methoden zur Abfrage von Eigenschaften . Methoden zur Auswahl einzelner Objekte . Methoden zur Koordinatenrückgabe . Methoden zur Verarbeitung . M-Méthode . m-Paramètre . MultiLineString . Multipoint. Méthode d'analyse . Indiquer . Polygone. Reiter. ID de référence spatiale . SRID. STArea-Méthode . STCentroid-Méthode . STContains-Methode . STCrosses-Méthode . Méthode STDimension . STEndPoint-Méthode . STEnvelope-Méthode . STGeometryN-Méthode . STGeometryType-Methode . STGeomFromText-Méthode . STIntersection-Méthode . STIntersects-Méthode . Méthode STIsClosed . STIsSimple-Méthode . STLength-Méthode . STNumGeometries-Méthode . STNumPoints-Méthode . STPointN-Méthode . Méthode STPointOnSurface . Méthode STSrid . STStartPoint-Méthode . Méthode STSymDifference . STTouches-Méthode . STUnion-Méthode . STWithin-Methode . Méthode STX . Méthode STY . ToString-Methode . Verwendung als Spaltendatentyp . Méthode Z. z-Paramètre . Räumlicher Index auf eine géographie-Spalte . auf eine géométrie-Spalte .

426 426 419 418 419 408 410 409 416 408 411 415 414 414 420 420 423 422 428 426 422 428 428 414 424 424 421 421 420 429 427 427 421 428 426 425 422 425 423 419 419 415 417 419 408 439 440

Index Räumlicher (Forts.) Erstellung . 438 Mode RAW . 951 SGBDR . 84 Lire (Méthode) . 1007 LECTURE_SEULEMENT . 644 RÉENGAGÉ . 756 Méthode de lecture . 450 Lecture seule (Eigenschaft) . 554, 1054 READUNCOMMITTED . 756 réel. 167 RECEVOIR . 634 Rechte. 482 Rechte äußere Verknüpfung . 308 Rechtevergabe. 490 un Benutzer und Rollen . 487 RECOMPILER . 558 RECONFIGURER . 366, 807 Jeu d'enregistrements . 132 leres . 132 Redondance . 67 Überprüfung auf . 99 Vermeidung von . 68 Référence-Méthode . 1259 Rafraîchir . 1248 Regulärer Ausdruck . 793 Regulärer Bezeichner . 166 Reiter . 123, 144 Ergebnisse . 132 Meldungen . 132 räumliche Ergebnisse . 415 Rejeter les modifications . 1070, 1076 Rekursionsstufe einstellen . 898 Relation . 67, 70 Type de relations . 71 PARENT n . 648 Appel de procédure à distance . 850 DbSet de méthode de suppression . 1263 Option REPEATIBLE . 916 LECTURE RÉPÉTABLE . 756 remplacer la valeur de . 946 Fonction REMPLACER . 889 Services de rapports . 107 Modification de la propriété du rapport . 1169 Modification de la propriété du rapport . 1169 ResetStatistics (Méthode) . 997 Centre de ressources . 138 REDÉMARRER . 669 RécupérerStatistiques (Méthode) . 997 RETOUR . 246, 549

RETOUR . 565, 569 RENVOIE NULL SUR NULL INPUT-Option . 823 RETOUR-Déclaration . 905 Inverser . 264, 1129 RETOURNER . 561 RÉVOQUER . 488 DROITE. 264 JOINT EXTÉRIEUR DROIT . 308 Jointure externe droite (EF) . 1192 TRANSACTION DE RETOUR . 738 Déclaration ROLLBACK . 903 Rolle. 481 Benutzer hinzufügen . 486 Datenbank-, benutzerdefinierte . 484 Datenbank-, fête . 483 erstellen . 484 Serveur . 482 Opérateur ROLLUP . 219, 221 RACINE . 953 RONDE . 267 Parcours . 632 constructeur de lignes . 460 ROW_NUMBER-Fonction . 906 ROW_NUMBER-Méthode . 909, 910 RowChanged (Ereignis) . 1060 Changement de ligne (Ereignis) . 1060 ROWLOCK . 756 État de ligne (Eigenschaft) . 1065 LigneMise à jour . 1104 Mise à jour de la ligne . 1104 RPC . 850 RTRIM . 264 Rückgabecode . 549 Rückgabedatentyp . 564 Rückgabestatuscode verwenden . 548 Rückgabewert . 810 Règle (Énumération) . 1076

S s (Platzhalter) . 296 SR . 803, 812 sa-Konto . 802 SaveChanges-Méthode . 1213, 1268 Schéma . 473, 499, 935 erstellen . 501 Standardschema zuweisen . 502 RELIURE DE SCHEMA . 783 Collection de schémas . 935 Schemainformationen . 1050 SchemaType (énumération) . 1057

Schleife. 243 Schleifenbedingung . 243 Schleifenende . 244 Schleifenkopf . 244 Schleifenkörper . 243 Schlüssel . 71 Fremdschlüssel . 76 Primärschlüssel . 72 Symbole Schlüssel . 171 Schlüsselwort . 123 Schriftart. 125 Algorithme de Schützenswerter . 555 Schweregrad. 300 DÉFILEMENT. 644 SCROLL_LOCKS . 644 secondes. 258 securityadmin . 483 Gestion de la sécurité . 796 page . 676 Numéro de page . 678 Seitenteilung . 681 Seitenweises Abrufen von Datensätzen . 215 Sekundäre Datendatei . 317, 318 Index Sekundärer . 947 Sekunde. 258 Selbstreferenzierung . 441 sélectionner . 1120 CHOISIR . DANS . 462 SÉLECTIONNER … DE . 178 Sélectionnez (Méthode) . 1088 SELECT-Anweisung . 178 * (Platzhalter) . 179 AS. 180 Berechnete Spalte . 181 DISTINCT . 183 Einbindung mehrerer Tabellen . 303 GROUPE PAR … HAVING-Klausel . 218 GROUPE BY-Klausel . 217 COMMANDE PAR-Klausel . 184 Spaltenliste . 179 HAUT . 212 HAUT (n) . 212 HAUT (n) POURCENTAGE . 213 HAUT (n) AVEC CRAVATES . 214 UNION . 210 O-Klausel . 187 Commande de sélection (Eigenschaft) . 1033 Sélectionner plusieurs . 1127 Opérateur de sélection . 1126 Sélection . 188 Méthode d'envoi . 831

SendResultsEnd-Methode . 834, 842 SendResultsRow-Methode . 834 SendResultsStart-Methode . 834, 841 Sequenz . 1176 Abruf einzelner Werte . 665 Abruf von Werten . 664 Anfordern eines Wertebereichs . 665 AS . 666 CACHE. 671 CYCLE . 670 Darstellung im Objekt-Explorer . 664 Erstellung . 663 Festlegung der Schrittweite . 667 Festlegung des Datentyps . 666 Festlegung des Maximalwerts . 669 Festlegung des Startwerts . 667 Festlegung eines Minimalwerts . 670 INCRÉMENT . 666 Informationen zu . 664 Leistungsoptimierung . 671 VALEURMAX . 669 VALEUR MIN . 670 Neustart . 669 VALEUR SUIVANTE . 665 REDÉMARRER . 669 sp_sequence_get_range . 665 Standardeinstellungen . 663 DÉMARRAGE . 666 sys.séquences . 664 zyklisches Durchlaufen . 670 Séquenzen . 663 Serialisierung . 853 benutzerdefinierte . 854 natifs. 853 SÉRIALISABLE . 756 Attribut sérialisable . 845 Serveur . 65 Ressourcen . 66 verfügbarer . 109 Objets de gestion de serveur . 880 administrateur du serveur . 483 Servereigenschaften . 112 Nom du serveur . 108, 110 Suche fortetzen . 108 Serveur . 482 Type de serveur . 106 Services d'analyse . 106 Datenbankmodule . 106 Services d'intégration . 107 Services de rapports . 107 ServerVersion (Eigenschaft) . 995

Service . 629 Courtier de services . 630 activités. 636 Aktivierungsprozedur . 636 Datenbankkonfiguration . 630 interne Aktivierung . 636 Modifizierung der Warteschlange . 639 ENSEMBLE. 230 SET DEADLOCK_PRIORITY . 759 FIXER TRANSACTIONS_IMPLICITES . 741 SET LOCK_TIMEOUT . 755 RÉGLER LE NIVEAU D'ISOLEMENT DE LA TRANSACTION . 746 SetAdded (Méthode) . 1070 SetModified (Méthode) . 1070 Déclaration SET . 849 administrateur de configuration . 483 gravité . 281, 288, 904 Shape2SQL.exe . 434 Verrou partagé . 744 Sicherheitshierarchie . 473 Sicherheitsrichtlinien . 799 Sicht. 517 ändern . 522 Daten manipulieren . 597 Datenmanipulation auf . 523 SUPPRIMER auf . 526, 528 Einsatz . 518 Einschränkungen . 520 erstellen . 520 im Objektkatakog . 521 Schéma d'informations- . 529 INSÉRER auf . 524, 525, 527 löschen . 522 parametrisierte . 570 Système- . 528 MISE À JOUR auf . 526, 528 Verwaltung . 520 Unique . 1144 Méthode unique . 1180 UniqueOuParDéfaut . 1144 SingleOrDefault-Méthode . 1180 TAILLE. 316, 319, 323 Skalar . 564 Fonction CLR de Skalare . 820, 823 erstellen . 823 Skalare Eigenschaften . 1156 Skalarwertfunktion . 564, 573 Passer . 1141 SauterPendant que . 1141 Script . 123 Skript-Generierung . 143

petitedateheure. 167, 168 smallint . 167 petite monnaie . 167, 168 SMO . 880 Serveur logiciel . 66 Sortie . 777 verschachtelte . 186 SOURCE . 464 SourceColonne (Eigenschaft) . 1094 SourceVersion (Eigenschaft) . 1094 sp_add_operator . 542 sp_addlinkedserver . 314 sp_addmessage . 292 sp_addrolemember . 486, 531 sp_cdc_enable_db . 609 sp_configure . 366, 398, 807 sp_dbcmplevel . 879 sp_dropmessage . 302 sp_executesql . 278 sp_help . 336 sp_helpdb . 322, 336 sp_helpfile . 336 sp_helpindex . 690 sp_helptext . 555 sp_recompile . 559 sp_sequence_get_range . 665 sp_spaceused . 337, 359 sp_xml_preparedocument . 968 sp_xml_removedocument . 970 ESPACE . 264 Spalte berechnete . 181, 355 Définition . 353 geringe Dichte . 359 hinzufügen . 371 Identitätspalte . 356 löschen . 373 NULL-Zulässigkeit . 354 Spaltenalias . 180 Spaltenddéfinition . 353 Spalteneigenschaft ist von geringer Dichte . 360 ÉPARGNE. 358 Spaltname . 70 ÉPARGNE . 358 Empfehlungen . 361 Identifiant de référence spatiale . 414 Speicherkorruption . 799 Gestion Speicher . 797 Speicheroptimierte Tabelle . 763 Beständigkeit . 764

Speicheroptimierte Tabelle (Forts.) Erdtellung eines Hash-Index . 776 Erstellung . 769 Erstellung für beständige Inhalte . 769 Erstellung für nicht beständige Inhalte . 771 Festlegen der Isolationsstufe . 768 Grundlagen. 763 Hash-Index . 774 Hinzufügen der Datei . 767 Hinzufügen der Dateigruppe . 766 Indexarten . 774 Indizierung . 773 Informationen zu vorhandenen Indes . 779 Konfiguration der Datenbank . 765 mit beständigen Inhalten . 765 mit nicht beständigen Inhalten . 765 Speicherort der DLL-Dateien . 787 Vergleich des Verhaltens . 772 Speicherort, physischer . 362, 683 Speicherung spaltenbasiert . 719 zeilenbasiert . 718 Speicherverwaltung . 795 Speicherwarnung . 797 Sperre. Bloc 743 . 743 Banque de date. 743 Datensatz/Schlüssel . 743 Ébène. 743 Serrure exclusive . 744 gemeinsame . 744 Hinweise auf Tabellenebene . 755 Informations über . 757 page . 743 Verrouillage partagé . 744 Tabelle . 743 Délai d'attente . 754 Sperrstufe einer Verbindung . 754 Synchronisation de broche . 349 Sprungmarke . 247 SQL . 163 Bezeichner. 165 Formatierung . 165 SQL Edition 2014, Gegenüberstellung von . 38 Injection SQL . 531 SQL Server (Dienst) . 147 SQL Server 2005 Aktualisierung von SQL Server 2005 . 51

SQL Server 2008 Aktualisierung von SQL Server 2008 . 51 IntelliSense . 139 SQL Server 2008 R2 Aktualisation de SQL Server 2008 R2 . 51 Administrateur SQL Server 2014 . 44 Aktualisierung auf . 37, 51 Aktualisierung von . 51 Beispieldatenbank . 48 benannte Instanz . 43 Datentypen . 70 Dienstkonten . 44 Documentation . 137 Editionsvergleich . 38 Hilfe zu . 137 Montage . 37, 39 Installationsvoraussetzungen . 38 Standardinstanz . 43 Conseiller de mise à niveau . 54 verfügbare Versionen . 37 SQL Server 2014 Édition Azure . 38 Compacte . 38 Développeur . 38 Entreprise . 37 Évaluation . 37 Express . 38 Norme . 37 Web . 38 SQL Server 2014 R2 zu Aktualisierende Instanz . 51 SQL Server 7.0 . 106, 107 Services d'intégration SQL Server . 107 Générateur de profils SQL Server . 701 identificateur_sql . 935 SQL-99-Standard . 884, 892 SQL-Abfrage-Editor . 122 SQL-Anweisung . 122 oursbeiten. 122 SqlBinary . 811 SqlBoolean . 811 SqlByte . 811 SqlClient-Provider . 975 SQLCLR . 791, 807 Verwendung . 794 sqlcmd (Dienstprogramm) . 148 Abfrage ausführen . 150 Paramètre . 148 Outil sqlcmd . 819

Commande Sql. 999 SqlCommand-Klasse . 829, 833 SqlConnection . 976 SqlConnection-Classe . 829, 832 SqlConnectionStringBuilder . 981 SqlContext-Klasse . 829, 830, 839, 868 SqlDataAdapter . 999, 1030 SqlDataAdapter-Klasse . 829, 858 SqlDataReader . 999, 1005 SqlDataReader-Klasse . 831 SqlDataRecord-Klasse . 835 SqlDateTime . 811 SqlDecimal . 811 SqlDouble . 811 SqlException . 1017 SqlFunction-Attribut . 821, 828 SqlGuid . 811 SqlInfoMessageEventHandler . 832 SqlInt16 . 811 SqlInt32 . 811 SqlInt64 . 811 SqlMetaData-Klasse . 841 SqlMethod-Attribut . 851 SqlMoney . 811 SqlParameter . 1016, 1018 SqlParameter-Klasse . 829 SqlPipe-Klasse . 829, 830, 834 SqlPipe-Objekt . 820 SqlProcedure-Attribut . 808, 816 sqlps . 153 SqlRowUpdatedEventArgs . 1105 SQL-Server-Aktivitätsmonitor . 158 SQL-Server-Browser . 147 SQL-Server-Cmdlet . 157 SQL-Server-Datentypen . 843 SQL-Server-Dienst . 147 Serveur SQL . 147 SQL-Server-Agent . 147 SQL-Server-Navigateur . 147 SQL-Server-Konfigurations-Manager . 147 SQL-Server-Profiler-Ereignis . 876 SqlSingle . 811 SqlString . 811 SqlTrigger-Attribut . 867 SqlTriggerContext-Klasse . 829 SqlTypes.SqlXml-Klasse . 871 SqlUserDefinedAggregate-Attribut . 859, 863 SqlUserDefinedType-Attribut . 844, 850 CARRÉ . 268 SRID (ID de référence spatiale) . 414, 434, 435 SSDL . 1161

SSIS. 107 Édition standard . 37 Standarddateigruppe . 362 Banque Standarddaten . 125 Standardinstanz . 43 Agrafe . 233 Stapeltrennzeichen . 227 Méthode STArea . 420 DÉMARRAGE . 666 État (Eigenschaft) . 288, 983 Changement d'État (Ereignis) . 992 Etat-Eigenschaft . 1274 STATIQUE . 644 StatisticsEnabled (Eigenschaft) . 996 Statistiques . 694 Aktualisieren . 698 automatisch aktualisieren . 695 erstellen automatiques . 695 Erstellung . 697 Informationen abrufen . 698 Informationen über . 696 löschen . 698 Statistische Werte . 697 Statut . 280 Code d'état . 549 STCentroid-Méthode . 420 STContains-Méthode . 423 STCrosses-Méthode . 422 Méthode STDimension . 428 STEndPoint-Méthode . 426 STEnvelope-Méthode . 422 STGeometryN-Méthode . 428 STGeometryType-Méthode . 428 STGeomFromText-Méthode . 414 STIntersection-Méthode . 424 STIntersects-Méthode . 424 STIs-Méthode Fermée . 421 STIsSimple-Méthode . 421 STLength-Méthode . 420 STNumGeometries-Méthode . 429 STNumPoints-Méthode . 427 Langage de définition de schéma de stockage . 1161 Procédure stockée . 531, 794 StoreWins. 1246 STPointN-Méthode . 427 Méthode STPointOnSurface . 421 Fonction de diffusion en continu . 825 chaîne . 124 Rayures . 347 nom fort. 798 Langage de requête anglais structuré . 163

Langage de requêtes structurées . 163 Méthode STSrid . 428 STStartPoint-Méthode . 426 STSymDifference-Méthode . 425 STTouches-Méthode . 422 Stunde. 258 STUnion-Méthode . 425 STWithin-Methode . 423 Méthode STX . 419 Méthode STY . 419 SOUS-CHAINE . 264 Soustraction . 174 Suche fortetzen . 108 Somme . 201, 1137 Syntaxprüfung . 129 sys.assemblies_modules-View . 874 sys.assemblies-View . 874 sys.assembly_files-View . 874 sys.assembly_types-View . 874 bases de données sys. 609, 691 sys.dm_clr_appdomains-View . 876 sys.dm_clr_loaded_assemblies-View . 876 sys.dm_clr_properties-View . 876 sys.dm_clr_tasks-View . 876 sys.dm_db_index_physical_stats . 691 sys.dm_tran_locks . 757 sys.fn_cdc_get_max_lsn . 617 sys.fn_cdc_get_min_lsn . 617 sys.fn_cdc_increment_lsn . 620 sys.fn_cdc_map_time_to_lsn . 621 sys.objects . 691 sys.séquences . 664 sys.sp_cdc_enable_table . 610 sys.sp_cdc_generate_wrapper_function . 622 sys.sql_modules . 555 sys.stats . 699 sys.triggers-View . 874 sys.types-View . 849 sys.xml_schema_collections . 937 sys.xml_schema_namespaces . 937 administrateur système . 483 Administrateur système (sa) . Système 497.* . 800 system.data.dll . 800 System.Data.SqlClient-Namespace . 829 System.Data.SqlServer-Namespace . 829 System.Data.SqlTypes . 816 System.Data.SqlTypes-Namespace . 810 system.dll . 800 Dessin.Système . 801 system.security.dll . 800

System.Security.Principal.WindowsIdentity-Klasse . 839 System.Security.Principal.WindowsImpersonationContext-Klasse . 839 System.Web . 801 system.web.services.dll . 800 System.Windows.Forms . 801 system.xml.dll . 800 assemblages système . 798 SystemDataAccess-Paramètre . 822 Systemdatenbank . 113 maître. 114 modèle. 115 msdb . 115 tempdb . 115 Systemdatentypen . 166 Systemfehler, Verhalten bei . 735 Fonction système . 124 Systemintern kompilierte gespeicherte Prozedur . 781 ändern . 787 Demonstration der Optionen ATOMIC et LANGUAGE . 785 DLL . 781 Erstellung . 782 Erstellung für lesenden Zugriff . 784 Option ATOMIQUE . 784 Option EXECUTER COMME . 784 Langue des options . 784 Option NATIVE_COMPILATION . 783 Option RELIURE DE SCHEMA . 783 Option NIVEAU D'ISOLEMENT DES TRANSACTIONS . 784 Interopérabilité des requêtes . 781 Speicherot der DLL-Dateien . 787 Verwendung von . 781 Systemkonfigurationsprüfung . 40 Systemobjekt . 124 Systemprozedur . 124 Systemsicht . 115, 528, 530 Systemtabelle . 802

T Tabelle. 67 ändern . 370 Beziehungen . 78 erstellen. 353 Informations zu Datentypen . 171 Kopie. 463 leeren. 460

Tabelle (Forts.) löschen . 373 partitions . 394 Partitionierung . 389 physischer Speichehort . 362 Spalte ändern . 372 Spalt hinzufügen . 371 Spalte löschen . 373 Définition Spaltend . 353 speicheroptimiert . 763 Struktureller Aufbau . 69 temporaires . 386 Tabellenalias . 304 Tabelleninhalt anzeigen . 120 Tabellenkopie . 463 Nom de tabelle . 70, 353 Tabellenscan . 675, 677 Tabellenseite . 916 Tabellenstruktur anzeigen . 120 Tabellenwertfunktion . 568, 573 mit mehreren Anweisungen . 571 Tabellenwertige CLR-Funktion . 820, 824 erstellen . 825 Page du tableau . 916 TableDefinition-Parameter . 822, 828 TableMappingsCollection . 1037 Tableaux . 1046 ÉCHANTILLON DE TABLE-Klausel . 915 REPEATIBLE-Option . 916 Variable TABLE . 889, 914 TABLOCK . 756 TABLOCKX . 756 Flux de données tabulaires . 834 Tag (der Woche) . 259 Balise (des Jahres) . 257 Tag (des Monats) . 257 Prenez . 1140 TakeWhile . 1141 CIBLE . 464 targetNamespace-Attribut . 935 Cible-Paramètre . 868 Tâche . 797 tblAuteur . 382 tblAutorBuch . 383 tblBanque . 382 tblBuch . 383 TDE . 350 Format TDS . 834 tempdb . 387 tempdb (Systemdatenbank) . 115 Modèle . 140

Temporäre Prozedur . 817 Tabelle Temporaire . 386 globale. 387 locaux. 386 löschen . 387 Terminer-Méthode . 860 Testdatensätze erzeugen . 311 texte. 282 Date de textei . 107 ALORS . 464 PuisPar . 1128 PuisParDescendant . 1128 Fil . 796, 797 Gestion des threads . 797 Modèle de filetage . 795 pool de threads . 796 Synchronisation des threads . 796 LANCEMENT . 299 HEURE . 248 LE TEMPS DESPARTIES . 259, 262 Délai d'attente . 754, 797 minuscules . 167 ToArray-Methode . 1183 ToDictionary-Methode . 1182 ToList-Méthode . 1182 ToLookup-Methode . 1183 HAUT . 212 HAUT (n) . 212 HAUT (n) POURCENTAGE . 213 HAUT (n) AVEC CRAVATES . 214 TOP-Klausel . 915 ToString-Méthode . 415, 443, 845 ToTraceString-Méthode . 1178 traces. 703 TRANS. 737 OPÉRATIONS . 737 NIVEAU D'ISOLEMENT DES TRANSACTIONS . 784 Transact-SQL . 164, 644 Transact-SQL-Curseur . 644 Transaction . 729 bestätigen . 738 Poste de contrôle . 735 Einführung . 729 explicite. 741 Finanz- . 729 implicite. 741 interne Verarbeitung . 734 Isolationsstufe auf Verbindungsebene . 745 Phantomwert . 752 Programmation . 737 Protokoll. 734

Transaktion (Forts.) Prüfpunkt . 735 Restauration . 737 Rétroaction . 737 rückgängig machen . 738 Transaktionsprotokoll . 734 Transaktionsprotokolldatei . 317 Transformation . 925 Translate-Méthode . 1210 Transparene Datenverschlüsselung . 350 Déclencheur . 287, 579, 642, 867 APRÈS . 582 ändern . 594 Anzeige des Quelltextes . 596 benutzerdefinierter . 794, 867 DDL . 601 activités actives . 588 SUPPRIMÉ-Tabelle . 584 DML. 579 Funktionskörper . 589 implémenteurs . 869 INSÉRÉ-TAbelle . 584 installations . 873 AU LIEU DE . 591 löschen . 591 mit Datenbankbereich . 601, 604 avec Serverbereich . 601 Programmation . 579 TriggerAction-Eigenschaft . 868 TriggerContext-Klasse . 868, 871 TABLE TRONQUÉE . 460 DIGNE DE CONFIANCE-Eigenschaft . 836 ESSAYER. 552 ESSAYER. PRISE . 282, 289, 564, 738 TRY_CAST . 273, 274 TRY_CONVERT . 273, 274 TRY-Block . 283 Blocage TRY-CATCH . 905 TryGetObjectByKey . 1235 TryGetObjectStateEntry . 1232 T-SQL . 791 Verwendung . 794 T-SQL-Instruction . 793 Accord . 702 Tupel . 71 Typ als Klasse abbilden . 857 TYPE . 953 Typsystem . 795

U u (Platzhalter) . 296 positions bergabebezogène . 540 verweisbezogène . 542 FDU . 563 Option DONNÉES NON VÉRIFIÉES . 802 Statut non engagé . 900 Annuler()-Méthode . 839 UND-Verknüpfung . 176 Unicode . 169 Format Unicode . 856 Union . 210, 1135 UNIQUE . 577, 686, 689 Unique (Eigenschaft) . 1054 CONTRAINTE UNIQUE . 377 Contrainte UNIQUE . 374 Contrainte Unique . 1053 Index unique . 824 Uniquificateur . 683 UNPIVOT-Anweisung . 884 DANGEREUX . 803 Unterabfrage . 204, 235, 242, 312 TOUS . 207 TOUT. 207 korrelierte . 209 MISE À JOUR . 456, 526, 528, 579, 730 MISE À JOUR . ENSEMBLE . 456 STATISTIQUES DE MISE À JOUR . 698 Commande Mise à jour . 1081, 1093 UpdateException . 1219 UpdateStatus (énumération) . 1105 UPDLOCK . 756 Conseiller de mise à niveau . 51 Analyse-Assistant . 55 erneute Ausführung . 58 Funktionsauswahl . 53 Montage . 51, 53 Assistance à l'installation . 52 Assistance aux installations . 53 Assistant d'analyse du conseiller de mise à niveau . 55 SUPÉRIEUR . 264 US-amérikanisch . 297 UTILISATION . 177, 604, 706 Utilisateur . 479 Agrégat défini par l'utilisateur . 794 Fonction définie par l'utilisateur . 563, 794, 820 Déclencheur défini par l'utilisateur . 794 Type défini par l'utilisateur . 794, 843 Fonction UTILISATEUR . 499

V ValidationMethodName-Parameter . 844 valeur() . 941 VALEUR-Index . 947 varchar(n) . 167, 169 Variables . 229 Déclaration . 229 globale. 234 Gültigkeitsbereich . 233 Initialisation . 230 kombinierte Deklaration und Wertezuweisung . 231 locaux. 229, 234, 643 Verwendung . 234 Wertezuweisung . 230 Wertezuweisung durch Abfrage . 234 Wertezuweisung mit SELECT . 236 Wertezuweisung mit SET und Unterabfrage . 235 Veralteter Ausführungsplan . 558 Verbinden. 111 Verbindung gemischter Modus . 474 öffnen. 982 schliessen . 983 Sperrstufe . 754 verttraute . 474 Verbindungspooling . 986 Verbindungsserver . 314 Verbindungszeichenfolge . 976 Verfügbare Datenbanken . 125 Verfügbarkeit . 843 Vergleichsopérateur . 174 Verknüpfung äußere . 308 intérieur. 305 linke äußere . 308 mehrfache . 309 rechte äußere . 308 Verknüpfungsbedingung . 306 Verschachtelte Sortierung . 186 Vertrag . 630 Vertraute Verbindung . 474 Verzögerte Namensauflösung . 558 Vue . 517 VISIBILITÉ-Option . 803 Visual Basic . 793

Visual Studio . 405 Visual Studio .NET . 107 Visual Studio 2005 . 812 Vollgekennzeichneter Nom . 313 Vollqualifizierte Bezeichner . 500 Vollqualifizierter Nom . 313, 501 Volltextsuche . 42, 932 Vorlage . 140 Parameterwerte angeben . 141 Vorlagen-Explorer . 140 Vorwärtscursor . 648

W Wahrheitswerte . 175 Währung . 167 ATTENDRE . 247, 637, 760 Warteschlange . 630 Wartungsaufgabe . 115 Édition Web . 38 semaines. 257 jours de semaine. 257 Binaire bien connu . 407 Texte connu . 407 Wertebereich . 167 Wertezuweisung . 174 une variable eine . 230 WGS 84 . 434 QUAND . 249 où . 1124 O COURANT DE . 661 O-Klausel . 187, 304 TOUT EN . 243 Caractère générique . 948 Fonction de fenêtrage . 906 Windows PowerShell allgemeiner Aufruf . 152 anwendbare Laufwerksbefehle . 154 Aufruf aus dem Management Studio . 153 Get-PSDrive . 154 ISE (environnement de script intégré) . 152 ISE-Oberfläche . 152 Oberfläche . 152 Pfadangabe. 155 Référence rapide . 151 Skriptsprache . 151 sqlps. 153 SQL-Server-Cmdlets . 157 SQL-Server-Integration . 151, 153 Windows-Freigabe . 364

WindowsIdentity-Eigenschaft . 839 WindowsIdentity-Klasse . 839 WindowsImpersonationContext-Klasse . 839 Windows-Systemsteuerung . 147, 148 AVEC OPTION DE SUBVENTION . 491 AVEC NOCHECK . 385 WITH PERMISSION_SET-Directive . 819 AVEC-Schlüsselwort . 892 WKB (Binaire bien connu) . 407 WKT (texte bien connu) . 407, 414 Wochentag . 257 charge de travail . 701 ID de poste de travail (Eigenschaft) . 996 Protocole d'écriture anticipée . 734 Méthode d'écriture . 450

X XACT_ABORT-Anweisung . 899 XDR-Schema (XML-Données réduites) . 967 XML. 925, 947 ALTER XML SCHEMA COLLECTION . 936 Attribut . 933 CRÉER UN INDEX XML . 947 CRÉER UNE COLLECTION DE SCHÉMA XML . 935 Document . 934 SUPPRIMER LA COLLECTE DE SCHÉMA XML . 936 Élément . 933 Fragment. 934 Indexerstellung . 933 Type d'index . 946 Indizierung von XML-Feldern . 946 Leerzeichen . 934 Espace de noms . 933 Table de nœuds . 946 OPENXML . 968 CHEMIN-Index . 947 Index primaire . 946 PROPRIÉTÉ-Index . 947 Ressourcenverbrauch . 934 Collection de schémas . 935 Index des résultats . 947 Standardwerte definieren . 935 sys.xml_schema_collections . 937 sys.xml_schema_namespaces . 937 targetNamespace-Attribut . 935 typés et non typés XML . 933 Validierung . 933 VALEUR-Index . 947 Vor- und Nachteile . 931 Caractère générique . 948

XML (Forts.) Wohlgeformtheit . 933 Élément Wurzel . 934 XDR-Schema (XML-Données réduites) . 967 DML XML . 940 XML DOM (modèle d'objet de document XML) . 968 xml:base . 945 XML-Daten in einem relationalen Modell speichern . 968 XML-Daten konvertieren . 935 XML-Datentyp verwenden . 934 XML-Feld anlegen . 933 XML-Feld füllen . 934 XML-Feld mit einem Schema verknüpfen . 935, 936 XML-Index . 947 xmlns. 945 XML-Schéma . 935 XPath . 940 XQuery . 940 xsi:nil . 945 xsi:type . 945 Langage de modification de données XML . 940 XML DML . 940 après. 945 avant. 945 supprimer. 945 d'abord. 945 insert . 944 dans . 945 derniers. 945 remplace la valeur de . 946 Modèle objet de document XML . 968 DONNÉES XML . 967 XML-Datenbank . 925 XML-Type de date . 931 existe() . 940 modifier() . 941 nœuds() . 941 requête() . 940 valeur() . 941 XML-Dokumentspeicherung . 933 XML-Feld indizieren . 946 XmlReader-Klasse . 872 XP . 792 XPath . 925, 940 XQuery. 940 supprimer. 946 insert . 946 remplace la valeur de . 946

XQuery-Prozessor . 947 XSLT. 925

ANNÉE . 258, 260 ans. 257

Z Zahlenwert. 172 Zählervariable . 244 Zeichen. 167 Fonction Zeichenfolgen . 263 Zeichenkette . 124, 172, 263

Zeichenketenoperator . 174 Zeichenverkettung . 174 CONCAT . 267 Zeile. 281 Zeilenendezeichen . 165 Zeilenkonstruktor . 460 Zeilennummer . 246 Zelle. 71 Zertifikat . 350 Zieldienst. 631 Zieltabelle . 464 Méthode Z . 419 z-Parameter (räumlicher Datentyp) . 408 Zwischenspeicher . 734

Dirk Mertins est Microsoft Certified Solution Developer (MCSD) et Microsoft Certified Database Administrator (MCDBA). Er ist freiberuflicher Trainer für die Themen SQL-Programmierung und Datenbanken.

Jörg Neumann est IT-Consultant bei der Resco GmbH à Hambourg, Fachautor und Sprecher auf Entwicklerkonferenzen. Er ist Spezialist für Client- und Datenbank-Technologien.

Andreas Kühnel ist als freiberuflicher IT-Trainer und Berater deutschlandweit tätig. Er ist seit 1995 als Microsoft Certified Trainer (MCT) zertifiziert. Zu seinen Schwerpunkten in der .NET-Welt gehören Datenbanken, Windows-Anwendungen mit WPF, ASP.NET und die WCF.

Dirk Mertins, Jörg Neumann, Andreas Kühnel

SQL Server 2014 – Das Programmierhandbuch EPUB-Format, 1.308 Seiten*, in Farbe, 6. Auflage 2014 59,90 Euro, ISBN 978-3-8362-3676-8 *auch erhältlich als gebundenes Buch: 69,90 Euro, ISBN 978 -3-8362-3044-5

Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen chapeau. Gerne dürfen Sie diese Leseprobe empfehlen und weitergeben, allerdings nur vollständig mit allen Seiten. Die vorliegende Leseprobe ist in all ihren Teilen urheberrechtlich geschützt. Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag. Teilen Sie Ihre Leseerfahrung mit uns!


Voir la vidéo: Backup and Restore a SQL Server Database