Кроки для перенесення всіх даних між серверами в SQL Server

Дата створення сторінки :

середовище

SQL Server
  • SQL Server 2019
  • SQL Server 2012

Як міграція даних переноситься та переваги та недоліки кожного

Існує кілька способів перенесення даних бази даних SQL Server до SQL Server на інших серверах масово: Кожен має свої переваги і недоліки під час міграції, тому вибирайте метод, який найкраще підходить вашому оточенню.

Підключення мережі метод міграції між серверамиПідсинхронізована автентифікація макетів таблиці розміру файлу під час міграції до попередніх версій
Резервне копіювання та відновлення баз даних Не обов'язково (переміщення файлів) Поганий Звичайні Не потрібно (автоматична повна заміна) Непотрібних
Виводити дані як SQL Не обов'язково (переміщення файлів) Добре великий Обов'язковий або видалений до таблиці Непотрібних
Використання засобу "Імпорт та експорт даних" незамінність Добре без Залежно від настройок міграції необхідність

Передумовою

  • Припустимо, що SQL Server і SQL Server управління студії інстальовано на кожному сервері.
  • Ці поради наважуються зробити версії SQL Server різними.

Створення зразків даних

Обговорюючи міграцію даних, ви робите це в базі даних з такою конфігурацією таблиці:

Джерело міграції даних

SQL Server 2012

  • Таблиця 1 (стовпець:ключ, значення)
  • Таблиця 2 (Стовпець:ключ, значення, зауваження)
  • Таблиця 3 (стовпець:ключ, значення)

Нижче наведено сценарій створення бази даних. Своєчасно змінюйте шлях.

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

Нижче наведено сценарій створення таблиці.

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

Нижче наведено додатковий сценарій запису:

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

Міграція даних до

SQL Server 2019

  • Таблиця 1 (стовпець:ключ, значення)
  • Таблиця 2 (Стовпець:ключ, значення)

Записи в кожній таблиці пусті.

Нижче наведено сценарій створення бази даних. Своєчасно змінюйте шлях.

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

Нижче наведено сценарій створення таблиці.

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

Резервне копіювання та відновлення міграції бази даних

Цей метод полягає в тому, щоб створити резервну копію всієї бази даних як файлу на вихідному сервері, скопіювати її на сервер призначення та проковтнути. Таким чином, всі конфігурації таблиці встановлюються на місце призначення, всі з яких збігаються з джерелом.

Крім того, цей метод не дозволяє перейти з новішої версії SQL Server на стару версію. (Якщо різниця версій невелика, це можливо))

процедура

Запустіть студію керування SQL Server з джерела. Виберіть папку, яка відповідає вашій версії SQL Server.

Увійдіть на цільовий сервер. ПК, які використовують SQL Server Management Studio добре на інших ПК, але ці поради дозволяють всім працювати на власних серверах.

У провіднику об'єктів клацніть базу даних правою кнопкою миші та виберіть пункт Резервне копіювання для завдань.

Видаліть початковий шлях резервного копіювання у списку місць резервного копіювання в нижньому правому куті.

Після видалення натисніть кнопку Додати.

Натисніть кнопку змінити шлях.

Я думаю, що папка "Резервне копіювання" вибирається за замовчуванням, тому введіть ім'я файлу, щоб створити резервну копію в імені файлу нижче, і натисніть кнопку OK. Ім'я файлу необов'язкове, тому його легко зрозуміти.

Натисніть кнопку OK.

Переконайтеся, що його додано до списку, а потім натисніть кнопку OK.

Оскільки файл резервної копії був створений у наступній папці, я візьму цей файл на сервер, на який я хочу перенести його. Шлях до папки залежить від версії SQL Server і імені екземпляра, тому перевірте його своєчасно.

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

Стан після копіювання на сервер призначення. Він поміщений в наступну папку, тому що це легше завантажити, якщо ви поклали його в папці резервного копіювання SQL Server. Це також залежить від версії SQL Server та імені екземпляра, тому, будь ласка, перевірте його своєчасно.

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

Запустіть SQL Server керування студії на сервері, на який ви переходите. Ви ввійшли на свій сервер тут.

У провіднику об'єктів клацніть правою кнопкою миші цільову базу даних і виберіть пункт Завдання, Відновлення та База даних.

Переконайтеся, що у виборі лівої сторінки вибрано "Загальні", виберіть "Пристрій" з "Джерело" праворуч і натисніть кнопку перегляду праворуч.

Натисніть кнопку Додати.

Виберіть файл, який ви принесли.

Виберіть "Параметри" з вибору лівої сторінки і перевірте наступні два. Якщо ви перевірите ці два, ви можете змусити іншу систему поміняти місцями під час підключення до бази даних.

  • Перезаписати наявну базу даних
  • Закриття наявного підключення до цільової бази даних

Однак зверніть увагу, що якщо відновлення не вдається з "Закрити наявне підключення до цільової бази даних" перевіряється, вихідна база даних може бути недоступна.

Під час перевірки натисніть кнопку OK.

Можна переконатися, що конфігурацію таблиці та записи повністю перенесено.

До речі, якщо ви спробуєте відновити новішу версію бази даних SQL Server до старої версії SQL Server, ви побачите таку помилку: Цей метод міграції даних базується на одній і тій же версії один до одного або до новішої версії.

Як: Вивести дані як SQL (скрипт) і запустити їх на цільовій базі даних

Таким чином виводити всі записи в таблиці як вставляти оператори. Оскільки оператори SQL майже однакові, вони можуть бути застосовані до інших типів баз даних у деяких випадках, незалежно від версії SQL Server.

Однак, оскільки записи записуються для вставки речень по одному, розмір файлу збільшується. Тому, оскільки кількість записів збільшується, це марно, тому це метод, який можна використовувати, коли число невелике.

