sql >> Databasteknik >  >> Database Tools >> SSMS

SQL-databasmigrering med SSMS

Att migrera MSSQL mellan servrar kan vara utmanande utan de rätta riktlinjerna för att hålla dig på rätt spår. I den här artikeln kommer jag att beskriva de olika sätten att migrera Microsoft SQL Server-databaser mellan servrar eller instanser. Oavsett om du behöver flytta en enskild databas, många databaser, inloggningar eller lagrade procedurer och vyer har vi dig täckt!

Det finns många omständigheter där du kommer att behöva flytta en databas eller återställa databaser. De vanligaste orsakerna är:

  • Flyttas till en helt ny server.
  • Flytta till en annan instans av SQL.
  • Skapa en utvecklingsserver eller gå live till en produktionsserver.
  • Återställer databaser från en säkerhetskopia.

Det finns två huvudsakliga sätt att flytta SQL-databaser. Manuellt med Microsoft SQL Server Management Studio (SSMS) eller med kommandoraden. Vilken metod du väljer beror på vad du behöver åstadkomma. Om du flyttar en enskild databas eller bara några få, är manuell säkerhetskopiering och återställning av databaserna med SSMS det enklaste sättet. Om du flyttar många databaser (tänk mer än 10) kommer användningen av kommandoradsmetoden att påskynda processen. Kommandoradsmetoden kräver mer förberedande arbete i förväg, men om du överför dussintals databaser är det väl värt tiden att konfigurera skriptet istället för att migrera varje databas individuellt. Om du inte är säker på vilken metod du ska använda, prova den manuella metoden först medan du blir bekväm med processen. Jag rekommenderar att du läser hela vägen för att få en djupare förståelse av metoden.

Användbara referenser för terminologi

SSMS – En akronym för Microsoft S QL S erver M anagement S tudio.

Källserver – Servern eller instansen du flyttar databaser från eller av .

Destinationsserver – Servern eller instansen du flyttar databaser till .

Den manuella metoden

Att flytta SQL-databaser med den manuella metoden kan vara mycket enkelt. Det är den föredragna processen för att överföra ett fåtal eller mindre databaser. För att följa den här delen av guiden måste du ha MSSQL och Microsoft SQL Server Management Studio (SSMS) installerat.

Säkerhetskopiera databaser på källservern

1. Börja med att logga in på källservern (servern du flyttar databaser från eller från). Du kommer att vilja öppna Microsoft SQL Server Management Studio genom att välja Start> Microsoft SQL Server>  Microsoft SQL Server Management Studio .

2. Logga in på SQL-servern med Windows-autentisering eller SQL-autentisering.

3. Expandera servern (i vårt fall SQL01 ), expandera Databaser , välj den första databas du vill flytta (bilden nedan).

4. Högerklicka på din databas och välj Tasks klicka sedan på Säkerhetskopiera .

5. Härifrån är du nu vid Säkerhetskopiera databasen skärm. Du kan välja en säkerhetskopia som Full eller Differential , se till att rätt databas är vald och ställ in destinationen för SQL-säkerhetskopian. För vårt exempel kan vi lämna Backup Typ som Full .

6. Under Säkerhetskopiering Typ , markera rutan för "Endast kopieringskopiering .” Om du kör DPM eller annan form av serversäkerhetskopiering, säkerhetskopiera utan Endast kopiering flaggan kommer att orsaka ett avbrott i backuploggkedjan.

7. Du kommer att se en plats under Destination för sökvägen till den nya säkerhetskopian. Vanligtvis Ta bort denna post och sedan Lägg till en ny för att välja en mapp som SQL har läs-/skrivbehörighet. Lägga till en ny Reservdestination visar en sökväg som liknar följande:

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

Denna C:\-sökväg är där din lagrade databassäkerhetskopiering finns. Notera den här platsen för senare referens, eftersom detta är standardsökvägen till lagrade säkerhetskopior och måste ha korrekt läs-/skrivåtkomst för SQL-tjänster.

Obs:Avancerade användare kan vara bekväma med att lämna destinationen som den är, förutsatt att behörigheterna är korrekta för utdatamappen.

8. Lägg sedan till ett filnamn i slutet av denna sökväg, till exempel AdventureWorks2012-081418 .bak – Se till att avsluta filnamnet med filtillägget .bak och välj OK

