Steg för att migrera alla data mellan servrar i SQL Server

Datum för skapande av sida :

miljö

SQL Server
  • SQL Server 2019
  • SQL Server 2012

Hur datamigrering migreras och fördelarna och nackdelarna med varje

Det finns flera sätt att migrera SQL Server-databasdata till SQL Server på andra servrar i bulk: Var och en har sina fördelar och nackdelar under migreringen, så välj den metod som bäst passar din miljö.

av
Migreringsmetod Nätverksanslutning mellan servrarPresynkron autentiseringtabelllayouter för filstorlek under migrering till tidigare versioner
Säkerhetskopiera och återställa databaser Krävs inte (flytta filer) Dålig vanlig Krävs inte (automatisk fullständig ersättning) onödig
Utdata som SQL Krävs inte (flytta filer) acceptabel stor Obligatoriskt eller borttaget till tabell onödig
Använda verktyget Importera och exportera data ofrånkomlighet acceptabel utan Beroende på dina migreringsinställningar nödvändighet

förutsättning

  • Anta att SQL Server och SQL Server Management Studio är installerade på varje server.
  • Detta tips vågar göra sql server-versioner annorlunda.

Skapa exempeldata

När du diskuterar datamigrering gör du det i databasen med följande tabellkonfiguration:

Källa för datamigrering

SQL Server 2012

  • Tabell 1 (kolumn:nyckel, värde)
  • Tabell 2 (kolumn:Nyckel, värde, anmärkningar)
  • Tabell 3 (kolumn:nyckel, värde)

Följande är ett skript för att skapa databaser. Ändra vägen i tid.

USE [master]
GO

CREATE DATABASE [SampleDatabase]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'SampleDatabase', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\SampleDatabase.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'SampleDatabase_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\SampleDatabase_log.ldf' , SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO

Nedan finns ett skript för att skapa tabell.

