1
Was man als .Net Entwickler von
SQL Server wissen muss
Dieter Rüetschi (ruetschi@ability-solutions.ch)
2
Stored Procedure (SP)
3
Was ist eine Stored Procedure
SQL Statement
Wird als String vom Client zum DBMS
übertragen
Interpretiert
Ausgeführt
Stored Procedure
«kompilierte Einheit»
Funktionale Schnittstelle
Kann Implementationslogik enthalten
Wird auf dem DBMS optimiert
Schneller
Zusätzliche Abstraktion
Definierte Schnittstelle
Security
Etwas komplexer zum Erstellen (mit
TSQL)
4
SP Grundlagen
Die Erstellung
Die Ausführung
5
Transaktionen
6
Die ACID Regel
Atomic
Consistent
Independent
Durable
7
Transaktionen
Mehrere Operationen in eine Transaktion:
Transaktionsinstanz kreieren mittels BeginTransaction Methode der Connection Klasse.
Verbindung muss offen sein.
Transaktionsinstanz den Transaction Properties der betroffenen Commands übergeben.
Commands ausführen.
Aufrufen von Commit oder Rollback Methode der Transaktionsinstanz.
Wichtig:
Auf jeden Fall Commit oder Rollback aufrufen (try - catch benutzen).
Transaktion möglichst kurz halten. Commands vorbereiten.
8
Codebeispiel einer Transaktion
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open(); // Connection öffnen
// Transaktion starten
using (SqlTransaction transaction = conn.BeginTransaction())
{
try
{
// Transaktion zuweisen
categUpdateCommand.Transaction = transaction;
// Commands ausführen
categUpdateCommand.ExecuteNonQuery();
transaction.Commit(); // wenn bis hierher gekommen: Erfolg
}
catch (Exception ex) // irgend ein Fehler ist passiert
{
transaction.Rollback();
}
}
}
9
Verteilte Transaktionen
using (TransactionScope ts = new TransactionScope())
{
using (SqlConnection cn = new SqlConnection(connectionString1))
{
DbCommand cmd = cn.CreateCommand();
cmd.CommandText = "Insert into Monkey(MonkeyName) Values ('Bill Ryan')";
cn.Open();
cmd.ExecuteNonQuery();
}
using (SqlConnection cn = new SqlConnection(connectionString2))
{
DbCommand cmd = cn.CreateCommand();
cmd.CommandText = "Insert into Monkey(MonkeyName) Values ('Frans Bouma')";
cn.Open();
cmd.ExecuteNonQuery();
}
ts.Complete();
}
10
Verteilte Transaktionen auf logischer Ebene
DTC: Distributed Transaction Coordinator
11
Entity Framework
12
Aufbau Entity Data Model
Logisches Modell (Storage Model) SSDL
Konzeptionelles Modell (Conceptual Model) CSDL
Zuordnungsschicht (Mapping) MSL
Physikalisches Modell (Datenbank Tabellen, Sichten und
Abfragen)
13
Entity Framework Komponenten
O/R Mapper für sauberes Businessmodell (weniger normalisiert)
14
Vorgehensweisen
Neue
Datenbank
Bestehende
Datenbank
Model First (EF 4.0 , .NET 4)
• Datenmodell im Designer
erstellen
• Datenbank erzeugen
• Klassen werden aus dem
Modell automatisch erstellt
Code First (EF 4.1)
• Klassen und
Mapping im Code
erzeugen
• Datenbank aus
Model erzeugt
• Migration (EF 4.3) ,
um Dateenbank zu
erweitern
Database First (EF 1.0, .NET 3.5
SP1)
• Erzeuge Modell aus
Datenbank (Reverse
Engineer)
• Klassen werden aus dem
Modell automatisch erstellt
Code First
• Klassen und
Mapping im Code
erzeugen
15
1. Abfrage über LINQ
using (NorthwindEntities context = new NorthwindEntities())
{
var customerWithOrders = from c in context.Customers
where c.Orders.Count > 0
select c;
foreach (Customer cust in customerWithOrders )
{
lbResult.Items.Add(cust.CompanyName);
}
}
C#
Visual Basic .NET
16
Database Tooling
Dieter Rüetschi (ruetschi@ability-solutions.ch)
17
Inhalt
SQL Server Management Studio
Visual Studio / Data Tools
Tipps und Tricks
ALM in Applikationen (FTS)
18
SQL Server Management Studio (SMS)
Vorwiegend für administrative
Tasks (z.B. Database
Recovery)
Für Datenanalyse und Ad-Hoc
Abfragen
Konfiguration von Instanz,
Datenbanken und DB Objekten
Security Verwaltung
usw.
19
Database Projekt im Visual Studio
Erstellung von Datenbanken
Erstellung von Abfrage Scripts
20
VS Server Explorer
21
Table Data
Refresh
Filtern
Neue Rows einfügen
Anzahl Rows
Scripting
Executing
Darstellung
SQLCmd
22
Table Definition
Komplette Informationen
Vollständiges Scrip
Gute Übersicht
23
Server Object Explorer
Zeigt zusätzlich Instanzobjekte
an
Ermöglicht Veränderungen
24
Datenbank Administration
Dieter Rüetschi (ruetschi@ability-solutions.ch)
25
SQL Server und Services
Dauernd kommen neue Services
hinzu
Nur das installieren was gebraucht
wird
Performance
Security
26
SQL Server und Services
27
SQL Server Editionen
https://msdn.microsoft.com/en-us/library/cc645993(v=sql.130).aspx
28
SQL Server Instanzen
Die meisten Services (auch das DBMS) sind mehr-Instanzfähig
Instanzen bieten Isolation für
Die Administration
Performance
SLAs
Versionen Collations
Security
Die zwei Instanztypen
Default Instanz (nur für Entwicklungsumgebung empfohlen)
Named Instanz
29
Datenbank und Storage
30
Die Datenbankfiles
Datenfiles
1 Primäre Datei
0-n Sekundäre Dateien
Transaktions-Logfile
31
Filegruppen
32
Buffer Erweiterung
Der Speichercache wird durch SSD Platten erweitert
Verbessert die Lesegeschwindigkeit
Keine Verbesserung beim Schreiben
33
Performance und Security
Dieter Rüetschi (ruetschi@ability-solutions.ch)
34
Vorgehen
Entwicklungsphase
Design und Implementaion logisch korrekt
Testen der Performance (z.B. Im Rahmen eines Feldtests)
Architektur analysieren
Zielvorgabe beachten oder bestimmen (was ist schnell?)
Messungen vornehmen (z.B. mit Performance Monitor)
Selektion und Priorisierung der Bottlenecks
Gezieltes Lösen bis Ziel erreicht ist
35
Architektur
36
Analyse
37
Query Store
Speichert
Query Text
Query Plans / Choices
Laufzeitstatistik vorallem
performance Metriken
Wird für gezielte Performance
Opmitierungen eingesetzt
38
Ergebnisse der Auswertungen
39
Auswertungen zur Laufzeit
Mit Live Drill Down
Query Analyse im Detail zur Laufzeit
40
Indexing
41
Wie SQL Server auf die Daten zugreift
42
Eine Index Struktur
43
Indexarten
Clustered Index
Row basiert
Die Daten werden physikalisch entsprechend dem Index abgegelegt und verwaltet
Es kann nur einen Clustered Index pro Tabelle geben
Nonclustered Index
Row basier
Im Index werden Refernzen auf die tatsächlichen Daten organisiert
Mehrere pro Tabelle möglich
Columne Index
Kolonnen basiert
Als Clustered und Nonclustered Index
44
In Memory Techniken
45
Security
46
Die Neuerungen im Bereich Security
47
Always encrypted