10. När du har tryckt på OKVälj destination för säkerhetskopiering uppmaning är du redo att säkerhetskopiera databasen! Allt du behöver göra nu är att trycka på OK , och databasen kommer att börja säkerhetskopiera. Du kommer att se en förloppsindikator i det nedre vänstra hörnet, och när säkerhetskopieringen är klar visas ett fönster som säger 'Säkerhetskopieringen av databasen 'AdventureWorks2012' har slutförts framgångsrikt. '

Navigera till destinationssökvägen, som nämnts tidigare, (i det här fallet C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\ ) kommer du att se din nyskapade fil (i det här fallet AdventureWorks2012-081418.bak ) – Grattis! Denna fil är den fullständiga exporten av din databas och är redo att importeras till den nya servern. Om du har fler databaser, upprepa sedan stegen ovan för varje databas du flyttar. Efter att ha kopierat all databasprocess till nästa steg för att återställa databaser till målservern.

Återställer databaser till målservern

Du bör nu ha en .bak-fil med alla dina databaser på källservern. Dessa databasfiler måste överföras till målservern. Det finns många sätt att flytta din data till destinationsservern; du kan använda USB, Robocopy eller FTP. Efter att ha kopierat en databas kan du lagra den på din destinationsserver, till exempel har vi lagrat den på C-enheten i en mapp som heter C:\dbbackups .

1. Öppna Microsoft SQL Server Management Studio.

2. Logga in på SQL-servern med Windows-autentisering eller SQL-autentisering.

3. Expandera servern och högerklicka på Databaser och välj Återställ databas.

4. Återställ databas skärmen ser väldigt lik ut Säkerhetskopiera databasen skärm.Under Källa vill du välja Enhet istället för Databas . Välj Enhet låter dig återställa direkt från en fil. När du har valt Enhet , klicka på bläddringsikonen […]

5. Välj Lägg till , navigera sedan till mappen där dina .bak-filer finns. (I det här fallet, C:\dbbackups ).

6. Välj den första .bak databasen som du vill återställa och klicka på OK.

7. Klicka på OK och nu är du redo att importera databasen. Innan du importerar, låt oss ta en titt på avsnittet Alternativ på vänster sida. Under Alternativ du kommer att se andra konfigurationer för att återställa databaser som Skriv över den befintliga databasen , Bevara replikeringsinställningarna och Begränsa åtkomst till den återställda databasen . I det här fallet ersätter vi inte en befintlig databas så jag lämnar alla dessa alternativ omarkerade. Om du ville ersätta en befintlig databas (till exempel den säkerhetskopierade databasen har nyare data än på destinationsservern eller om du ersätter en utvecklings- eller produktionsdatabas) väljer du bara Skriv över den befintliga databasen .

Obs:Avancerade användare kan vara bekväma med att lämna destinationen som den är, förutsatt att behörigheterna är korrekta för utdatamappen.

8. Klicka på OK startar återställningsprocessen som indikeras av popup-fönstret som läser 'Databas 'AdventureWorks2012' har återställts framgångsrikt.' Du har migrerat din databas från källan till målservern.

Upprepa denna process för varje databas som du migrerar. Du kan sedan uppdatera sökvägsreferenser i dina skript/applikationer för att peka på den nya servern, verifiera att migreringen lyckades.

Migrera Microsoft SQL Server-inloggningar

Efter att ha importerat dina databaser om du inte kan ansluta med din SQL-inloggning, kan du få felmeddelandet "Inloggning misslyckades för användarexempel." (Microsoft SQL Server, fel:18456). ' Eftersom databasen finns i Traditionell inloggnings- och användarmodell , inloggningar lagras separat i källservern och inloggningsuppgifterna finns inte i själva databasen. Från och med denna tidpunkt kan destinationsservern konfigureras för att använda innehållsdatabasanvändarmodellen som håller inloggningarna i din databas och utanför källservern. Tills dess måste vi röra oss och interagera med användarna som en del av den traditionella modellen. Fortsätt nedan för att fortsätta med migreringen av dina SQL-användare.

Säkerhetskopiering och återställning av databaserna flyttade dina SQL-inloggningar till databaserna (dina inloggningar är fortfarande associerade med rätt databaser med rätt behörigheter) men själva inloggningarna överfördes inte till den nya servern. Du kan verifiera detta genom att öppna SSMS (SQL Server Management Studio) på destinationsservern och navigera till Server> Säkerhet> Logga in s. Du kommer att märka att alla anpassade SQL-inloggningar som du skapade på den tidigare servern inte överfördes hit, men om du går till Server> Databaser> Din databas (AdventureWorks2012 i det här fallet)> Säkerhet> Användare du kommer att se rätt inloggning kopplad till databasen.

