sql >> Database teknologi >  >> Database Tools >> SSMS

SQL Database Migration med SSMS

Migrering af MSSQL mellem servere kan være udfordrende uden de rette retningslinjer for at holde dig på sporet. I denne artikel vil jeg skitsere de forskellige måder at migrere Microsoft SQL Server-databaser mellem servere eller instanser på. Uanset om du skal flytte en enkelt database, mange databaser, logins eller lagrede procedurer og visninger, har vi dig dækket!

Der er mange omstændigheder, hvor du bliver nødt til at flytte en database eller gendanne databaser. De mest almindelige årsager er:

  • Flytter til en helt ny server.
  • Flytter til en anden forekomst af SQL.
  • Oprettelse af en udviklingsserver eller live til en produktionsserver.
  • Gendannelse af databaser fra en sikkerhedskopi.

Der er to hovedmåder at flytte SQL-databaser på. Manuelt med Microsoft SQL Server Management Studio (SSMS) eller med kommandolinjen. Den metode, du vælger, afhænger af, hvad du skal nå. Hvis du flytter en enkelt database eller blot nogle få, vil manuelt sikkerhedskopiering og gendannelse af databaserne med SSMS være den nemmeste fremgangsmåde. Hvis du flytter mange databaser (tænk mere end 10), vil brug af kommandolinjemetoden fremskynde processen. Kommandolinjemetoden kræver mere forberedelse på forhånd, men hvis du overfører snesevis af databaser, så er det værd at bruge tid på at konfigurere scriptet i stedet for at migrere hver database individuelt. Hvis du ikke er sikker på, hvilken metode du skal bruge, så prøv den manuelle tilgang først, mens du bliver fortrolig med processen. Jeg anbefaler at læse hele vejen igennem for at få en dybere forståelse af metoden.

Nyttige referencer til terminologi

SSMS – Et akronym for Microsoft S QL S erver M anagement S tudio.

Kildeserver – Serveren eller instansen, du flytter databaser fra eller fra .

Destinationsserver – Serveren eller instansen, du flytter databaser til .

Den manuelle metode

Det kan være meget nemt at flytte SQL-databaser med den manuelle metode. Det er den foretrukne proces til at overføre nogle få eller mindre databaser. For at følge denne del af guiden skal du have MSSQL og Microsoft SQL Server Management Studio (SSMS) installeret.

Sikkerhedskopiering af databaser på kildeserveren

1. Begynd med at logge ind på kildeserveren (den server, du flytter databaser fra eller fra). Du vil gerne åbne Microsoft SQL Server Management Studio ved at vælge Start> Microsoft SQL Server>  Microsoft SQL Server Management Studio .

2. Log ind på SQL-serveren ved hjælp af Windows-godkendelse eller SQL-godkendelse.

3. Udvid serveren (i vores tilfælde SQL01 ), udvid Databaser , vælg den første database, du vil flytte (billedet nedenfor).

4. Højreklik på din database og vælg Opgaver klik derefter på Sikkerhedskopiér .

5. Herfra er du nu ved Backup-databasen skærmen. Du kan vælge en sikkerhedskopitype, såsom Fuld eller Differential , sørg for, at den korrekte database er valgt, og indstil destinationen for SQL backup. For vores eksempel kan vi lade Backup være Typ som Fuld .

6. Under Sikkerhedskopi Typ , skal du markere afkrydsningsfeltet for "Kun kopiering ." Hvis du kører DPM eller en anden form for serverbackup, skal du sikkerhedskopiere uden Kun kopiering flag vil forårsage et brud i backup-logkæden.

7. Du vil se en placering under Destination for stien til den nye backup. Typisk vil du Fjerne denne post og derefter Tilføj en ny for at vælge en mappe, som SQL har læse-/skriveadgang. Tilføjelse af en ny Backup-destination viser en sti, der ligner følgende:

C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\

Denne C:\-sti er, hvor din gemte databasesikkerhedskopi er. Bemærk denne placering til senere reference, da dette er standardstien til lagrede sikkerhedskopier og skal have korrekt læse-/skriveadgang til SQL-tjenester.

Bemærk:Avancerede brugere kan være komfortable med at forlade destinationen som den er, forudsat at tilladelserne er korrekte på outputmappen.

8. Tilføj derefter et filnavn til slutningen af ​​denne sti, såsom AdventureWorks2012-081418 .bak – Sørg for at afslutte filnavnet med filtypenavnet .bak, og vælg OK

