Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Relevanta dokument
Databaser design och programmering. Transaktionshantering och säkerhet säkerhetsproblem fleranvändarproblem transaktioner låsning

Transaktioner. 1. Transaktioner 2. Samtidighet ( concurrency ) och lås. 3. Deadlock. Kap. 17. Informatik B: Databashantering med SQL Server

Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Lösningar till tentamen i EDAF75

Stored procedure i ASP.NET

ÖVERVAKNING AV SQL SERVER

Databaser - Design och programmering. Säkerhetsproblem. SQL-injektion. Databashanteraren. Transaktion. Exempel. Transaktionshantering och säkerhet

KAP 16 BACKUP, RESTORE OCH RECOVERY

Structured query language (SQL)

Föreläsning 7: Transaktioner

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Vyer, Prepared Statements, Triggers

Databaser design och programmering Säkerhetsproblem Databashanteraren SQL-injektion

Föreläsning 6 Databaser och säkerhet

Transaktionshantering med samtidighetskontroll i databaser

Övningar i SQL. SQLAccess.doc Ove Lundgren

VAD GÖR DU / VEM ÄR DU?

Innehåll Security. Chapter 4 och 7 Beginning SQL Server 2008 for Developers

VAD GÖR DU / VEM ÄR DU?

Stored procedure i ASP.NET

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

SQL, nästlade delfrågor Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga.

Databasspråket SQL - online.

LEX INSTRUKTION REPLIKERING UPPGRADERING

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Innehåll Programability Del 2

Transaktioner och samtidighet

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

1.Lär känna MS SQL Observera. Tips. Förberedelse

Databasspråket SQL - online.

DVA234 Databaser. Dag Nyström, Introduktion till databaser och MS SQL Server

Kapitel 4 Arkivmenyn Innehåll

Databasspråket SQL - online.

Klientprogrammering mot databaser

INTRODUKTION TILL JDBC

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Tentamen. i Databasteknik. lördagen den 13 mars Tillåtna hjälpmedel: Allt upptänkligt material

Innehåll Översikt: Arbeta med databaser... 3 Översikt databaser i SQL Server... 4 Översikt databaser i SQL Server... 5 Hur information lagras i SQL

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Starta MySQL Query Browser

Introduktion till frågespråket SQL (v0.91)

Installationsanvisning Boss delad databas

SQL Server bygger på ett antal Windows tjänster (services), vilket är prioriterade program som körs i bakgrunden under OS kontroll.

Structured Query Language (SQL)

Tabeller och kolumner SQL. Lägga till en ny post. Lägga till en ny post

Databasspråket SQL - online.

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

Databasspråket SQL - online.

Skapa exempeldatabasen

Kunskapsbank ICARUS DB

Databaser & databasdesign. Personuppgiftslagen, säkerhet och transaktioner.

Föreläsning 2: Översikt över ett databassystem

KAP 18 SQL SERVER AGENT

Tentamen i Databasteknik

Disposition. 1. Kopplingen mellan Processanalys (DFDdiagram) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

TENTAMEN DATABASKUNSKAP ITEK12

Capitex dataservertjänst

Introduktion till Jasmine 1.2 ODQL

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

Introduktion MySQL och MariaDB

Detta dokument skall ge en kortfattad introduktion till Jasmine installationen vid DSV.

Tentamen i Databasteknik

Databasteknik för D1, SDU1 m fl

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

ADO.NET Murach Kapitel 17-20

Innehåll Security. Chapter 4 och 7 Beginning SQL Server 2008 for Developers

Rebus Backup för SQL-databaser

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Installationsanvisning. Dokumenttyp Installationsanvisning Område Boss med delad databas

Filbeskrivningar Eller på särskild CD skiva

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

DI Studio nyheter

L0009B. Moment. Introduktion till geografiska databaser: G:\L0009B\Allmänt\IntroGeoDB.pdf (F)

Uppdatera Easy Planning till SQL

Vad är en databas? Databasutveckling Med MySQL/MariaDB

MySQL. Maths Göthe. 25 februari Inledning Några konventioner Licens... 2

Sample exam questions. Database exam TIG058

Nya webbservern Dvwebb.mah.se

Design och underhåll av databaser

Labb LABB 15. XML användande i praktiken. Plushögskolan Frågeutveckling inom MSSQL - SU14

LEX INSTRUKTION LEX LDAP

9. :new och :old -värden 10. Triggerns olika delar 11. Olika typer av triggrar 12. Kodexempel. Pär Douhan,

Databasutveckling Introduktion till SQL och TSQL

Mål med lektionen! Repetera och befästa kunskaperna.

WCMS-15, Webbutvecklare CMS

Programbeskrivning. Chaos på Web. Version

Systemrekommendation. Artvise Contact Center

Language Integrated Query, LINQ, och databaser

Transkript:

Databasföreläsning Del 2 lagrade procedurer, vyer och transaktioner

