Institutionen för
Tillämpad fysik och elektronik
Stig Byström
Laboration: SQL Server
2008-04-04
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 gör labben på Campus och 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 (t.ex. 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 skickas 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 du gjort vid något tidigare tillfälle och 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.
OBS Behövs INTE om du använder Expressversionen!!
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