Langkah-langkah untuk memindahkan semua data antara pelayan dalam SQL Server

Tarikh penciptaan halaman :

Persekitaran

SQL Server
  • SQL Server 2019
  • SQL Server 2012

Bagaimana penghijrahan data dipindahkan dan kelebihan dan kekurangan masing-masing

Terdapat beberapa cara untuk memindahkan data pangkalan data SQL Server ke SQL Server pada pelayan lain secara pukal: Masing-masing mempunyai kelebihan dan kekurangannya semasa penghijrahan, jadi pilih kaedah yang paling sesuai dengan persekitaran anda.

Kaedah Migrasi Kesambungan rangkaian antara pelayanKesahihan segerak susun atur jadual saiz fail semasa penghijrahan ke versi yang lalu
Membuat sandaran dan memulihkan pangkalan data Tidak diperlukan (alih fail) Buruk Biasa Tidak diperlukan (penggantian penuh automatik) tidak perlu
Output data sebagai SQL Tidak diperlukan (alih fail) boleh lulus Besar Diperlukan atau dipadamkan ke jadual tidak perlu
Gunakan alat Import dan Eksport Data indispensability boleh lulus Tanpa Bergantung pada seting migrasi anda Keperluan

prasyarat

  • Anggap bahawa pelayan sql dan SQL Server Management Studio dipasang pada setiap pelayan.
  • Petua ini berani menjadikan versi pelayan sql berbeza.

Cipta data sampel

Apabila membincangkan migrasi data, anda berbuat demikian dalam pangkalan data dengan konfigurasi jadual berikut:

Sumber migrasi data

SQL Server 2012

  • Jadual 1 (Lajur:Kekunci, Nilai)
  • Jadual 2 (Lajur:Kekunci, Nilai, Kenyataan)
  • Jadual 3 (Lajur:Kekunci, Nilai)

Berikut adalah skrip penciptaan pangkalan data. Tukar laluan tepat pada masanya.

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

Berikut adalah skrip penciptaan jadual.

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

Berikut adalah skrip rekod tambahan:

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

Penghijrahan data ke

SQL Server 2019

  • Jadual 1 (Lajur:Kekunci, Nilai)
  • Jadual 2 (Lajur:Kekunci, Nilai)

Rekod dalam setiap jadual adalah kosong.

Berikut adalah skrip penciptaan pangkalan data. Tukar laluan tepat pada masanya.

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

Berikut adalah skrip penciptaan jadual.

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

Cara pangkalan data membuat sandaran dan memulihkan migrasi

Kaedah ini adalah untuk menyandarkan keseluruhan pangkalan data sebagai fail pada pelayan sumber, menyalinnya ke pelayan destinasi, dan menelannya. Oleh itu, semua konfigurasi jadual ditetapkan ke destinasi, semuanya sama dengan sumbernya.

Juga, kaedah ini tidak membenarkan anda berhijrah dari versi SQL Server yang lebih baru ke versi yang lebih lama. (Sekiranya perbezaan versi kecil, mungkin mungkin))

Prosedur

Mulakan SQL Server Management Studio dari sumber. Pilih folder yang sepadan dengan versi SQL Server anda.

Log masuk ke pelayan sasaran. PC menggunakan SQL Server Management Studio adalah baik pada PC lain, tetapi Petua ini membolehkan anda semua beroperasi pada pelayan anda sendiri.

Daripada Penjelajah Objek, klik kanan pangkalan data dan pilih Sandaran untuk Tugas.

Padamkan laluan sandaran awal dalam senarai destinasi sandaran di sudut kanan bawah.

Apabila anda memadamkannya, klik butang Tambah.

Klik butang ubah laluan.

Saya fikir folder "Sandaran" dipilih secara lalai, jadi masukkan nama fail untuk membuat sandaran dalam nama fail di bawah dan klik okey butang. Nama fail adalah pilihan, jadi jadikan ia mudah difahami.

Klik okey butang.

Sahkan bahawa ia telah ditambahkan ke senarai, dan kemudian klik okey butang.

Oleh kerana fail sandaran telah dibuat dalam folder berikut, saya akan mengambil fail ini ke pelayan yang saya mahu memindahkannya. Laluan folder bergantung pada versi SQL Server dan nama contoh, jadi semak tepat pada masanya.

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

