Các bước di chuyển tất cả dữ liệu giữa các máy chủ trong SQL Server

Ngày tạo trang :

môi trường

SQL Server
  • SQL Server 2019
  • SQL Server 2012

Di chuyển dữ liệu được di chuyển như thế nào và những ưu điểm và nhược điểm của mỗi

Có một số cách để di chuyển dữ liệu cơ sở dữ liệu SQL Server sang SQL Server trên các máy chủ khác với số lượng lớn: Mỗi người đều có những ưu điểm và nhược điểm của nó trong quá trình di chuyển, vì vậy hãy chọn phương pháp phù hợp nhất với môi trường của bạn.

đồng bộ
Phương pháp Di chuyển Kết nối mạng giữa các máy chủĐể xác thựcbố trí bảng kích thước tệp trong quá trình di chuyển sang các phiên bản trước
Sao lưu và khôi phục cơ sở dữ liệu Không bắt buộc (di chuyển tệp) Tồi bình thường Không bắt buộc (tự động thay thế hoàn toàn) không cần thiết
Dữ liệu đầu ra dưới dạng SQL Không bắt buộc (di chuyển tệp) Tốt lớn Được yêu cầu hoặc xóa vào bảng không cần thiết
Sử dụng công cụ Nhập và Xuất Dữ liệu không thể thiếu Tốt không Tùy thuộc vào thiết đặt di chuyển của bạn sự cần thiết

điều kiện tiên quyết

  • Giả sử sql server và SQL Server Management Studio được cài đặt trên mỗi máy chủ.
  • Mẹo này dám làm cho các phiên bản sql server trở nên khác biệt.

Tạo dữ liệu mẫu

Khi thảo luận về di chuyển dữ liệu, bạn làm như vậy trong cơ sở dữ liệu với cấu hình bảng sau:

Nguồn di chuyển dữ liệu

SQL Server 2012

  • Bảng 1 (Cột:Chìa khóa, Giá trị)
  • Bảng 2 (Cột:Chìa khóa, Giá trị, Nhận xét)
  • Bảng 3 (Cột:Chìa khóa, Giá trị)

Sau đây là kịch bản tạo cơ sở dữ liệu. Thay đổi đường đi một cách kịp thời.

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

Dưới đây là kịch bản tạo bảng.

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

Sau đây là một kịch bản ghi bổ sung:

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

Di chuyển dữ liệu sang

SQL Server 2019

  • Bảng 1 (Cột:Chìa khóa, Giá trị)
  • Bảng 2 (Cột:Khóa, Giá trị)

Các bản ghi trong mỗi bảng đều trống rỗng.

Sau đây là kịch bản tạo cơ sở dữ liệu. Thay đổi đường đi một cách kịp thời.

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

Dưới đây là kịch bản tạo bảng.

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

Cách sao lưu và khôi phục di chuyển cơ sở dữ liệu

Phương pháp này là sao lưu toàn bộ cơ sở dữ liệu dưới dạng tệp trên máy chủ nguồn, sao chép nó vào máy chủ đích và ăn nó. Do đó, tất cả các cấu hình bảng được đặt đến đích, tất cả đều giống như nguồn.

Ngoài ra, phương pháp này không cho phép bạn di chuyển từ phiên bản SQL Server mới hơn sang phiên bản cũ hơn. (Nếu sự khác biệt phiên bản nhỏ, nó có thể là có thể))

thủ tục

Khởi động SQL Server Management Studio từ nguồn. Chọn một thư mục khớp với phiên bản SQL Server của bạn.

Đăng nhập vào máy chủ đích. PC sử dụng SQL Server Management Studio là tốt trên các PC khác, nhưng Mẹo này cho phép tất cả bạn hoạt động trên máy chủ của riêng bạn.

Từ Object Explorer, bấm chuột phải vào cơ sở dữ liệu và chọn Sao lưu cho Nhiệm vụ.

Xóa đường dẫn sao lưu ban đầu trong danh sách các đích sao lưu ở góc dưới bên phải.

Khi bạn xóa nó, hãy bấm nút Thêm.

Bấm nút thay đổi đường dẫn.

Tôi nghĩ rằng thư mục "Sao lưu" được chọn theo mặc định, vì vậy hãy nhập tên tệp để sao lưu trong tên tệp bên dưới và nhấp vào nút OK. Tên tệp là tùy chọn, vì vậy hãy dễ hiểu.

Bấm nút OK.

Xác nhận rằng nó đã được thêm vào danh sách, rồi bấm nút OK.

Vì tệp sao lưu đã được tạo trong thư mục sau, tôi sẽ đưa tệp này đến máy chủ mà tôi muốn di chuyển nó. Đường dẫn thư mục phụ thuộc vào phiên bản SQL Server và tên của phiên bản, vì vậy hãy kiểm tra kịp thời.

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

