Was man als .Net Entwickler von SQL Server wissen muss

Werbung
1
Was man als .Net Entwickler von
SQL Server wissen muss
Dieter Rüetschi ([email protected])
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 ([email protected])
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 ([email protected])
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 ([email protected])
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
Herunterladen