Om du har en eller två SQL-användare kan du bara ta bort användarens koppling till databasen iSerrar> Databaser> AdventureWorks2012> Säkerhet> Användare , återskapa användaren i Server> Säkerhet> Inloggningar och mappa den till rätt databas.

Om du har många inloggningar måste du följa en ytterligare process som beskrivs nedan. För att migrera alla SQL-användare, öppna en Ny fråga fönstret på källservern och kör följande skript:

SQL-inloggningsskript

+

Detta skript skapar två lagrade procedurer i källdatabasen som hjälper till med att migrera dessa inloggningar. Öppna ett nytt frågefönster och kör följande:
EXEC sp_help_revlogin

Den här frågan matar ut ett skript som skapar nya inloggningar för målservern. Kopiera utdata från denna fråga och spara den till senare. Du måste köra detta på destinationsservern.

När du har kopierat utdata från denna fråga loggar du in på SSMS på destinationsservern och öppnar ett nytt frågefönster. Klistra in innehållet från det föregående skriptet (det bör ha en rad rader som liknar -- Login:BUILTIN\Administratorer
SKAPA LOGIN [BUILTIN\Administratörer] FRÅN WINDOWS MED DEFAULT_DATABASE =[master]) och tryck på Execute.

Du har nu framgångsrikt importerat alla SQL-inloggningar och kan nu verifiera att databaserna har migrerats till destinationsservern genom att använda dina tidigare referenser.

Migrera vyer och lagrade procedurer

Vyer och lagrade procedurer migreras med databasen om du använder vanliga SQL Tape-säkerhetskopior. Följ instruktionerna nedan om du behöver migrera vyer och lagrade procedurer oberoende av varandra.

  1. Öppna Microsoft SQL Management Studio på källservern.
  2. Logga in på din SQL-server.
  3. Utöka servern och samt Databaser .
  4. Högerklicka på namnet på din databas och gå till Uppgifter> Generera skript .
  5. Klicka på Nästa .
  6. Vi kommer att ändra Skript hela databasen och alla databasobjekt för att välja specifika databasobjekt och kontrollera bara Visningar och Lagrade procedurer.
  7. Klicka på Nästa, lägg märke till alternativet Spara till fil. Notera filsökvägen som anges. I mitt fall är det C:\Users\Administrator\Documents\script.sql - Sökvägen för sparade vyer och lagrade procedurer.
  8. Klicka på Nästa>> Nästa>>Avsluta, och välj C:\Users\Administrator\Documents\script.sql och kopiera den till målservern.
  9. Gå till målservern, öppna SSMS och logga in på SQL-servern.
  10. Gå till Arkiv> Öppna> Arkiv eller använd kortkommandot CTRL+O för att öppna SQL-skriptet. Välj filen C:\Users\Administrator\Documents\script.sql för att öppna den.
  11. Du kommer att se skriptet genererat från källservern som innehåller alla vyer och lagrade procedurer. Klicka på Kör eller använd kortkommandot F5 och kör skriptet.
Obs:Tyvärr finns det inget inbyggt sätt att göra detta med kommandoraden. Det finns verktyg från tredje part och till och med ett verktyg från Microsoft som heter mssql-scripter för mer avancerad scripting.

Du har nu migrerat vyerna och de lagrade procedurerna till din destinationsserver! Upprepa denna process för varje databas du migrerar. Lite vägledning räcker långt i databasadministration. Varje SQL-server kommer att ha sina egna konfigurationer och hinder att möta, men vi hoppas att den här artikeln har gett dig en stark grund för din Microsoft SQL Server-migrering.

Letar du efter en plattformsoberoende SQL-tjänst med hög tillgänglighet som är lätt skalbar och kan växa med ditt företag? Kolla in vår SQL as a Service-produkt som erbjuds på Liquid Web. Prata med en av våra fantastiska värdrådgivare för att hitta den perfekta lösningen för dig!


  1. Ogiltigt objektnamn - lagrad procedur

  2. SQL SERVER MANAGEMENT STUDIO:Markera variabler

  3. MySQL fungerar bara med:skip-grant-tables

  4. PHPMyAdmin av MAMP ger mig #2002 mysql-fel