Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Visual Studio Team Edition for Database Professionals

Podobné prezentace


Prezentace na téma: "Visual Studio Team Edition for Database Professionals"— Transkript prezentace:

1 Visual Studio Team Edition for Database Professionals
Michael Juřek Software Architect Microsoft s.r.o.

2 Agenda Proč nová edice VS? Změnový proces – principy
Databázový projekt Testování databází Nasazení změn Integrace – týmový vývoj

3 Co jsme slyšeli ... Správa změn v databázi je obtížná...
Vývojové týmy často pracují s neaktuální verzí databáze Nalezení chyb na konci vývojového cyklu je nákladné (vs. jejich nalezení včas) Vysoké náklady na podporu, pokud databázová změna vnese chybu do aplikace Nouzový návrat k předchozí verzi trvá dlooooooouho Problémy v komunikaci mezi vývojáři a správcem databáze Nutnost lepší komunikace a integrace

4 Typická situace Více rolí, více lidí Architekt databáze DB Developer
Definuje strukturu dat DB Developer Píše kód používající databázi Často vytváří též uložené procedury apod. DB Administrator Kontroluje produkční databázi Provádí finální revizi všech změn

5 Typická situace Vytvoření Vývoj Nasazení Vytváří kód v databázi
Vytváří testy Provádí refactoring Spouští testy Ukládá změny Provádí revizi změn Porovnává s produkční verzí Vytváří skripty pro nasazení Nasazuje do produkce Vytvoření nového DB projektu Import existující DB do projektu Plán vygenerování testovacích dat For our scenario we use two primary personas: Monica: the DB Admin has full security privileges to the production database. In our scenario she is also creating the team project. A more extended scenario would chain this into the existing Team System Scenarios with a project manager creating new projects, assigning work items etc. Dave: a database developer who will create the SQL code necessary to the project. In a more extended scenario he would interact with other application developer who would create data access code, user interfaces, and web services. The overall flow is the Monica will create the project and reverse engineer the existing database to the project. She will also collect the database histogram information (not enabled in CTP2) that will enable creation of pseudo data to match patterns discovered in the current database instance. Under version control this will represent the database baseline. Dave will then perform a number of operations to complete his work items including adding new tables, creating unit tests, required adjustments and validation. All of Dave’s work is off-line except any testing which will be carried out on a development server. Once the development work is done a change script is created which Monica can now review and edit before running a deployment. Vytvoření Vývoj Nasazení Architekt Vývojář Správce 5

6 Visual Studio Team System
Business Analyst PMO Operations CIO Application Support Architect Project Manager Tester Designer Developer Team Edition for Database Professionals Rozšíření o databázový tým Změnové řízení pro databáze Rozšíření týmového vývoje a spolupráce Integrovaný vývoj zvyšuje kvalitu DB Pro © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. 6 6 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