Lagrade procedurer (Stored procedures) En stored procedure är en procedur (funktion) lagrad i en databas, och exekveras direkt på databasservern Den har ett namn, en uppsättning parametrar och satser Består av en eller flera SQL-satser som kompilerats till en och samma procedur

Fördelar med lagrade procedurer: Lagrade procedurer förbättrar prestandan i applikationen Minskar trafiken mellan applikationen och databasservern -> mindre kommunikationstid Get_Salary() Get_Salary() Databas Lagrad prodecur Get_Salary() Get_Salary(...)

Fördelar med lagrade procedurer: Skapar kod som är modulär och går att återanvända i valfri del av applikationen Säkerhet det går att begränsa applikationen till att endast använda lagrade procedurer Ökad funktionalitet i form av argument, variabler, loopar, vilkor, retur-värden med mera Förkompilerade frågor databas-servern bestämmer i förväg vilket sätt att köra frågan som är snabbast

Första delen av SQL-kommandot som skapar en procedur är: CREATE PROCEDURE (kan förkortas: CREATE PROC) Nästkommande kommando är namnet på proceduren: CREATE PROCEDURE procgetnames Därefter kommer själva proceduren, vanligtvis mellan AS och GO: CREATE PROCEDURE procgetname AS SELECT names FROM users GO;

För att sedan köra proceduren kan vi antigen använda grafiska gränssnittet i Visual Studio, eller via SQL-kommando: Finns tre sätt att med SQL anropa en lagrad procedur: 1. namnpåprocedur 2. EXEC namnpåprocedur 3. EXECUTE namnpåprocedur

Lagrade procedurer kan ta argument vid anrop, samt använda variabler. Ex: CREATE PROC spgetpersonsbyplats @Plats int AS BEGIN END Argument SELECT Pe_Fornamn, Pe_Efternamn FROM Tbl_Person WHERE Pe_Bor = @Plats För att anropa: spgetpersonsbyplats 1

Lagrade procedurer går att skapa antingen manuellt med SQLkommandon, eller via grafiskt gränssnitt i Visual Studio

För att ändra en lagrad procedur används: ALTER PROCEDURE uppdateradprocedur För att radera en lagrad procedur används: DROP PROCEDURE namnpåprocedur

Vyer (Views) Vyer kan betraktas som en virtuell tabell med vilken man kan se delar av en eller flera tabell/er på det sätt man önskar samlade på ett ställe. En vy lagras som en SQL-fråga vilken exekveras så fort vyn används. En vy kan behandlas som en vanlig tabell med vissa restriktioner som insättning av ny data, borttagning eller modifiering. En vy skapas med kommandot create view Innehållet i vyn kan listas ut med vanliga select-satser som används för andra tabeller. Vyn kan tas bort med kommandot drop view vynamn.

Fördelar med vyer En vy förenklar komplexa frågor. Tex då en sekvens av frågor krävs för att erhålla ett resultat. Användaren behöver inte veta hur många tabeller man utnyttjar eller hur dessa tabeller som man använder för att skapa den samlade tabellen ser ut, utan allting ses som en enda tabell. Vidare kan kolumn-namn förenklas. Ger ytterligare säkerhet, eftersom olika användare har olika åtkomst till databasen och vyer kan användas för att kontrollera den informationen användaren har access till.

Vyer En vy är resultatet av en lagrad SQL-fråga Ett exempel på en SQL-fråga: SELECT Tbl_Person.Pe_Fornamn, Tbl_Person.Pe_Efternamn, Tbl_Plats.Pl_Lan FROM Tbl_Person JOIN Tbl_Plats ON Tbl_Person.Pe_Bor=Tbl_Plats.Pl_Id ORDER BY Tbl_Person.Pe_Efternamn; Pe_Fornamn Pe_Efternamn Pl_Lan 1 Siv Kvist Västerbotten 2 Tina Olofsson Västerbotten 3 Olle Svensson Halland

Vyer Som en vy: CREATE VIEW vpersoner AS SELECT Tbl_Person.Pe_Fornamn AS Fornamn, Tbl_Person.Pe_Efternamn AS Efternamn, Tbl_Plats.Pl_Lan AS Lan FROM Tbl_Person JOIN Tbl_Plats ON Tbl_Person.Pe_Bor=Tbl_Plats.Pl_Id; Fornamne Efternamn Lan 1 Olle Svensson Halland 2 Tina Olofsson Västerbotten 3 Siv Kvist Västerbotten

Vyer För att sedan visa vyn med en SQL-fråga: SELECT * FROM vpersoner; Fornamne Efternamn Lan 1 Olle Svensson Halland 2 Tina Olofsson Västerbotten 3 Siv Kvist Västerbotten

