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