USE [SampleDatabase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[テーブル1](
	[キー] [int] NOT NULL,
	[値] [nvarchar](50) NULL,
 CONSTRAINT [PK_テーブル1] PRIMARY KEY CLUSTERED 
(
	[キー] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[テーブル2](
	[キー] [int] NOT NULL,
	[値] [nvarchar](50) NULL,
	[備考] [nvarchar](50) NULL,
 CONSTRAINT [PK_テーブル2] PRIMARY KEY CLUSTERED 
(
	[キー] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[テーブル3](
	[キー] [int] NOT NULL,
	[値] [nvarchar](50) NULL,
 CONSTRAINT [PK_テーブル3] PRIMARY KEY CLUSTERED 
(
	[キー] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

Följande är ytterligare ett postskript:

USE [SampleDatabase]
GO
INSERT [dbo].[テーブル1] ([キー], [値]) VALUES (1, N'1aaa')
GO
INSERT [dbo].[テーブル1] ([キー], [値]) VALUES (2, N'1bbb')
GO
INSERT [dbo].[テーブル2] ([キー], [値], [備考]) VALUES (1, N'2aaa', N'2remarks')
GO
INSERT [dbo].[テーブル2] ([キー], [値], [備考]) VALUES (2, N'2bbb', N'2remarks')
GO
INSERT [dbo].[テーブル3] ([キー], [値]) VALUES (1, N'3aaa')
GO
INSERT [dbo].[テーブル3] ([キー], [値]) VALUES (2, N'3bbb')
GO

Datamigrering till

SQL Server 2019

  • Tabell 1 (kolumn:nyckel, värde)
  • Tabell 2 (kolumn:nyckel, värde)

Posterna i varje tabell är tomma.

Följande är ett skript för att skapa databaser. Ändra vägen i tid.

USE [master]
GO

CREATE DATABASE [SampleDatabase]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'SampleDatabase', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA\SampleDatabase.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
 LOG ON 
( NAME = N'SampleDatabase_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA\SampleDatabase_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )
 WITH CATALOG_COLLATION = DATABASE_DEFAULT
GO

Nedan finns ett skript för att skapa tabell.

USE [SampleDatabase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[テーブル1](
	[キー] [int] NOT NULL,
	[値] [nvarchar](50) NULL,
 CONSTRAINT [PK_テーブル1] PRIMARY KEY CLUSTERED 
(
	[キー] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[テーブル2](
	[キー] [int] NOT NULL,
	[値] [nvarchar](50) NULL,
 CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED 
(
	[キー] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO

Så här säkerhetskopierar och återställer du migreringen av databaser

Den här metoden är att säkerhetskopiera hela databasen som en fil på källservern, kopiera den till målservern och mata in den. Därför är alla tabellkonfigurationer inställda på målet, som alla är desamma som källan.

Med den här metoden kan du inte heller migrera från en nyare version av SQL Server till en äldre version. (Om versionsskillnaden är liten kan det vara möjligt))

procedur

Starta SQL Server Management Studio från källan. Välj en mapp som matchar SQL Server-versionen.

Logga in på målservern. Datorer som använder SQL Server Management Studio är bra på andra datorer, men med det här tipset kan du alla arbeta på dina egna servrar.

Högerklicka på databasen i Objektutforskaren och välj Säkerhetskopiera för uppgifter.

Ta bort den första sökvägen för säkerhetskopiering i listan över säkerhetskopieringsdestinationer i det nedre högra hörnet.

När du tar bort den klickar du på knappen Lägg till.

Klicka på knappen Ändra sökväg.

Jag tror att mappen "Backup" är vald som standard, så ange filnamnet för att säkerhetskopiera i filnamnet nedan och klicka på OK-knappen. Filnamnet är valfritt, så gör det lätt att förstå.

Klicka på knappen OK.

Kontrollera att den har lagts till i listan och klicka sedan på OK- knappen.

Eftersom säkerhetskopian har skapats i följande mapp tar jag den här filen till den server som jag vill migrera den till. Mappsökvägen beror på versionen av SQL Server och namnet på instansen, så kontrollera den i tid.

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

Status efter kopiering till målservern. Den placeras i följande mapp eftersom det är lättare att läsa in om du lägger den i mappen Säkerhetskopiering på SQL Server. Detta beror också på versionen av SQL Server och instansnamnet, så kontrollera det i tid.

C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\Backup

Starta SQL Server Management Studio på den server som du migrerar till. Du är inloggad på servern här.

Högerklicka på måldatabasen i Object Explorer och välj sedan Aktiviteter, Återställ och Databas.

Kontrollera att Allmänt är markerat i valet till vänster sida, välj "Enhet" från "Källa" till höger och klicka på bläddringsknappen till höger.

Klicka på knappen Lägg till.

Markera filen du tog med.

Välj "Alternativ" i valet av vänster sida och markera följande två. Om du kontrollerar dessa två kan du tvinga något annat system att byta när du är ansluten till databasen.

  • Skriva över en befintlig databas
  • Stänga en befintlig anslutning till måldatabasen

Observera dock att om återställningen misslyckas med "Stäng befintlig anslutning till måldatabasen" kontrolleras, kanske den ursprungliga databasen inte är tillgänglig.

När du checkar klickar du på knappen OK.

Du kan kontrollera att tabellkonfigurationen och posterna har migrerats helt.

Om du försöker återställa en nyare version av en SQL Server-databas till en äldre version av SQL Server visas följande fel: Den här metoden för datamigrering baseras på samma version till varandra eller till en nyare version.

Så här matar du ut data som SQL (skript) och kör dem i måldatabasen

Så här matar du ut alla poster i en tabell som infogade satser. Eftersom SQL-uttryck är nästan desamma kan de tillämpas på andra typer av databaser i vissa fall, oavsett version av SQL Server.

Men eftersom poster skrivs för att infoga meningar en efter en ökar filstorleken. Därför, när antalet poster ökar, är det värdelöst, så det är en metod som kan användas när antalet är litet.

Den genererar också SQL för den tabell som den migrerades från, så den är inte tillgänglig om den skiljer sig från tabell konfigurationen som den migreras till. Du kan också inkludera skapandet av en tabell i SQL, men du måste ta bort tabellen en gång på målet.

procedur

Starta SQL Server Management Studio från källan. Välj en mapp som matchar SQL Server-versionen.

Logga in på målservern. Datorer som använder SQL Server Management Studio är bra på andra datorer, men med det här tipset kan du alla arbeta på dina egna servrar.

Högerklicka på måldatabasen och välj "Uppgift" och "Generera skript".

Klicka på Nästa.

Du kan välja vilka tabeller du vill migrera data för. Markera alla eller välj en specifik tabell här.

Eftersom utdata är SQL kan du välja "Arkiv", "Urklipp" eller "Visa i fönster". När du har valt klickar du på knappen "Avancerat" längst upp till höger.

Välj endast Data från "Typer av data för att generera skript" i gruppen Allmänt.

Därefter väljer du "Nästa" för att bekräfta. Du kan se att SQL genereras. Allt som återstår är att köra den här SQL:en på målet.

Eftersom det bara är en infogningssats måste du ta bort alla poster på målet i förväg om du vill att data ska vara desamma.

Migrera tabellkonfigurationer också

Om du också vill migrera tabellkonfigurationer anger du det tidigare valet "Typ av data för att generera skript" till Schema och Data.

Ett skript för att skapa tabell genereras också på följande sätt: Om du vill använda detta körs det efter att tabellen som ska migreras har tagits bort.

Det genererar också ett skript för att skapa databaser om det också ingår.

Migrera data med hjälp av Importera och exportera data

När du installerar SQL Server installerar du även ett verktyg som heter Importera och exportera data. Du kan använda den för att migrera data från en tabell till en annan server.

Fördelen med den här verktygsmigreringen är att data också kan migreras till äldre versioner av SQL Server. Det är lite svårt att använda, men det kan migreras på flera minuter även med cirka 1 miljon data, så det är också lämpligt för stor datamigrering. Observera dock att käll- och målservrarna måste vara anslutna i ett privat nätverk och inte kan användas mellan servrar med helt olika nätverk.

förutsättning

Skapa SQL Server-autentisering eller Windows-autentisering så att du kan komma åt varje SQL Server från en dator som använder det här verktyget.

Det här tipset använder det här verktyget från den server från vilken det migrerades.

procedur

Välj Importera och exportera data på Start-menyn. Det ingår i en mapp i SQL Server, men mappnamnet varierar beroende på versionen av SQL Server, så leta efter den i tid.

Klicka på Nästa.

Välj den databas som du vill migrera från. Den här gången körs den på källservern, så att du kan passera genom Windows-autentisering.

Värdekommentarer för parameternamn
Datakällor Inbyggd SQL Server-klient 11.0
Servernamn (lokal) Om det är en annan server eller ett instansnamn har angetts, ange dess värde
autentisering Windows-autentisering
databas Exempeldatabas Ange namnet på den databas som du faktiskt vill migrera från

Ange sedan anslutningsinställningarna för måldatabasen. Sql Server-autentisering används eftersom den finns på en annan server.

Värdekommentarer för parameternamn
Datakällor Inbyggd SQL Server-klient 11.0
Servernamn Målservernamn (+ \instansnamn)]
autentisering SQL Server-autentisering
databas Exempeldatabas Ange namnet på den databas som faktiskt ska migreras till

Markera "Kopiera data från en eller flera tabeller eller vyer" och klicka på nästa knapp.

Markera den tabell som du vill migrera. Den här listan visar också vyn, så kontrollera den inte.

Om käll- och måltabellnamnen är desamma markeras den tabell som ska migreras automatiskt. Den anger också automatiskt mappningen av kolumnnamn om kolumnnamnen är desamma.

Här är några saker att tänka på:

  • Om primärnyckeln numreras automatiskt misslyckas migreringen om du inte markerar "Tillåt ID-insättning" från "Redigera mappning"
  • Om det inte finns några tabeller att migrera till skapas en tabell
  • Om måltabellen inte har samma kolumnnamn migreras den inte. Fortsätt inte att migrera eller ändra målkolumnen.
  • Poster läggs till som standard. Om du vill ersätta den tar du bort posten på målet i förväg eller markerar "Ta bort rader i måltabellen" från "Redigera mappning"

Faktum är att du måste överväga ovanstående, men i det här tipset finns det inga data på destinationen och det finns ingen automatisk numrering, så du kan fortsätta utan att ställa in något.

Kontrollera att "Kör nu" är markerat och klicka på "Nästa".

Klicka på Klar.

Datamigrering börjar. Stäng när alla migreringar är klara.

Om du tittar på måldatabasen kan du kontrollera att en tabell som inte fanns har skapats. Du kan också se att det inte finns fler kolumner för befintliga tabeller.

Du kan verifiera att data migreras. Anteckningskolumner i tabell 2 är inte mappade och har inte migrerats.