SQL Server Data Tools Die IDE für Datenbankentwickler Constantin „Kostja“ Klein Freudenberg Forschungsdienste SE & Co. KG [email protected] http://kostjaklein.wordpress.com @KostjaKlein DB Entwicklung ist mühsam Fokus auf ALTER scripts Abhängigkeiten machen selbst simple Aktionen komplex Fehler werden spät bemerkt Schwierig App- und Datenbankversionen zu harmonisieren Unterstützung unterschiedlicher DB Editionen SQL Server Data Tools SSDT Visual Studio Team Edition for Database Professionals Data Dude TSData DB Pro Visual Studio 2010 SQL Server Database Projects Project Juneau / SQL Server Developer Tools Was also ist SSDT? Eigentlich reden wir heute nur über SSDT Database Projects: SSDT DB ist das Tool für die Unterstützung eines vollständigen Life Cycle Management für Ihre Datenbanken über SQL Server Versionen hinweg Download: http://msdn.microsoft.com/enus/data/hh297027 SSDT DB ist daher kein Ersatz für BIDS!! Der Ersatz für BIDS ist SSDT BI und das ist ein separater Download: http://www.microsoft.com/enus/download/details.aspx?id=36843 Was also ist SSDT DB? Work: • with and on SQL Server and SQL Azure databases • from within Visual Studio • using activities and techniques familiar to developers Unser Programm für heute Connected Development Demo Connected Development SQL Server Object Explorer T-SQL Editor T-SQL IntelliSense Drift Detection Table Designer T-SQL Debugging Schema Comparison View Code View/Edit Data Data Comparison Error Information Project Based Development Demo Project Based Development Go To Definition Find All References Refactoring Source Code Based F5 Debugging & Testing with LocalDB Source Code Control Point-in-time Snapshots MSBuild Visualize Schema Differences Headless Command Line Tools T-SQL Static Code Analysis SSDT ermöglicht: Deklaratives, nicht Script-basiertes Arbeiten Model-basierte Entwicklung und Validierung mit denselben Tools online und offline Das Ermitteln von Schema-Unterschieden für • inkrementellen Import und Deployment • Drift Erkennung und Behebung Datenbank(schema) und Anwendung unter Quellcodeverwaltung Lokales Testen vor dem Deployment (SQL Server, Azure SQL DB) Imperative Versionierung Deklarativ Definition des gewünschten Zustandes in einem Model Füllen des Models mit einer DSL (Domain Specific Language) • T-SQL Verwendung diese Models als „Blueprint“ für alle weiteren Operationen • Deploy/Publish startet mit einem Vergleich des Zieles mit dem Blueprint (gewünschter Zustand) • Mit dem Wissen über die Unterschiede wird automatisch ein Deploymentplan generiert • Eine Abfolge von SQL Statements wird generiert, so dass das Zielsystem nach der Ausführung dem Blueprint gleicht Deklaratives Deployment Warum DB Unit Testing? TDD Demo Continuous Deployment / Continuous Integration Demo Vorteile von CI CI verhindert das „Works on my machine“ syndrom Die Änderungen aller Entwickler kommen in das Deployment und keiner wird abgehängt Tests können kontinuierlich laufen und so im Falle eines Fehlers früher informieren Größere Sichtbarkeit des Projektes Das Deployment wird unabhängig von den Entwicklern Einfachere Bereitstellung einer Umgebung für ein neues Teammitglied Nachteile Hürden von CI Es benötigt Zeit den CI Prozess aufzubauen Funktioniert besser mit Tests Kurze Buildzeiten helfen – daran kann/muss man arbeiten Verletzter Stolz CI Produkte CruiseControl JetBrains = TeamCity MSBuild / TFS Jenkins Redgate CI for databases Beispielhafter CI Prozess Schritt 1: Check-In Schritt 2: der CI Prozess wird getriggert Schritt 3: CI baut die Solution Schritt 4: CI lässt alle Tests laufen Schritt 5: CI deployed auf die Testumgebung Schritt 6: CI informiert darüber, dass ein neuer Build zum Testen bereitsteht Fragen ??? FAQ 1. Wie sieht es mit Data Generation aus? Schlecht … hier wird man wohl (zunächst) auf ein 3rd Party Tool angewiesen bleiben (z.B. redgate SQL Data Generator ) 2. Welche Visual Studio Versionen, welche SQL Versionen? VS 2010+ / SQL 2005+ 3. Habe ich automatisch die neueste Version? Nur mit VS 2013 (Professional, Premium, Ultimate, Express 2013 Web und Windows Desktop) Wrap up Was mir heute wichtig war: SSDT DB ist DAS SQL Server Developer Tooling Überblick und Einstieg in die Themen: • Connected Development • Project Based Development Spass!! SQLServerBlogs.de Informationsquelle für deutschsprachige SQL Server Inhalte http://SQLServerBlogs.de Twitter: http://www.twitter.com/SQLServerBlogs Feedback !!! Speakerinfo: Constantin Klein Constantin arbeitet als Anwendungsarchitekt und Entwickler bei der Freudenberg Forschungsdienste SE & Co. KG. Dort beschäftigt er sich hauptsächlich mit dem Design und der Entwicklung von Web-Informationssystemen und Datenbanken. Seit seinem Studium der Wirtschaftsinformatik gilt sein besonderes Interesse darüber hinaus allen aktuellen Themen im Microsoft .NET Umfeld, insbesondere aber dem Thema Softwarearchitektur. Er ist MCSD, MCITP Database Developer und MCPD Web + Enterprise Application Developer. Seit 2010 wurde er jährlich von Microsoft zum Most Valuable Professional (MVP) für SQL Server ernannt. Er engagiert sich zusätzlich im Vorstand des Just Community e.V. und als Leiter der .NET User Group Frankfurt. Sein Blog finden Sie unter http://kostjaklein.wordpress.com Ressourcen Red Gate Whitepaper http://www.red-gate.com/products/sqldevelopment/entrypage/ssdt Jamie Thomson: Continuous deployment of SSDT database projects http://sqlblog.com/blogs/jamie_thomson/archive/2013/0 1/27/continuous-deployment-of-ssdt-database-projectsto-windows-azure-using-team-foundation-service.aspx Andrew Fenna: Introduction to SQL Server Data Tools http://www.sqlservercentral.com/blogs/go-sql-blog-ablog-dedicated-for-sql-server-developersalike/2013/08/07/sql-training-introduction-to-sql-serverdata-tools/