Status selepas menyalin ke pelayan destinasi. Ia diletakkan dalam folder berikut kerana lebih mudah dimuatkan jika anda memasukkannya ke dalam folder Sandaran SQL Server. Ini juga bergantung pada versi SQL Server dan nama contoh, jadi sila semak tepat pada masanya.

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

Mulakan SQL Server Management Studio pada pelayan yang anda sedang berhijrah. Anda log masuk ke pelayan anda di sini.

Daripada Penjelajah Objek, klik kanan pangkalan data destinasi, kemudian pilih Tugas, Ambil Semula dan Pangkalan Data.

Pastikan Umum dipilih dalam pemilihan halaman kiri, pilih "Peranti" dari "Sumber" di sebelah kanan, dan klik butang semak imbas di sebelah kanan.

Klik butang Tambah.

Pilih fail yang anda bawa.

Pilih "Pilihan" dari pemilihan halaman kiri dan semak dua yang berikut. Jika anda menyemak kedua-dua ini, anda boleh memaksa beberapa sistem lain untuk menukar semasa disambungkan ke pangkalan data.

  • Tulis ganti pangkalan data sedia ada
  • Tutup sambungan sedia ada ke pangkalan data destinasi

Walau bagaimanapun, sila ambil perhatian bahawa jika pemulihan gagal dengan "Tutup sambungan sedia ada ke pangkalan data destinasi" disemak, pangkalan data asal mungkin tidak tersedia.

Apabila anda menyemak, klik okey butang.

Anda boleh mengesahkan bahawa konfigurasi jadual dan rekod telah dipindahkan sepenuhnya.

Secara kebetulan, jika anda cuba memulihkan versi pangkalan data SQL Server yang lebih baru kepada versi SQL Server yang lebih lama, anda akan melihat ralat berikut: Kaedah penghijrahan data ini berdasarkan versi yang sama antara satu sama lain atau versi yang lebih baru.

Cara: Outputkan Data sebagai SQL (Skrip) dan Jalankannya pada Pangkalan Data Destinasi

Ini adalah cara untuk mengeluarkan semua rekod dalam jadual sebagai selitkan pernyataan. Oleh kerana pernyataan SQL hampir sama, ia boleh digunakan untuk jenis pangkalan data lain dalam beberapa kes, tanpa mengira versi SQL Server.

Walau bagaimanapun, kerana rekod ditulis untuk memasukkan ayat satu demi satu, saiz fail meningkat. Oleh itu, apabila bilangan rekod meningkat, ia tidak berguna, jadi ia adalah kaedah yang boleh digunakan apabila bilangannya kecil.

Ia juga menjana SQL untuk jadual dari mana ia dipindahkan, jadi ia tidak tersedia jika ia berbeza daripada konfigurasi jadual yang mana ia dipindahkan. Anda juga boleh memasukkan penciptaan jadual di SQL, tetapi anda mesti memadam jadual sekali di destinasi.

Prosedur

Mulakan SQL Server Management Studio dari sumber. Pilih folder yang sepadan dengan versi SQL Server anda.

Log masuk ke pelayan sasaran. PC menggunakan SQL Server Management Studio adalah baik pada PC lain, tetapi Petua ini membolehkan anda semua beroperasi pada pelayan anda sendiri.

Klik kanan pada pangkalan data sasaran dan pilih "Tugas" dan "Generate Script".

Klik Seterusnya.

Anda boleh memilih jadual untuk memindahkan data. Pilih semua atau pilih jadual tertentu di sini.

Oleh kerana output adalah SQL, anda boleh memilih "Fail", "Clipboard", atau "Tunjukkan dalam Tetingkap". Setelah dipilih, klik butang "Lanjutan" di bahagian atas sebelah kanan.

Pilih Data hanya daripada "Jenis data untuk menjana skrip" dalam kumpulan Umum.

Selepas itu, pilih "Seterusnya" untuk mengesahkan. Anda dapat melihat bahawa SQL dijana. Semua yang tersisa adalah untuk menjalankan SQL ini di tujuan.

Oleh kerana ia hanya pernyataan sisipan, jika anda mahu data menjadi sama, anda perlu memadamkan semua rekod di destinasi terlebih dahulu.

Pindahkan konfigurasi jadual juga

Jika anda juga mahu memindahkan konfigurasi jadual, tetapkan pilihan "Jenis data untuk menjana skrip" sebelumnya kepada Skema dan Data.

Skrip penciptaan jadual juga dijana seperti berikut: Jika anda ingin menggunakan ini, ia akan dilaksanakan selepas memadam jadual untuk dipindahkan.