10. Når du har trykket på OKVælg sikkerhedskopieringsdestination prompt, er du klar til at sikkerhedskopiere databasen! Alt du skal gøre nu er at trykke OK , og databasen vil begynde at sikkerhedskopiere. Du vil se en statuslinje i nederste venstre hjørne, og når sikkerhedskopieringen er færdig, vises et vindue med teksten 'Sikkerhedskopieringen af ​​databasen 'AdventureWorks2012' er gennemført. '

Naviger til destinationsstien, nævnt tidligere, (i dette tilfælde C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\ ) vil du se din nyoprettede fil (i dette tilfælde AdventureWorks2012-081418.bak ) - Tillykke! Denne fil er den fulde eksport af din database og er klar til at blive importeret til den nye server. Hvis du har flere databaser, skal du gentage ovenstående trin for hver database, du flytter. Efter kopiering af hele databaseprocessen til næste trin med gendannelse af databaser til destinationsserveren.

Gendannelse af databaser til destinationsserveren

Du skulle nu have en .bak-fil med alle dine databaser på kildeserveren. Disse databasefiler skal overføres til destinationsserveren. Der er adskillige måder at flytte dine data til destinationsserveren på; du kan bruge USB, Robocopy eller FTP. Efter at have kopieret en database kan du gemme den på din destinationsserver, for eksempel har vi gemt den på C-drevet i en mappe ved navn C:\dbbackups .

1. Åbn Microsoft SQL Server Management Studio.

2. Log ind på SQL-serveren ved hjælp af Windows-godkendelse eller SQL-godkendelse.

3. Udvid serveren og højreklik på Databaser og vælg Gendan database.

4. Gendan databasen skærmen ligner meget Sikkerhedskopieringsdatabasen skærm.Under Kilde vil du vælge Enhed i stedet for Database . Vælger Enhed giver dig mulighed for at gendanne direkte fra en fil. Når du har valgt Enhed , klik på gennemse-ikonet […]

5. Vælg Tilføj , og naviger derefter til den mappe, hvor dine .bak-filer findes. (I dette tilfælde C:\dbbackups ).

6. Vælg den første database .bak, du vil gendanne, og klik på OK.

7. Klik på OK og nu er du klar til at importere databasen. Før du importerer, lad os tage et kig på sektionen Indstillinger i venstre side. Under Valgmuligheder du vil se andre konfigurationer til gendannelse af databaser såsom Overskriv den eksisterende database , Bevar replikeringsindstillingerne og Begræns adgangen til den gendannede database . I dette tilfælde erstatter vi ikke en eksisterende database, så jeg vil lade alle disse muligheder være umarkerede. Hvis du ønskede at erstatte en eksisterende database (f.eks. har den sikkerhedskopierede database nyere data end på destinationsserveren, eller du erstatter en udviklings- eller produktionsdatabase), skal du blot vælge Overskriv den eksisterende database .

Bemærk:Avancerede brugere kan være komfortable med at forlade destinationen som den er, forudsat at tilladelserne er korrekte på outputmappen.

8. Klik på OK begynder gendannelsesprocessen som angivet af pop op-vinduet, der læser 'Database 'AdventureWorks2012' gendannet med succes.' Du har migreret din database fra kilden til destinationsserveren.

Gentag denne proces for hver database, du migrerer. Du kan derefter opdatere sti-referencer i dine scripts/applikationer for at pege på den nye server, verificere at migreringen var vellykket.

Migrering af Microsoft SQL Server-logins

Efter import af dine databaser, hvis du ikke er i stand til at oprette forbindelse ved hjælp af dit SQL-login, får du muligvis fejlen 'Login mislykkedes for bruger' eksempel.' (Microsoft SQL Server, fejl:18456). ' Fordi databasen er i den traditionelle login- og brugermodel , logins gemmes separat på kildeserveren, og legitimationsoplysninger er ikke indeholdt i selve databasen. Fra dette tidspunkt kan destinationsserveren konfigureres til at bruge Indeholdt databasebrugermodel som holder login i din database og ude af kildeserveren. Indtil da skal vi bevæge os og interagere med brugerne som en del af den traditionelle model. Fortsæt nedenfor for at fortsætte med migreringen af ​​dine SQL-brugere.

Sikkerhedskopiering og gendannelse af databaserne flyttede dine SQL-logins-relationer til databaserne (dine logins er stadig forbundet med de korrekte databaser med de korrekte tilladelser), men selve logins blev ikke overført til den nye server. Du kan bekræfte dette ved at åbne SSMS (SQL Server Management Studio) på destinationsserveren og navigere til Server> Sikkerhed> Login s. Du vil bemærke, at eventuelle brugerdefinerede SQL-logins, du oprettede på den tidligere server, ikke blev overført herover, men hvis du går til Server> Databaser> Din database (AdventureWorks2012 i dette tilfælde)> Sikkerhed> Brugere du vil se det korrekte login knyttet til databasen.