Він також генерує SQL для таблиці, з якої він був перенесений, тому він недоступний, якщо він відрізняється від конфігурації таблиці, до якої він мігрується. Ви також можете включити створення таблиці в SQL, але ви повинні видалити таблицю один раз в місці призначення.

процедура

Запустіть студію керування SQL Server з джерела. Виберіть папку, яка відповідає вашій версії SQL Server.

Увійдіть на цільовий сервер. ПК, які використовують SQL Server Management Studio добре на інших ПК, але ці поради дозволяють всім працювати на власних серверах.

Клацніть правою кнопкою миші по цільовій базі даних і виберіть "Завдання" і "Генерувати сценарій".

Натисніть кнопку Далі.

Можна вибрати, для яких таблиць слід перенести дані. Виберіть усі або виберіть певну таблицю тут.

Оскільки виводом є SQL, можна вибрати "Файл", "Буфер обміну" або "Показати у вікні". Після вибору натисніть кнопку «Додатково» у верхньому правому куті.

Виберіть "Дані лише" з "Типи даних для створення сценаріїв" у групі Загальні.

Після цього виберіть "Далі", щоб підтвердити. Ви можете бачити, що SQL генерується. Все, що залишилося, це запустити цей SQL на місці призначення.

Оскільки це всього лише оператор вставки, якщо ви хочете, щоб дані були однаковими, вам потрібно заздалегідь видалити всі записи в місці призначення.

Також перенесення конфігурацій таблиць

Якщо ви також хочете перенести конфігурації таблиць, установіть попередній вибір "Тип даних для створення сценаріїв" у розділі "Схема" та "Дані".

Сценарій створення таблиці також генерується наступним чином: Якщо ви хочете використовувати це, він буде виконаний після видалення таблиці, яку потрібно перенести.

Він також генерує сценарій створення бази даних, якщо він також включений.

Перенесення даних за допомогою імпортування та експорту даних

Під Вільний час інсталяції SQL Server, ви також встановити інструмент під назвою Імпорт і експорт даних. За допомогою нього можна перенести дані з таблиці на інший сервер.

Перевага міграції цього засобу полягає в тому, що дані також можна перенести на старі версії SQL Server. Він трохи складний у використанні, але його можна мігрувати на рівні декількох хвилин навіть з близько 1 мільйоном даних, тому він також підходить для великої міграції даних. Зауважте, однак, що вихідний і кінцевий сервери повинні бути підключені в приватній мережі і не можуть бути використані між серверами з абсолютно різними мережами.

Передумовою

Створіть автентифікацію SQL Server або автентифікацію Windows, щоб мати доступ до кожного SQL Server з ПК, який використовує цей засіб.

Ця порада використовує цей інструмент із сервера, з якого його було перенесено.

процедура

Виберіть "Імпорт і експорт даних" у меню "Пуск". Він входить в папку в SQL Server, але ім'я папки варіюється в залежності від версії SQL Server, тому шукайте його своєчасно.

Натисніть кнопку Далі.

Виберіть базу даних, з якої потрібно перенести. На цей раз він працює на вихідному сервері, так що ви можете пройти через автентифікацію Windows.

Значення
значення імені параметра
Джерела даних SQL Server рідний клієнт 11,0
Ім'я сервера (місцевий) Якщо це інший сервер або вказано ім'я екземпляра, будь ласка, встановіть його значення
автентифікація Автентифікація Windows
база даних SampleDatabase Введіть ім'я бази даних, з якої потрібно фактично перенести

Далі встановіть параметри підключення для цільової бази даних. Автентифікація Sql Server використовується, оскільки вона знаходиться на іншому сервері.

Значення
значення імені параметра
Джерела даних SQL Server рідний клієнт 11,0
Ім'я сервера Ім'я цільового сервера (+ \instance name)]
автентифікація Автентифікація SQL Server
база даних SampleDatabase Введіть ім'я бази даних, щоб фактично перенести до

Установіть прапорець "Копіювати дані з однієї або декількох таблиць або подань" і натисніть наступну кнопку.

Виберіть таблицю, яку потрібно перенести. У цьому списку також відображається подання, тому не перевіряйте його.

Якщо імена вихідних і кінцевих таблиць однакові, автоматично вибирається таблиця, яку потрібно перенести. Він також автоматично встановлює зіставлення імен стовпців, якщо імена стовпців однакові.

Ось деякі речі, які слід пам'ятати:

  • Якщо первинний ключ автонумерований, міграція зазнає невдачі, якщо ви не позначите пункт "Дозволити вставлення ідентифікатора" з "Редагувати зіставлення"
  • Якщо немає таблиць для міграції, створюється таблиця
  • Якщо цільова таблиця не має однакового імені стовпця, її не буде перенесено. Не продовжуйте переносити або змінювати кінцевий стовпець.
  • Записи додаються за промовчанням. Якщо ви хочете замінити його, видаліть запис у місці призначення заздалегідь або перевірте "Видалити рядки в цільовій таблиці" з "Редагувати зіставлення"

Насправді, ви повинні розглянути вищесказане, але в цих Порадах немає даних в пункті призначення і немає автоматичної нумерації, тому ви можете продовжувати нічого не встановлюючи.

Переконайтеся, що встановлено прапорець "Запустити зараз" і натисніть "Далі".

Натисніть кнопку Готово.

Починається міграція даних. Закрийте, коли всі міграції будуть завершені.

Якщо ви подивитеся на цільову базу даних, можна переконатися, що не було створено таблицю, яка не існувала. Також можна побачити, що для наявних таблиць більше немає стовпців.

Можна переконатися, що дані переносяться. Примітки стовпці в таблиці 2 не зіставлені та не перенесені.