Ia juga menjana skrip penciptaan pangkalan data jika ia juga disertakan.

Cara memindahkan data menggunakan Data Import dan Eksport

Semasa anda memasang SQL Server, anda juga memasang alat yang dipanggil Import dan Eksport Data. Anda boleh menggunakannya untuk memindahkan data dari jadual ke pelayan lain.

Kelebihan penghijrahan alat ini ialah data juga boleh dipindahkan ke versi SQL Server yang lebih lama. Ia agak sukar untuk digunakan, tetapi ia boleh dipindahkan pada tahap beberapa minit walaupun dengan kira-kira 1 juta data, jadi ia juga sesuai untuk penghijrahan data besar. Walau bagaimanapun, ambil perhatian bahawa pelayan sumber dan destinasi mesti disambungkan pada rangkaian peribadi dan tidak boleh digunakan antara pelayan dengan rangkaian yang sama sekali berbeza.

prasyarat

Bina pengesahan SQL Server atau pengesahan Windows supaya anda boleh mencapai setiap SQL Server daripada PC yang menggunakan alat ini.

Petua ini menggunakan alat ini dari pelayan dari mana ia dipindahkan.

Prosedur

Pilih Import dan Eksport Data dari menu Mula. Ia termasuk dalam folder dalam SQL Server, tetapi nama folder berbeza-beza bergantung pada versi SQL Server, jadi carilah dengan tepat pada masanya.

Klik Seterusnya.

Pilih pangkalan data yang anda ingin pindahkan. Kali ini ia berjalan pada pelayan sumber, jadi anda boleh melalui pengesahan Windows.

Kenyataan
nilai penetapan nama parameter
Sumber data SQL Server Native Client 11.0
Nama pelayan (tempatan) Jika ia adalah pelayan lain atau nama contoh ditentukan, sila letakkan nilainya
Pengesahan Pengesahan Windows
Pangkalan data SampleDatabase Masukkan nama pangkalan data dari mana anda ingin benar-benar berhijrah

Seterusnya, tetapkan tetapan sambungan untuk pangkalan data destinasi. Pengesahan Sql Server sedang digunakan kerana ia berada pada pelayan yang berbeza.

Kenyataan
nilai penetapan nama parameter
Sumber data SQL Server Native Client 11.0
Nama pelayan Nama pelayan sasaran (+ \instance name)]
Pengesahan Pengesahan SQL Server
Pangkalan data SampleDatabase Masukkan nama pangkalan data untuk benar-benar berhijrah ke

Semak "Salin data dari satu atau lebih jadual atau pandangan" dan klik butang seterusnya.

Pilih jadual yang anda ingin pindahkan. Senarai ini juga menunjukkan paparan, jadi jangan semaknya.

Jika nama jadual sumber dan destinasi adalah sama, jadual yang akan dipindahkan dipilih secara automatik. Ia juga secara automatik menetapkan pemetaan nama lajur jika nama lajur adalah sama.

Berikut adalah beberapa perkara yang perlu diingat:

  • Jika kekunci utama dikira secara automatik, migrasi akan gagal jika anda tidak menyemak "Benarkan penyisipan ID" daripada "Edit pemetaan"
  • Jika tiada jadual untuk dimigrasikan, jadual dicipta
  • Jika jadual destinasi tidak mempunyai nama lajur yang sama, ia tidak akan dipindahkan. Jangan terus berhijrah atau menukar lajur destinasi.
  • Rekod ditambah secara lalai. Jika anda ingin menggantikannya, padamkan rekod di destinasi terlebih dahulu, atau semak "Padam baris dalam jadual destinasi" daripada "Edit pemetaan"

Sebenarnya, anda perlu mempertimbangkan perkara di atas, tetapi dalam Petua ini, tidak ada data di destinasi dan tidak ada penomboran automatik, jadi anda boleh meneruskan tanpa menetapkan apa-apa.

Pastikan "Jalankan Sekarang" disemak dan klik "Seterusnya".

Klik Selesai.

Penghijrahan data bermula. Tutup apabila semua penghijrahan selesai.

Jika anda melihat pangkalan data sasaran, anda boleh mengesahkan bahawa jadual yang tidak wujud telah dicipta. Anda juga boleh melihat bahawa tiada lagi lajur untuk jadual sedia ada.

Anda boleh mengesahkan bahawa data sedang dipindahkan. Lajur nota dalam jadual 2 tidak dipetakan dan belum dipindahkan.