PRIMARY RAID 10 RAID 5 RAID 1 - Lnu.seorion.lnu.se/pub/education/course/1DV423... · Datafilerna...

Preview:

Citation preview

1

Datafiler tillhör alltid en filgrupp. Det måste alltid finnas en PRIMARY group. Det är inget som hindrar att datafiler på olika diskar tillhör samma filgrupp.

PRIMARY gruppen innehåller huvudfilen till databasen , master data file, som default har filändelsen .mdf. Denna filen innehåller förutom användarens dataobjekt (tabeller, procedurer vyer etc.) även ett stort antal systemtabeller som hör till varje databas.

dba (database administrator) kan också fördela databasen på flera datafiler där de nya bör ha filändelsen .ndf.

Datafilerna bör ligga på diskar med högsta prestanda t ex RAID 10 eller RAID 5.

Loggfilen (.ldf) ska inte ligga på samma disk som datafilerna, utan på en egen disk där säkerheten är prioriterad framför högsta hastighet t ex RAID 1

Tabeller som ofta läses samtidigt kan läggas i olika filgrupper på olika diskar för att öka prestanda. De kan då läsas samtidigt.

Filerna läggs default i C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL

Detta kan ändras via inställningar som nås via properties på Servern:

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.

2

Lägg märke till att data och loggfilerna har både ett logiskt

namn, t ex. MyDB, som används internt och ett fysiskt namn,

tex.C:\Data\MyDBase.mdf, som används externt.

Ursprunglig storlek (initial size) kan anges (minst 3MB).

I Autogrowth anges om filen får växa, och i så fall hur mycket.

Använd …-knappen för att ställa in detta!

Förutom den nödvändiga .mdf – filen och .ldf –filen har här

skapats en extra datafil MyDB_data2.ndf på F: och som lagts i

en egen filgrupp (som i detta fallet är read only)

3

CREATE DATABASE kommandot är i själva verket betydligt mer

komplicerat. Se Books On Line (BOL) för detaljer – Normalt ska du välja

att titta på det avsnitt som är markerat (Transact SQL).

De avsnitt i syntax-specifikationen som omges med [ ] kan utelämnas,

tecknet | betyder eller.

Tyvärr innehåller många exempel så kallad dynamisk SQL som medger

att man kan bygga upp kommandot med variabler. Exemplen ovan

använder inga variabler.

4

Lägg märke till att parenteserna för alla grupper och loggfil ser i princip

likadana ut. (Underlättar inskrivning!)

Se "Books On Line" för fullständig syntax och fler exempel! De är inte

dock alltid så enkla eftersom de är givna som dynamisk sql för att

möjliggöra variabler i koden.

5

Nästan allt går att ändra via Management Studio, men det finns uppgifter

som endast går eller görs bättre med DDL-kommandon.

Administratörer vill gärna skripta databaser och köra skript med

kommandon, vilket kräver viss kunskap om DDL-kommandon.

6

7

8

I DDL kan man även ange datatyper enligt ANSI 92. Tex integer istället för

int.

9

10

11

12

13

14

15

16

Tabeller som innehåller data kan också ändras om inte ändringen kommer

i konflikt med redan sparad data.

Man kan inte direkt ändra en kolumn som innehåller en sträng eller float till

ett int.

Foreign key kan inte läggas till / ändras om det inte finns en motsvarande

pk som passar. Man kan då vara tvungen att tillåta null-värden och i

efterskott manuellt mata in passande data.

17

18

19

Alla constraint s (ej NULL/NOT NULL) har ett eget namn som skapas

automatiskt om man inte definierar det själv.

I kolumnen frakt i Orders visas hur man kan välja ett beskrivande namn.

persID i Orders är en främmande nyckel (fk) till tabellen Personal.

Kopplingen fk-pk görs med REFERENCES personal(persID).

Primärnyckeln i Orderrad är sammansatt av orderID och radID. En

sammansatt primärnyckel kan INTE definieras genom att skriva PRIMARY

KEY på dessa båda rader. Det måste göras separat t ex sist i tabellen

med PRIMARY KEY (orderID, radID),

I orderrad har vi också satt Referentiell Integritet med ON DELETE

CASCADE och ON UPDATE NO ACTION.

Vi har alltså sett två sätt att definiera constraints i samband med

tabelldefinitionen . - Antingen direkt i varje rad eller sist efter alla

kolumnerna.

20

Innan du drar relationerna i ett diagram, måste båda tabellerna finnas i

diagrammet. På samma sätt måste båda tabellerna finnas innan man

refererar till föräldratabellen i FOREIGN key constraint. För att kunna

skripta tabeller i godtycklig ordning måste man därför kunna lägga till

constraint i efterhand. Detta gör man med ALTER TABLE med tillägget

ADD

För att lägga till den sammansatta primärnyckel n id1 och id2 till tabellen

personprojekt blir det så här:

ALTER TABLE Personprojekt

ADD PRIMARY KEY (ID1,ID2);

För koppla ihop tabellerna kund och orders skriver man så här:

ALTER TABLE Orders

ADD CONSTRAINT FK_Kund_Orders -- frivilligt namn

FOREIGN KEY (kundID)

REFERENCES kund(kundID)

Vi får automatiskt NO ACTION på både DELETE och UPDATE

21

22

I definitionerna kan vi se att man använt constraints ihop med

kolumndefinitioner, att man ibland använt constraintnamn och ibland inte.

Vi kan också se att man lagt in kommentarer i tabelldefinitionerna.

Här kommer ett exempel till:

CREATE TABLE jobs

(

job_id int PRIMARY KEY IDENTITY CLUSTERED NOT NULL,

job_desc varchar(50) DEFAULT 'New Position‘ NOT NULL,

min_lvl tinyint CHECK (min_lvl >= 10) NOT NULL,

max_lvl tinyint CHECK (max_lvl <= 250) NOT NULL

)

23

24

25

Förslag till svar till vissa uppgifter

4. CREATE DATABASE Firman

5. a) ALTER DATABASE

MODIFY FILE (NAME=Firman_data, SIZE=10)

b) DROP DATABASE Firman

6a) int, b) bit c) money el. decimal d) float/real e) char(11) f) varchar(100)

g) varchar(max) h) varbinary(max) i) nvarchar(20) k) tinyint

10. I PRIMARY filegroup

11.Man kan skapa en beräknad kolumn som inte sparas utan beräknas på

av SQL Server

13. ALTER TABLE Produkt

ADD antal int default (0) check (between 0 and 99) NOT NULL

15 Ia) Går bra Ib) Går inte om den har produkter Ic) Går inte om det

finns Produkt med detta KatID

IIa) Går bra IIb) Går bra! Relaterade produkter raderas också IIc) Går

bra! KatID i relaterade Produkter ändras också.

26

Recommended