Institutionen för Tillämpad fysik och elektronik Stig Byström Laboration: SQL Server 2007-03-24 Målsättning Syftet med denna laboration är att ge grundläggande kunskap och erfarenhet i användning av SQL Server till databas-drivna applikationer. Centrala moment i laborationen är transaktionshantering och lagrade procedurer. Teori Föreläsningsanteckningar. Förberedelseuppgifter Studera föreläsningsanteckningar. Material Lokalt installerad SQL-server 2005 Express eller om du föredrar gamla SQL-server 2000 Developer Edition, förinstallerad SQL-server att arbeta mot (TFE-a307-1).[\\130.239.115.11] Vid behov installationsfiler för SQL Server Developer Edition (\\TFE-a307-1\SQLCD) eller annan SQL-server (annan dator i labbet håller SQL-motor och dina DB). Genomförande En tillfredställande lösning på samtliga uppgifter som ligger under rubriken Ordinarie uppgifter är ett måste för att bli godkänd på denna laboration. För plus krävs det dessutom att du löser minst två av uppgifterna under rubriken Fördjupningsuppgifter. Uppgiften kan genomföras individuellt eller i grupper om två studenter. TIPS: Läs igenom hela laborationsspecifikationen innan du sätter igång. Det du utvecklar i ett moment kan mycket väl gå att återanvända i ett annat om du är lite strategisk. Redovisning Redovisning av laboration sker individuellt. Laborationen redovisas dels genom en individuell rapport som beskriver din/er lösning, men även genom uppvisande av väl fungerande applikationer. Redovisning av applikationer sker vid en personlig redovisning under kursen. Ni bokar själva tid för denna redovisning. TIPS: Det här är en programmeringsinriktad laboration så layouten har liten betydelse. Tids nog kommer ni att få anstränga er för att göra sidor som är snygga också. Ordinarie uppgifter Uppgiften består i att utveckla en applikation som baserar sig på ASP.NET och SQL Server2005 Express eller annan MS-SQL version. För godkänt genomförande av laborationen ska ni i rapporten beskriva det som markerats med fet och kursiv stil. 1 Installation och konfiguration Om det inte redan är gjort: Logga in som IT och hämta hem Microsoft SQL Server Management Studio Express (SSMSE). Installera den. Starta Management Studio och anslut till SQL Server. File Välj: Connect Object Explorer Välj ”eget datornamn”\SQLEXPRESS eller TFE-a307-1 (130.239.115.11) (SQL2000) eller någon annan Databas du vill använda. Välj: Connect a. b. Skapa en egen användare som ska kunna administrera dina databaser. Skapa en databas med några relaterade tabeller. Redovisa i rapporten hur man skapar nya användare och hur man administrerar deras rättigheter. Redovisa också databasen du/ni skapat. 2 Utveckla en SQL Server-baserad webbklient Utveckla en ASP.NET-baserad applikation som ansluter till den databas som ni skapat. (Tips: Använd ”System.Data.SQLClient”). a. Applikationen ska hämta och presentera data från flera tabeller och presentera dessa på en webbsida. Användaren ska genom en dropplista, textruta eller annat kunna påverka vad som hämtas. b. Skapa en Lagrad procedur av SQL-satsen i din applikation. Skriv om koden från uppgift a. så att en eller flera parametrar passas till den lagrade proceduren. Redovisa vilka skillnader du/ni får i koden mellan de olika fallen. 2 3 Utveckla en applikation som innefattar transaktionshantering a. Skapa en databas bestående av minst tre relaterade tabeller. b. Utveckla en ASP.NET-applikation som under ordnade förhållanden hanterar att lägga till, ta bort och uppdatera data i flera av dessa tabeller. c. Applikationen ska inkludera transaktionshantering dvs att uppdatering mot DB vid behov ska kunna ”rullas tillbaka” och du måste hitta ett sätt att verifiera att det sker. (Tips1: Två ”applikationer” (surfa i två fönster) mot samma databas, så du kan ”sno” resursen, innan den första slutfört transaktionen. Tips2: Testa på antal uppdaterade poster, vid fel (0) skapa en egen ”Exception” t.ex. Throw new DivideByZeroException och testa på den för att göra nödvändig Rollback). Tips3: Utnyttja möjligheten att sätta ”check constraints” Exempel: Ni utvecklar ett system som hanterar rese-bokningar. Bokningssystemet består lämpligtvis av en databas med tre tabeller: Resenärer, Hotell och Flygbolag, samt ett webbgränssnitt där användaren kan boka resa och hotell vid ett och samma tillfälle. Scenario: Mr X bokar passande flyg och hotell i ett webbformulär och trycker på "Beställ"-knappen. I samma veva har Mrs Y bokat en liknande resa och snuvar i sista sekund det sista rummet på hotellet. Utan transaktionshantering skulle Mr X få sin bokning genomförd till hälften, vilket antagligen inte är helt tillfredställande. Med transaktionshantering skulle systemet rulla tillbaka och låta Mr X börja om med att hitta lämpligt flyg och hotell Beskriv hur din applikation fungerar och hur du implementerat och verifierat transaktionshanteringen. Redovisa väl valda delar av din källkod samt en skärmdump av Database diagram från SQL-server. Du ska alltså inte lösa problemet, utan du ska lösa uppgiften med hjälp av Transaktionshantering. Fördjupningsuppgifter För att erhålla extrapoäng ska din laboration omfatta minst två av följande fördjupningsuppgifter. Ange på rapportens framsida om, och i sådana fall vilka, fördjupningsuppgifter som är utförda. 4 Migrering Access till SQL Server Leta reda på ett ASP.NET-projekt som baserar sig på en Access-databas med minst två relaterade tabeller. Exportera Accessdatabasen till SQL-server, åtgärda primärnycklar och relationer om det behövs. Slutligen så ansluter du din gamla (omskrivna) ASP.NET-applikation mot den numera SQL Server-baserade databasen. Beskriv ingående de steg som krävs för att migrera från Access till SQL Server. Hur dataexporten går till, en skärmdump av Database diagram och de ändringar som utförts i källkoden. Jag tror att det är svårt eller näst intill omöjligt att använda Express-edition till den här uppgiften om man väljer att importera. 3 5 Implementera en funktion och ett par triggers i databasen a. Modifiera en befintlig applikation med databas eller utveckla en ny, som använder minst en "AFTER" - och en "INSTEAD OF" - trigger. b. Skriv en SQL Server-baserad funktion som ni anropar, undersök gärna var er ”user function” är giltig, dvs. varifrån man kan anropa den. c. Undersök om det är möjligt att åstadkomma att en lagrad procedur anropar en annan lagrad procedur eller funktion. Beskriv skillnaden mellan de två trigger-varianterna och hur du valt att implementera dem. Beskriv även hur du implementerat övriga efterfrågade moment, i text och med bifogad kod. 6 Skapa en applikation som återspeglar data från flera tabeller Denna uppgift finns i två utföranden ni väljer vilken ni föredrar lösa. I båda fallen förväntas ni presentera data i ett webbaserat gränssnitt. I. Skapa en applikation som hämtar data från två tabeller där tabellerna ligger i olika databaser. Exempelvis skapar ni en databas innehållande en tabell som på något sätt kan relateras till någon av tabellerna i t.ex. Northwind-databasen. Scenario: Ni har utvecklat en databas med en tabell innehållande beskattnings-regler för olika länder. En användare av den beryktade Northwind-databasen har fått nys om er databas och önskar en applikation som kombinerar data från dessa två databaser. Tips: Tabellen "Suppliers" innehåller en kolumn med namnet "Country" som säkert skulle kunna fungera som sekundärnyckel. II. Skapa en databas med två tabeller och begränsa accessen till dessa. Gör sedan en vy som återspeglar delar av den information som ligger i de två underliggande tabellerna, ge annorlunda accessrättighet. Försök gärna att höja tillgängligheten, dvs. att man har högre accessrättighet via vyn. (Uppgiften kräver Management Studio Express och eventuellt flera olika Connections) Beskriv ingående hur du gått tillväga när du skapat din lösning samt redovisa väl valda delar av din källkod. För den som är lite extra intresserad: 7 Testa replikering av data mellan två SQL 2000/2005 Enterprise Servrar Installera en SQL Server på din dator (Installera t.ex. hela ”Developer”-servern) och replikera delar av data från en databas belägen på TFE-a307-1 eller annan dator. a. Hur fungerar uppdatering och synkronisering? b. Kan man replikera i båda riktningarna? Samma/Olika databas, Utred möjligheter och implementera, beskriv gärna i din rapport vad du kommer fram till 4 Appendix Gamla SQL 2000 server. Installation av SQL2000-client (om den inte redan finns installerad) Logga in som administratör (exempelvis med DOW-kontot) Installera SQL-klienten från SQL-servern. Du använder (Map Network Drive: \\130.239.115.11\SQLCD.) med IT-kontot eller (My Network Places: Ad\TFE-a307-1\SQLCD) Kör \DEVELOPER\AUTORUN.EXE (eller DEVELOPER\X86\SETUP\SETUPSQL.EXE) Kan ta tid att starta(minuter), har du tryckt ordentligt (Kommandofönster blinkar till) är det bara att vänta! Välj "Install Database Server" (ser ut att dö) Next Välj: Local Computer Välj: Create a new instance of… or install Client Tools Next (T.ex. TFE, Umeå universitet) Yes (Godkänn licensavtal) Installera bara klienten (Byt till "Client Tools Only") (Här är det naturligtvis möjligt att installera hela ”Developer”-servern till den lokala maskinen men det behövs inte för den här labben utan kan göras senare om det blir nödvändigt) Om ni tänker använda [Code Samples], välj dom också Next Next (Tar tid). Om IIS är igång får du en varning, stäng av den (Control panel, Administrative Tools, Internet Service Manager) innan du trycker Next. (Tar tid) Avrunda installationen !!!VIKTIGT annars kommer ni att bli Hackade!!! Installera senaste servicepack från SQL-serverdatorn. [SQLCD\sql2ksp3a\x86\setup\setupsql.exe eller SQLCD\sql2ksp3a\setup.bat] Avrunda installationen 5