Trạng thái sau khi sao chép vào máy chủ đích. Nó được đặt trong thư mục sau vì dễ tải hơn nếu bạn đặt nó vào thư mục Sao lưu của SQL Server. Điều này cũng phụ thuộc vào phiên bản SQL Server và tên phiên bản, vì vậy vui lòng kiểm tra kịp thời.

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

Khởi động SQL Server Management Studio trên máy chủ bạn đang di chuyển đến. Bạn đã đăng nhập vào máy chủ của mình tại đây.

Từ Object Explorer, bấm chuột phải vào cơ sở dữ liệu đích, rồi chọn Tác vụ, Khôi phục và Cơ sở dữ liệu.

Hãy chắc chắn rằng General được chọn trong lựa chọn trang bên trái, chọn "Thiết bị" từ "Nguồn" ở bên phải và nhấp vào nút duyệt ở bên phải.

Bấm nút Thêm.

Chọn tệp bạn đã mang theo.

Chọn "Tùy chọn" từ việc chọn trang bên trái và kiểm tra hai trang sau. Nếu bạn kiểm tra hai hệ thống này, bạn có thể buộc một số hệ thống khác hoán đổi trong khi kết nối với cơ sở dữ liệu.

  • Ghi đè lên cơ sở dữ liệu hiện có
  • Đóng kết nối hiện có với cơ sở dữ liệu đích

Tuy nhiên, xin lưu ý rằng nếu khôi phục không thành công với "Đóng kết nối hiện có với cơ sở dữ liệu đích" được kiểm tra, cơ sở dữ liệu gốc có thể không khả dụng.

Khi bạn kiểm tra, hãy bấm nút OK.

Bạn có thể xác minh rằng cấu hình bảng và bản ghi đã được di chuyển hoàn toàn.

Ngẫu nhiên, nếu bạn cố gắng khôi phục phiên bản mới hơn của cơ sở dữ liệu SQL Server sang phiên bản SQL Server cũ hơn, bạn sẽ thấy lỗi sau: Phương pháp di chuyển dữ liệu này dựa trên cùng một phiên bản với nhau hoặc sang phiên bản mới hơn.

Cách thực hiện: Đầu ra Dữ liệu dưới dạng SQL (Script) và Chạy nó trên Cơ sở dữ liệu Đích

Đây là cách xuất ra tất cả các bản ghi trong bảng dưới dạng câu lệnh chèn. Bởi vì các câu lệnh SQL gần như giống nhau, chúng có thể được áp dụng cho các loại cơ sở dữ liệu khác trong một số trường hợp, bất kể phiên bản SQL Server.

Tuy nhiên, vì các bản ghi được viết để chèn từng câu một, kích thước tệp tăng lên. Do đó, khi số lượng hồ sơ tăng lên, nó là vô dụng, vì vậy nó là một phương pháp có thể được sử dụng khi số lượng nhỏ.

Nó cũng tạo RA SQL cho bảng mà nó đã được di chuyển, vì vậy nó không có sẵn nếu nó khác với cấu hình bảng mà nó được di chuyển. Bạn cũng có thể bao gồm việc tạo bảng trong SQL, nhưng bạn phải xóa bảng một lần tại đích.

thủ tục

Khởi động SQL Server Management Studio từ nguồn. Chọn một thư mục khớp với phiên bản SQL Server của bạn.

Đăng nhập vào máy chủ đích. PC sử dụng SQL Server Management Studio là tốt trên các PC khác, nhưng Mẹo này cho phép tất cả bạn hoạt động trên máy chủ của riêng bạn.

Nhấp chuột phải vào cơ sở dữ liệu đích và chọn "Tác vụ" và "Tạo Kịch bản".

Bấm Tiếp.

Bạn có thể chọn bảng nào để di chuyển dữ liệu. Chọn tất cả hoặc chọn một bảng cụ thể ở đây.

Vì đầu ra là SQL, bạn có thể chọn "Tệp", "Clipboard" hoặc "Hiện trong Cửa sổ". Sau khi chọn, nhấp vào nút "Nâng cao" ở phía trên bên phải.

Chỉ chọn Dữ liệu từ "Loại dữ liệu để tạo tập lệnh" trong nhóm Chung.

Sau đó, chọn "Tiếp theo" để xác nhận. Bạn có thể thấy rằng SQL được tạo ra. Tất cả những gì còn lại là chạy SQL này trên điểm đến.

Vì nó chỉ là một câu lệnh chèn, nếu bạn muốn dữ liệu giống nhau, bạn cần xóa tất cả các bản ghi tại đích trước.

Di chuyển cấu hình bảng cũng

Nếu bạn cũng muốn di chuyển cấu hình bảng, hãy đặt lựa chọn "Loại dữ liệu để tạo tập lệnh" trước đó thành Schema và Dữ liệu.

Một kịch bản tạo bảng cũng được tạo như sau: Nếu bạn muốn sử dụng điều này, nó sẽ được thực thi sau khi xóa bảng được di chuyển.