7 Visual Studio Team System
Process and Architecture Guidance Visual Studio Industry Partners Visual Studio Team Edition Software Architects Visual Studio Team Edition Software Developers Visual Studio Team Edition Software Testers Visual Studio Team Edition Database Professionals Application Designer Dynamic Code Analyzer Load Testing Offline Database Project System Designer Static Code Analyzer Manual Testing DB Rename Refactoring Logical Datacenter Designer Code Profiler Test Case Management Data Generator Deployment Designer Unit Testing (C#, VB.NET) Unit Testing (T-SQL) Code Coverage Schema Compare Data Compare Class Designer (in Visual Studio Standard Edition and higher) Announcing Of course, a big part of MSS is the integrated tools We’ve designed our tools from the ground up to… Reduce the complexity of delivering modern solutions by constructing intuitive user interfaces and baking the process guidance directly into the product Facilitate communication and collaboration among members of a software delivery team through deep integration of features Enable a vibrant partner ecosystem through a set of Web service-based APIs for ISVs and businesses to plug into We don’t have Test Case Management --- that is up-sell item to Test SKU We have to be careful about showing DB Reverse Engineer as a functionality – I would read that as we have modeling Visio for Enterprise Architects (in MSDN Premium Subscription) Team Explorer (includes Team Foundation Server CAL) Visual Studio Professional Edition Visual Studio Team Foundation Server Change Management Reporting Integration Services Team Build Work Item Tracking Project Portal Project Management 7

8 Agenda Proč nová edice VS? Změnový proces – principy
Databázový projekt Testování databází Nasazení změn Integrace – týmový vývoj

9 Současný přístup Obtížná zpráva změn
Produkční databáze Management Studio Obtížná zpráva změn Produkční databáze je „master“ pro data i pro schéma Správce nemá průběžný přístup k připravovaným změnám Změny prováděné v produkci často nejsou přeneseny zpět do vývoje Ladění Monitorování Schéma Změny schématu “Master“ pro data i pro schéma 9

10 Nový přístup Produkční databáze Management Studio
Změny schématu spravovány ve VSTS – je „master“ pro schéma Produkční databáze je „master“ pouze pro data Správce může průběžně dostávat plánované změny k revizi Ladění Monitorování “Master“ pro data Změny jsou nasazovány plánovaně, s dobrou spravovatelností Komunikace pomocí vygenerovaných skriptů Master“ pro schéma Off-line Pod systémem pro správu zdroj. kódu Adjust colors Schéma Změny schématu 10

11 Výhody nového přístupu
Databázové schéma je pod evoluční projektovou kontrolou Aplikace a databázové schéma jsou spravovány a verzovány společně Vývoj (i jednotlivý vývojář) pracuje v izolaci, do produkce se nasazují pouze celkové změny ověřené testováním Využití VSTS/TFS pro podporu týmové infrastruktury: Správa kódu, work items, automatický build, testování, reportování, ...

12 Vytvoření projektového prostředí
SCM Check-in do systému správy kódu Vývoj Produkce Testovací databáze Produkční databáze Database Project Import schématu

13 Izolovaný iterativní vývoj
Sand box Sand box Synchronizace Check-out Edit/Refactor Test Check-in SCM Sand box Sand box Práce je prováděna, kontrolována a auditovatelně zaznamenána pomocí Work Items Vývoj Produkce

14 Build Vývoj Produkce Testovací databáze SCM Denní build Test
Výstup denního buildu Může být použito rovněž při průběžném systému buildů SCM Get Latest Denní build Test Vývoj Produkce

15 Synchronizace podle Label
Nasazení SCM Synchronizace podle Label Vývoj Produkce Testovací databáze Testování, ověření SQL skript Database Project Build Nasazení Doladění skriptu, porovnání změn

16 Vytvoření prostředí Import schématu produkční DB
Začlenění do správy zdrojového kódu Build/Deploy

17 Agenda Proč nová edice VS? Změnový proces – principy
Databázový projekt Testování databází Nasazení změn Integrace – týmový vývoj

18 Role databázového projektu
Množina .SQL souborů s DDL fragmenty Deploy SQL Script SQL Server Database Build Deploy SQL Server Database Import schématu databáze Database Project Template Database Project Nový projekt SQL Script Import existujících SQL skript souborů

19 Databázový projekt „Master“ pro schéma databáze v projektu
Volitelně může být pod kontrolou zdrojového kódu (TFS, VSS, ...) V řešení spolu s kódem – společný životní cyklus Kolekce .SQL souborů (skriptů a objektů schématu) v hierarchii složek: Soubor = jednotka změny

20 SQL skripty V principu libovolné T-SQL ve složce Scripts nebo jejích podsložkách Pre-Deployment / Post-Deployment: Dvě speciální složky Obsahují skripty prováděné před/po nasazení změn T-SQL Editor – v podstatě identický s editorem v SQL Management Studiu: Validate vs. Execute, SQLCMD režim, Client Statistics, Results as Grid/Text/File, color-coding, ...

21 Objekty schématu Zvláštní případ T-SQL skriptů:
Jeden CREATE/ALTER ... příkaz v dávce Projekt obsahuje všechny uživatelské objekty v SQL databázi Jiná množina typů pro SQL 2000 a 2005 Způsoby vytvoření: Import schématu z existující databáze („reverse engineer“) Import existujících SQL skriptů „Ručně“ pomocí připravených šablon

22 Vlastnosti projektu Project Settings Database Properties Build
Verze databáze (2000/2005) Výchozí schéma a collation Povolení full-textu a SQLCLR Database Properties Řada různých nastavení databáze (Auto-shrink, Recovery model, ANSI nastavení a mnoho dalších) Build Spojení do databáze pro nasazení Jméno databáze Cesta, kde budou generovány skripty Možnosti nasazení

23 Databázový projekt Struktura projektu
Solution Explorer vs. Schema View Detekce chyb v projektu

24 Struktura projektu – SQL 2000
Data Generation Plans Schema Objects Functions Stored Procedures Tables Views Security Roles Users Application Roles Database Roles Storage File Groups Full Text Catalogs Types User-defined Data Types Scripts Post-Deployment Pre-Deployment

25 Struktura projektu – SQL 2005
Data Generation Plans Schema Objects Aggregates Assemblies Database Triggers Functions Security Asymmetric Keys Certificates Endpoints Roles Application Roles Database Roles Schemas Symmetric Keys Users Service Broker Contracts Event Notifications Message Types Queues Remote Service Binding Routes Services Schema Objects… Storage File Groups Full Text Catalogs Partition Functions Partition Schemes Stored Procedures Synonyms Tables Types User-defined Data Types User-defined Types (CLR) XML Schema Collections Views Scripts Post-Deployment Pre-Deployment

26 Šablony (templates) Pro každý typ objektu v projektovém systému je k dispozici šablona Specifická pro SQL 2000 nebo 2005 Pokud je to možné, šablony se snaží obsahovat platný T-SQL skript Samozřejmě je obvykle nutné ho upravit Slouží jako dobrý výchozí bod

27 Chybové stavy Chyby/varování se objevují v okně Error List
Každá položka v projektu může být v jednom ze tří stavů: Clean Ikona bez jakékoliv dekorace Dirty Ikona objektu s červeným vykřičníkem Skript/DDL nebyl rozpoznán nebo má špatnou syntaxi Nasazení (Deploy) projektu není možné Warning Ikona objektu se žlutým varovným trojúhelníkem Skript/DDL není interpretován/implementován Ve finální verzi by se tento stav neměl vyskytovat Nasazení (Deploy) je možné Show the error list?

28 Vnořené objekty Tabulky, pohledy, funkce, procedury, ...
Obsahují „logické“ vnořené objekty, které jsou často formálně nezávislé, i když bez svého „rodiče“ nemají smysl Dva typy vnořených objektů: S vlastním příkazem CREATE ... Indexy, triggery, ... V okně Solution Explorer samostatně, v okně Schema View vnořené Bez vlastního příkazu CREATE ... Sloupce, parametry, ... V okně Solution Explorer nejsou, v okně Schema View vnořené

29 Vytvořené SQL fragmenty
Během importu schématu nebo SQL skriptu se vždy vytvářejí nejmenší možné fragmenty, např.: CREATE TABLE [dbo].[Territories] ( [TerritoryID] [nvarchar] (20) NOT NULL, [TerritoryDescription] [nchar] (50) NOT NULL, [RegionID] [int] NOT NULL ) ON [PRIMARY] ALTER TABLE [dbo].[Territories] ADD CONSTRAINT [PK_Territories] PRIMARY KEY NONCLUSTERED ([TerritoryID]) ON [PRIMARY] ALTER TABLE [dbo].[Territories] ADD CONSTRAINT [FK_Territories_Region] FOREIGN KEY ([RegionID]) REFERENCES [dbo].[Region] ([RegionID])

30 Analýza SQL skriptu Dvě hlavní fáze: Udržované paměťové struktury
Phase-1 Parsing Získání identifikátoru objektu a jeho typu Phase-1 Interpretation Získání dodatečných informací (schemabinding apod.) Phase-1 SQL Server Compile Validation Validace DDL fragmentu oproti lokální instanci SQL databázePhase-2 Parsing Vytvoření AST (Abstract Syntax Tree) pro DDL fragment Phase-2 Interpretation Získání detailních informací z AST Udržované paměťové struktury Seznam objektových symbolů Strom vzájemné závislosti objektů

31 Analýza SQL skriptu Design DB Schema P1 Parsing P1 Interpre-tation
Manager P1 Interpre-tation Design DB Success Success Success Failed Failed Failed Success Error List Add to Schema Context Schema Manager P2 Interpre-tation P2 Parsing Update Schema Context Success Success Failed Failed Failed Warning List

32 Pojmenování souborů Vše je .SQL soubor Základní jmenná konvence:
Asociovaný s T-SQL editorem Základní jmenná konvence: JmenoObjektu.TypObjektu.SQL TypObjektu není vhodné měnit Je to možné, ale způsobuje to problémy JmenoObjektu lze změnit standardní operací Rename v okně Solution Explorer Např. Schema.JmenoObjektu.TypObjektu.SQL Předdefinovaná strukturu složek: Maximálně shodná s SQL Management Studio Lze ji libovolně měnit !!!

33 Refactoring schématu “Refactoring databáze je provedení malé změny v databázovém schématu, která zlepší design databáze, ale nezmění její sémantiku.” Agile Database Development, Scott Ambler Příklad: Změna jména objektu ve schématu pro lepší konzistenci, standardizaci, udržovatelnost, srozumitelnost, ...

34 Rename refactoring Změna jména tabulky, sloupce, ...
Všechny typy objektů ve schématu Změna provedena ve všech závislých objektech a místech Schema objects, Data generation, Unit Tests, SQL Scripts Změny jsou atomické Preview před provedením změn

35 Rename – záchranné sítě
Preview Prevence je vždy nejlepší Refactoring Log Záznam o provedených změnách Unit Testing Mějte připravené unit testy, které po přejmenování spustíte pro kontrolu Version Control Všechny předchozí verze schématu jsou v systému správy kódu pro možnost návratu změn Schema Compare Analýza a schválení změn před přesunem do „ostřejší“ databáze

36 Rename refactoring Přejmenování tabulky Přejmenování sloupce

37 Agenda Proč nová edice VS? Změnový proces – principy
Databázový projekt Testování databází Nasazení změn Integrace – týmový vývoj

38 Testovací data Vygenerování realistické datové základny pro testovací (funkční i výkonnostní) scénáře Deterministické – se stejnými parametry vygeneruje vždy stejnou sadu dat Respektuje schéma databáze a při generování se jím řídí Rozšiřitelné – můžete vytvořit vlastní generátory a/nebo distribuce hodnot

39 Kroky pro generování dat
Základní kroky: Vybrat vhodný generátor Vybrat vhodnou distribuci hodnot Nastavit parametry generátoru Zvolit počet generovaných řádků Volitelně nastavit poměr řádků mezi tabulkami spojenými relací Výchozí nastavení: Každý sloupec má nastavený jednoduchý generátor odpovídajícího typu Foreign Key generátor pro klíče do jiných tabulek Unikátnost hodnot odvozena ze schématu Typ distribuce Uniform

40 Spuštění generování dat
Ověření Bezpečnostních požadavků Pokud nejsou splněny, dojde k chybě Schéma cílové databáze proti DGEN schématu Není-li shoda, dojde k chybě Volitelně vymazání tabulek Vyžadováno pro opakovatelnost generování Paralelní sekvence INSERT příkazů Respektuje relace v tabulkách Počet spojení závisí na počtu nezávislých tabulek Konfigurovatelné chování při chybě

41 Dostupné generátory dat
Jednoduché náhodné generátory typů: Řetězcové typy - (n)(var)char, (n)text Číselné typy – tinyint, smallint, int, bigint, real, float, decimal, numeric, money Binární typy – (var)binary, image Datum a čas UniqueIdentifier (GUID) Bit Složitější generátory SQL Computed Value – např. identita Foreign Key – podle ID v jiné tabulce Regular Expression – podle výrazu Data Bound – podle výsledku dotazu

42 Dostupné distribuce dat

43 Úprava generování Jednoduchá parametrizace Pokročilá parametrizace
Rozsah hodnot, podíl prázdných hodnot apod. Pokročilá parametrizace RegEx – nastavení regulárního výrazu Data Bound Generator – T-SQL vracející přípustné hodnoty Rozšiřitelnost – vývoj vlastních tříd Vlastní generátor (IGenerator) Vlastní distribuce (IDistribution)

44 Nasazení vlastních rozšíření
Podepište párem klíčů (strong name) Nakopírujte do: %ProgramFiles%\Microsoft Visual Studio 8\DBPro\Extensions Zaregistrujte v: %ProgramFiles%\Microsoft Visual Studio 8\DBPro\Microsoft.VisualStudio.TeamSystem.Data.Extensions.xml <?xml version="1.0" encoding="us-ascii"?> <types version="1"> <type>Microsoft.VisualStudio.TeamSystem.Data.Generators.Exponential, Microsoft.VisualStudio.TeamSystem.Data.Generators, Version= , Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a </type> </types>

45 Generování dat Vytvoření plánu generování
Spuštění plánu Kontrola výsledku

46 Databázové unit testy Chyba a nutnost navrácení do předchozího stavu znamenají dlouhou noc pro administrátora Staví na funkci unit testů v týmových edicích Visual Studia 2005 Společný framework pro testování aplikační i datové vrstvy Je možné využít deterministicky vygenerovaná data Integrované nasazení a generování dat

47 Vytváření unit testů Testy jsou vytvářeny v designéru pomocí T-SQL:
Podobný princip jako WinForms designer Na pozadí generován VB.NET / C# kód Standardní metody, atributy, ... v kódu Standardní ADO.NET přístup Je možné testovat: Uložené procedury, funkce, triggery Automatické generování T-SQL kódu z okna Schema View Jakýkoliv vlastní T-SQL

48 Možnosti vytváření testů
Speciální skripty: Test initialize / cleanup – pro testovací třídu Pre-Test / Post-Test – pro každou metodu Validace testů (assertions) Serverová Použití příkazu RAISERROR Klientská – nastavení podmínek (Non) Empty ResultSet Row Count Scalar Value Execution Time Inconclusive Vlastní validační třída

49 Možnosti spuštění testů
Přístupné přes Test / Database Test Configuration... Spojení do databáze Možnost různých spojení pro validaci a pro spouštění testů (např. kvůli bezpečnosti) Automatické nasazení Možnost automatického nasazení před provedením testů Automatické generování dat Možnost vygenerování testovacích dat podle generovacího plánu

50 Rozšiřitelnost testů Vygenerovaný C# / VB.NET kód lze upravovat, např.
Přidat vlastní validační logiku Nad rámec výchozí sady pravidel Podpora parametrizace Např. z datového zdroje (data driven) Správa transakcí Např. vytvoření transakčního rozsahu před testy a rollback změn po dokončení testů Extra kroky před/po testu/testech

51 Databázový unit test Vygenerování testu Nastavení podmínek
Spuštění testu

52 Agenda Proč nová edice VS? Změnový proces – principy
Databázový projekt Testování databází Nasazení změn Integrace – týmový vývoj

53 Nasazení změn Různé kroky procesu pro přenos změn:
Projekt -> Vývojová databáze Vývojová databáze -> Testovací databáze Testovací databáze -> Produkční databáze Různé možnosti přenosu změn: Schema Compare / Data Compare Generování změnových skriptů a jejich kontrolované spuštění proti cílové databázi Deploy z Visual Studia Deploy při automatickém buildu (MSBuild)

54 Schema Compare Porovnání a eventuální přenos změn schématu:
Mezi projektem a databází Mezi dvěma databázemi Vizuální rozhraní: Návrh Create / Update / Drop / Skip akce Porovnání definičních skriptů po řádcích Výstup: Řada detailních možností nastavení Možnost provedení změn v cílové databázi SQL DDL skript v novém okně SQL DDL skript do souboru

55 Data Compare Porovnání a eventuální přenos změn dat:
Mezi dvěma databázemi (výběr tabulek a pohledů) Vizuální rozhraní: Identical Records / Different Records / Only in Source / Only in Target pro každý objekt Možnost výběru objektů pro generování skriptů Výstup: Řada možností nastavení Možnost provedení změn v cílové databázi SQL DML skript v novém okně SQL DML skript do souboru

56 Nasazení změn Schema Compare Data Compare

57 K dispozici pro MSBuild
Task: SqlBuildTask SqlDeployTask SqlCleanTask DataGeneratorTask SqlDocumentationTask SqlXmlDocumentationTask Target: Build – generuje SQL skript Deploy – spuštění proti cílové databázi K dispozici Pre-/Post-Deployment skripty Clean – vymazání adresáře s SQL skriptem All – Build+Deploy

58 Sestavení Převzetí nastavení z definice projektu
msbuild NorthwindOnline.dbproj /t:build Specifikace cílového serveru msbuild NorthwindOnline.dbproj /t:build /p:TargetConnectionString="Data Source=(local)\sql80;Integrated Security=True;Pooling=False;" /p:TargetDatabase="NorthwindOnlineTestRun"

59 Nasazení Převzetí nastavení z definice projektu
msbuild NorthwindOnline.dbproj /t:deploy Specifikace cílového serveru msbuild NorthwindOnline.dbproj /t:deploy /p:Configuration="Update Deployment" /p:TargetConnectionString="Data Source=(local)\sql80;Integrated Security=True;Pooling=False;"

60 Další cíle All (Build + Deploy) Clean
msbuild NorthwindOnline.dbproj /t:all Clean msbuild NorthwindOnline.dbproj /t:clean

61 Agenda Proč nová edice VS? Změnový proces – principy
Databázový projekt Testování databází Nasazení změn Integrace – týmový vývoj

62 Co je Team Foundation Server?
Integrovaná platforma pro spolupráci při projektech vývoje software. Work Item Tracking Source Code Control Reporting Build Automation Team Communications

63 Týmový vývoj Databázový projekt je v principu stejný jako C# / VB.NET projekt a může využívat stejných služeb: Řízení projektu pomocí Work Items Verzované úložiště skriptů Automatický build (+nasazení) Testování Reportování o průběhu projektu Sdílení informací na portále

64 Integrace s TFS Automatický build Využití work items
Správa verzí schématu Unit testy

65 Závěrem Řízení změnového procesu pro schéma databáze
Testování databází Nasazení změn mezi prostředími Integrovaný týmový vývoj

66 © 2004 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.


Stáhnout ppt "Visual Studio Team Edition for Database Professionals"

Podobné prezentace


Reklamy Google