KAP 17 FLYTTA DATABASER
 Olika sätt att flytta och kopiera
databaser/objekt
 Kort om replikering
 Problem som kan uppstå
Tommy Löfqvist
Institutionen
Sven
för Kommunikation
Lnu/DFM
Åke Johansson o design
1
FLYTTA OCH KOPIERA DATABASER
Om du behöver flytta eller kopiera databaser från en server till en annan, eller om du har
mobila användare som bär med sig sina databaser på sina laptops, behöver du känna till olika
metoder att göra detta.
Andra tillfällen då det kan vara bra att flytta en databas är då den ska flyttas till annan
diskdrive, då man vill ta kopia på produktionsdatabasen för att testa på eller då man vill
skapa en read only kopia för rapporttagning
Olika sätt att flytta / kopiera databaser
För att flytta eller kopiera databaser från en server till en annan finns följande
metoder att tillgå.
1. Detach / Attach
(koppla från/till)
 Detach kopplar bort databasfilerna från en server.
 Datafilerna .mdf, .ndf och .ldf kan sedan flyttas till en disk som tillhör en
annan SQL-server.
 Attach ansluter databasfilerna till den nya servern.
 Kan göras med procedurerna sp_attach_db1) resp. sp_detach_db eller
direkt från Management Studio.
1)
Deprecated - Använd CREATE DATABASE WITH ATTACH i fortsättningen. Se hjälpen
Tommy Löfqvist
Institutionen
Sven
för Kommunikation
Lnu/DFM
Åke Johansson o design
2
1
FLYTTA OCH KOPIERA DATABASER
2. Backup / Restore (Säkerhetskopiera/Återställa)
 Ta en backup på databasen som ska flyttas.
 Kopiera backupfilen till den nya serverns diskar och gör restore på den där.
Nytt namn kan anges.
3. Copy Database Wizard
 Man anger käll- och målserver. Databasen kopieras därefter från den ena
servern till den andra.
 Kräver att du tillhör sysadmin rollen på både käll och målservern. Agenten
måste vara startad.
 Starta genom att välja en godtycklig databas, högerklicka och välj
TasksCopyDataBase…
4. Export data… / Import data…
 Importerar/exporterar data från annan databas till befintlig eller ny tabell
 Starta genom att välja en godtycklig databas, högerklicka och välj
TasksExport Data…/Import Data…
Tommy Löfqvist
Institutionen
Sven
för Kommunikation
Lnu/DFM
Åke Johansson o design
3
FLYTTA OCH KOPIERA DATABASER
5. SQL Server Integration Services - SSIS
 Grafiskt mångsidigt verktyg som förutom att kopiera hela databaser även kan
kopiera och transformera data från många olika källor och destinationer
 Starta genom att klicka på Connect Button och välj Integration Services,
välj sedan att ansluta till Integration Services i inloggningsdialogen
6. Kopiera skriptad databas
 Det finns möjlighet att skripta (delar av) en databas med SQL-DDL, även data.
 Starta genom att högerklicka på database och välj Script Database as…
 Skriptet kan sedan köras på målservern.
Kort om replikering
Replikering innebär kortfattat att data distribueras och synkroniseras mellan
databaservrar
Används t ex då ett företag har flera databasservrar som är lokaliserade på olika platser. När data ändras
på den ena servern vill man att motsvarande data på andra servrar också ska uppdateras.
Replikering kan gå till på i princip två sätt.
1. En server prenumererar (subscribe) på data från annan server (publisher)
som automatiskt skickas till denna när data förändras.
2. Servern själv hämtar data från huvudservern (publisher).
Tommy Löfqvist
Institutionen
Sven
för Kommunikation
Lnu/DFM
Åke Johansson o design
4
2
PROBLEM SOM KAN UPPSTÅ
Problem - felmappade användare
WebUser
SID = 10203040…
Server A
WebUser
SID = 99999999…
Server B
De användare som är user till databasen på källdatabasen saknas kanske på
måldatabasen. Det blir då problem med de rättigheter som man gett användarna.
Login med samma namn på olika servrar är inte likvärdiga. De har olika SID, som
är den interna kod som de egentligen identifieras med. (Windowsanvändare i samma
domän har dock samma SID inom domänen).
Olika lösningar
 Lägg in nya login och user på den nya servern. Inte bra när rättigheter är
satta på användare. Jobbigt att dela ut dessa igen.
 Sätt inte rättigheter på users - sätt dem på roller istället, de följer
databasen. På den nya servern läggs de nya/befintliga login'en till i rollerna.
Rättigheter behöver inte sättas om.
 Mappa om nya/befintliga login på den nya servern.
Använd sp_change_users_login för att mappa om SID så de stämmer.
SID = Security Identification Number
Tommy Löfqvist
Institutionen
Sven
för Kommunikation
Lnu/DFM
Åke Johansson o design
5
3