Vyer - viktigt CREATE VIEW vpersoner AS SELECT * FROM Tbl_Person ORDER BY Pe_Eftenamn; ORDER BY fungerar ej i vyer då rad-ordningen i en tabell eller vy inte är definerad.

Vyer Dock fungerar det att i efterhand använda ORDER BY på själva vyn: SELECT * FROM vpersoner ORDER BY Lan; Fornamne Efternamn Lan 1 Olle Svensson Halland 2 Tina Olofsson Västerbotten 3 Siv Kvist Västerbotten

Exempel 1 CREATE VIEW vdept AS (SELECT empno, ename, job, mgr FROM emp WHERE deptno = 30) SELECT * FROM vdept; EMPNO ENAME JOB MGR 7698 BLAKE MANAGER 7839 7654 MARTIN MANAGER 7698 7499 ALLEN SALESMAN 7698 7844 TURNER SALESMAN 7698 7900 JAMES CLERK 7698

Exempel 2 Vyer används ofta för att skapa en samlad information om verksamhet eller den information som databasen innehåller. CREATE VIEW dept_size (avdelning, antal_anställda) AS( SELECT dname, count(empno) FROM dept, emp WHERE dept.deptno = emp.deptno(+) GROUP BY dname ); SELECT * FROM dept_size; avdelning antal_anställda ACCOUNTING 3 OPERATIONS 0 RESEARCH 5

Vyer Uppdatera och radera Vyer Vyer går att uppdatera med: ALTER VIEW Vyer raderas med: DROP VIEW namnpåview

Vyer går att skapa antingen manuellt med SQL-kommandon, eller via grafiskt gränssnitt i Visual Studio

Transaktioner

Transaktioner (transactions) En serie operationer som hör ihop kallas transaktion. BEGIN TRANSACTION; sql_statement statement_block COMMIT TRANSACTION;

ACID A - atomicity (odelbarhet). C - consistency preserving ("konsistensbevarande, logiskt koherent). I isolation (isolering). D durability ( hållbarhet ).

När ska jag använda transactions? I en batch, där flera rader måste läggas in, uppdateras eller raderas som en enda enhet. När en ändring till i en tabell kräver att andra tabeller hålls konsekventa. När du ändrar data i två eller flera databaser samtidigt. I distribuerade transaktioner, där data manipuleras i databaser på olika servrar.

Transaktionen sker i 3 steg 1.Påbörja transaktionen. 2.Processa kommandona. 3.Kontrollera om något fel skett. Om fel har skett rollbacka transaktionen Annars commita transaktionen

Commit och Rollback Commit Rollback En krasch

Transaktions-kontroll COMMIT För att spara ändringar. ROLLBACK För att rulla tillbaka eller ångra ändringar SAVEPOINT Skapar en återställningspunkt i en transaction som en rollback återställs till. SET TRANSACTION Namnger transaktionen.

Recovery Avbrutna transaktioner Ska tas bort. Transaktioner som räknas som klara Måste kontrollereras

Loggfilen Där står Vilken transaktion det är. Vilket dataobjekt det handlar om. Vad det gamla värdet på dataobjektet var och Vad det nya värdet ska bli.

Backup Regelbundet göra backup När en disk går sönder sätter man in en ny disk, kopierar backupen till disken och går igenom logg-filen för att göra de ändringar som finns noterade där, vid den tidpunkt reservkopian gjordes. Se till att inte logg-filen ligger på samma disk som själva databasen.

Isolering Transaktionerna ska hållas isolerade från varandra. Detta görs vanligen med olika typer av lås.

Risker Förlorade uppdateringar Läsning av smutsiga data (dirty reads) Inkonsistenta resultat. Spökposter

Förlorad uppdatering Transaktion 1 Transaktion 2 Läs(L) L = L + 50 Skriv(L) Läs(L) L = L + 10000 Skriv(L) Transaktion 1 Transaktion 2 Läs(L) L = L + 50 Läs(L) L = L + 10000 Skriv(L) Skriv(L)

Dirty read Transaktion 1 Transaktion 2 Läs(X) X = X + 1 Skriv(X) Läs(X) Y = X * 3 Skriv(Y) Rollback

Oupprepbara läsningar (non-repeadly reads) Transaktion 1 Transaktion 2 Läs(X) Läs(X) X = X +1 Skriv(X) Commit Läs(X)

Felaktiga summor Transaktion 1 Transaktion 2 Summan = 0 Läs(X) Summan = Summan + X Läs(X) X = X - 50 Skriv(X) Läs(Y) Y = Y + 50 Skriv(Y) Commit Läs(Y) Summan = Summan + Y

Spökposter Transaktion 1 Transaktion 2 select * from T where A = 17; insert into T(A) values 17; select * from T where A = 17;

Isoleringsnivåer 1.READ UNCOMMITTED 2.READ COMMITTED 3.REPEATABLE READ 4.SERIALIZABLE (Default) 5.SNAPSHOT

Isoleringsnivåer forts