Nó cũng tạo ra một kịch bản tạo cơ sở dữ liệu nếu nó cũng được bao gồm.

Cách di chuyển dữ liệu bằng cách sử dụng Dữ liệu Xuất nhập khẩu

Khi bạn cài đặt SQL Server, bạn cũng cài đặt một công cụ gọi là Nhập và Xuất Dữ liệu. Bạn có thể sử dụng nó để di chuyển dữ liệu từ bảng sang máy chủ khác.

Ưu điểm của việc di chuyển công cụ này là dữ liệu cũng có thể được di chuyển sang các phiên bản SQL Server cũ hơn. Nó hơi khó sử dụng, nhưng nó có thể được di chuyển ở mức vài phút ngay cả với khoảng 1 triệu dữ liệu, vì vậy nó cũng phù hợp cho việc di chuyển dữ liệu lớn. Tuy nhiên, lưu ý rằng các máy chủ nguồn và đích phải được kết nối trên mạng riêng và không thể được sử dụng giữa các máy chủ với các mạng hoàn toàn khác nhau.

điều kiện tiên quyết

Xây dựng xác thực SQL Server hoặc xác thực Windows để bạn có thể truy cập từng SQL Server từ pc sử dụng công cụ này.

Mẹo này sử dụng công cụ này từ máy chủ mà nó đã được di chuyển.

thủ tục

Chọn Nhập và Xuất Dữ liệu từ menu Bắt đầu. Nó được bao gồm trong một thư mục trong SQL Server, nhưng tên thư mục khác nhau tùy thuộc vào phiên bản SQL Server, vì vậy hãy tìm nó kịp thời.

Bấm Tiếp.

Chọn cơ sở dữ liệu mà bạn muốn di chuyển. Lần này nó đang chạy trên máy chủ nguồn, vì vậy bạn có thể vượt qua xác thực Windows.

Nhận xét giá trị thiết lập tên tham số
Nguồn dữ liệu SQL Server Native Client 11.0
Tên máy chủ (địa phương) Nếu đó là một máy chủ khác hoặc tên phiên bản được chỉ định, vui lòng đặt giá trị của nó
xác thực Xác thực Windows
cơ sở dữ liệu SampleDatabase Nhập tên của cơ sở dữ liệu mà bạn muốn thực sự di chuyển

Tiếp theo, đặt thiết đặt kết nối cho cơ sở dữ liệu đích. Xác thực SQL Server đang được sử dụng vì nó nằm trên một máy chủ khác.

Nhận xét giá trị thiết lập tên tham số
Nguồn dữ liệu SQL Server Native Client 11.0
Tên máy chủ Tên máy chủ đích (+ \tên phiên bản)]
xác thực Xác thực SQL Server
cơ sở dữ liệu SampleDatabase Nhập tên của cơ sở dữ liệu để thực sự di chuyển đến

Kiểm tra "Sao chép dữ liệu từ một hoặc nhiều bảng hoặc dạng xem" và nhấp vào nút tiếp theo.

Chọn bảng mà bạn muốn di chuyển. Danh sách này cũng hiển thị chế độ xem, vì vậy đừng kiểm tra nó.

Nếu tên bảng nguồn và đích giống nhau, bảng được di chuyển sẽ tự động được chọn. Nó cũng tự động đặt ánh xạ tên cột nếu tên cột giống nhau.

Dưới đây là một số điều cần lưu ý:

  • Nếu khóa chính được tự động đánh số, việc di chuyển sẽ thất bại nếu bạn không kiểm tra "Cho phép chèn ID" từ "Sửa ánh xạ"
  • Nếu không có bảng để di chuyển đến, một bảng sẽ được tạo ra
  • Nếu bảng đích không có cùng tên cột, nó sẽ không được di chuyển. Không tiếp tục di chuyển hoặc thay đổi cột đích.
  • Các bản ghi được thêm theo mặc định. Nếu bạn muốn thay thế nó, hãy xóa bản ghi tại đích trước hoặc kiểm tra "Xóa hàng trong bảng đích" khỏi "Sửa ánh xạ"

Trên thực tế, bạn phải xem xét những điều trên, nhưng trong Mẹo này, không có dữ liệu tại điểm đến và không có đánh số tự động, vì vậy bạn có thể tiến hành mà không cần đặt bất cứ điều gì.

Hãy chắc chắn rằng "Chạy ngay bây giờ" được kiểm tra và nhấp vào "Tiếp theo".

Bấm Xong.

Di chuyển dữ liệu bắt đầu. Đóng cửa khi tất cả các cuộc di chuyển hoàn tất.

Nếu bạn nhìn vào cơ sở dữ liệu đích, bạn có thể xác minh rằng một bảng không tồn tại đã được tạo. Bạn cũng có thể thấy rằng không còn cột cho các bảng hiện có.

Bạn có thể xác minh rằng dữ liệu đang được di chuyển. Các cột ghi chú trong bảng 2 không được ánh xạ và chưa được di chuyển.