Hvis du har en eller to SQL-brugere, kan du blot slette brugerens tilknytning til databasen i Servere> Databaser> AdventureWorks2012> Sikkerhed> Brugere , genskab brugeren i Server> Sikkerhed> Logins og kortlægge det til den rigtige database.

Hvis du har mange logins, skal du følge en yderligere proces, der er beskrevet nedenfor. For at migrere alle SQL-brugere skal du åbne en Ny forespørgsel vindue på kildeserveren og kør følgende script:

SQL-loginscript

+

Dette script opretter to lagrede procedurer i kildedatabasen, som hjælper med at migrere disse logins. Åbn et nyt forespørgselsvindue, og kør følgende:
EXEC sp_help_revlogin

Denne forespørgsel udsender et script, der opretter nye logins til destinationsserveren. Kopier output fra denne forespørgsel, og gem det til senere. Du skal køre dette på destinationsserveren.

Når du har kopieret outputtet af denne forespørgsel, skal du logge ind på SSMS på destinationsserveren og åbne et nyt forespørgsel-vindue. Indsæt indholdet fra det forrige script (det skal have en række linjer, der ligner -- Login:BUILTIN\Administrators
CREATE LOGIN [BUILTIN\Administrators] FRA WINDOWS WITH DEFAULT_DATABASE =[master]), og tryk på Udfør.

Du har nu importeret alle SQL-login og kan nu bekræfte, at databaserne er blevet migreret til destinationsserveren ved at bruge dine tidligere legitimationsoplysninger.

Migrering af visninger og lagrede procedurer

Visninger og lagrede procedurer vil migrere med databasen, hvis du bruger de typiske SQL Tape-sikkerhedskopier. Følg instruktionerne nedenfor, hvis du har brug for at migrere visninger og lagrede procedurer uafhængigt.

  1. Åbn Microsoft SQL Management Studio på kildeserveren.
  2. Log ind på din SQL-server.
  3. Udvid serveren og samt Databaser .
  4. Højreklik på navnet på din database og gå til Opgaver> Generer scripts .
  5. Klik på Næste .
  6. Vi vil ændre Script til hele databasen og alle databaseobjekter for at Vælge specifikke databaseobjekter og tjek kun Visninger og lagrede procedurer.
  7. Klik på Næste, læg mærke til indstillingen Gem til fil. Bemærk den angivne filsti. I mit tilfælde er det C:\Users\Administrator\Documents\script.sql - Stien til gemte visninger og lagrede procedurer.
  8. Klik på Næste>> Næste>>Afslut, og vælg C:\Users\Administrator\Documents\script.sql og kopier den til destinationsserveren.
  9. Gå til destinationsserveren, åbn SSMS og log ind på SQL-serveren.
  10. Gå til Fil> Åbn> Fil eller brug tastaturgenvejen CTRL+O for at åbne SQL-scriptet. Vælg filen C:\Users\Administrator\Documents\script.sql for at åbne den.
  11. Du vil se scriptet genereret fra kildeserveren, der indeholder alle visninger og lagrede procedurer. Klik på Udfør eller brug tastaturgenvejen F5 og kør scriptet.
Bemærk:Desværre er der ingen indbygget måde at gøre dette på med kommandolinjen. Der er 3. parts værktøjer og endda et værktøj fra Microsoft kaldet mssql-scripter til mere avanceret scripting.

Du har nu migreret visningerne og de lagrede procedurer til din destinationsserver! Gentag denne proces for hver database, du migrerer. Lidt vejledning rækker langt i databaseadministration. Hver SQL-server vil have sine egne konfigurationer og forhindringer, men vi håber, at denne artikel har givet dig et stærkt grundlag for din Microsoft SQL Server-migrering.

Leder du efter en platform-uafhængig SQL-tjeneste med høj tilgængelighed, der er let skalerbar og kan vokse med din virksomhed? Tjek vores SQL as a Service-produkt, der tilbydes hos Liquid Web. Tal med en af ​​vores fantastiske hostingrådgivere for at finde den perfekte løsning til dig!


  1. Importerer .sql til MS Access ved hjælp af OBDC

  2. Forespørgsel virker i phpmyadmin, men ikke i PHP-script

  3. Opret forbindelse til tunneleret DB gennem phpMyAdmin

  4. Hvordan opretter jeg kontekstuelle AUTO_INCREMENT i MySql?