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 TasksCopyDataBase… 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 TasksExport 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