مراحل انتقال همه داده ها بین سرورها در SQL Server
محیط
- SQL Server
-
- SQL سرور 2019
- SQL سرور 2012
چگونه مهاجرت داده ها مهاجرت می شود و مزایا و معایب هر یک
راه های متعددی برای مهاجرت داده های پایگاه داده SQL سرور به SQL سرور در سرورهای دیگر به صورت عمده وجود دارد: هر کدام در طول مهاجرت مزایا و معایب خود را دارند، بنابراین روشی را انتخاب کنید که به بهترین وجه متناسب با محیط زیست شما باشد.
انتقال از طرح بندی جدول اندازه فایلروش اتصال | شبکه بین سرورهای | احراز هویت سنکرون | در طول انتقال | به نسخه های گذشته | |
---|---|---|---|---|---|
حمایت و بازگرداندن پایگاه داده ها | لازم نیست (انتقال فایل ها) | بد | عادی | مورد نیاز نیست (جایگزینی کامل خودکار) | غیر ضروری |
داده های خروجی به عنوان SQL | لازم نیست (انتقال فایل ها) | قابل عبور | بزرگ | مورد نیاز یا حذف شده به جدول | غیر ضروری |
استفاده از ابزار واردات و صادرات داده ها | ضروری بودن | قابل عبور | بدون | بسته به تنظیمات انتقال شما | ضرورت |
پیش شرط
- فرض کنید که SQL سرور و SQL سرور مدیریت استودیو بر روی هر سرور نصب شده است.
- این نکته جرات می کند تا نسخه های sql server را متفاوت کند.
ایجاد داده های نمونه
هنگام بحث در مورد انتقال داده ها، این کار را در پایگاه داده با پیکربندی جدول زیر انجام می دهید:
منبع انتقال داده ها
SQL سرور 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 سرور 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 سرور مدیریت استودیو از منبع. پوشه ای را انتخاب کنید که با نسخه SQL Server شما مطابقت داشته باشد.
وارد سرور هدف شوید. رایانه های شخصی با استفاده از SQL سرور مدیریت استودیو خوب در رایانه های شخصی دیگر هستند ، اما این نکات اجازه می دهد تا همه شما را بر روی سرورهای خود عمل می کنند.
از Object Explorer، روی پایگاه داده کلیک راست کنید و Backup for Tasks را انتخاب کنید.
مسیر پشتیبان گیری اولیه را در لیست مقصدهای پشتیبان در گوشه سمت راست پایین حذف کنید.
هنگامی که آن را حذف می کنید، روی دکمه افزودن کلیک کنید.
روی دکمه تغییر مسیر کلیک کنید.
من فکر می کنم که پوشه "پشتیبان گیری" به طور پیش فرض انتخاب شده است، بنابراین نام فایل را وارد کنید تا در نام فایل زیر پشتیبان گیری کنید و روی دکمه OK کلیک کنید. نام فایل اختیاری است، بنابراین درک آن را آسان کنید.
روی دکمه OK کلیک کنید.
بررسی کنید که به لیست اضافه شده است، و سپس روی دکمه OK کلیک کنید.
از آنجا که فایل پشتیبان در پوشه زیر ایجاد شده است ، من این فایل را به سرور که من می خواهم آن را به مهاجرت. مسیر پوشه بستگی به نسخه SQL Server و نام مثال دارد، بنابراین آن را به موقع بررسی کنید.
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup
وضعیت پس از کپی کردن در سرور مقصد. این است که در پوشه زیر قرار داده شده است چرا که آن را آسان تر به بار اگر شما آن را در پوشه پشتیبان گیری از SQL سرور قرار داده است. این نیز در نسخه SQL سرور و نام مثال بستگی دارد، بنابراین لطفا آن را در زمان به موقع بررسی کنید.
C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\Backup
شروع SQL سرور مدیریت استودیو بر روی سرور شما در حال مهاجرت به. شما در اینجا وارد سرور خود شده اید.
از Object Explorer، پایگاه داده مقصد را راست کلیک کنید و سپس وظایف، بازیابی و پایگاه داده را انتخاب کنید.
اطمینان حاصل کنید که جنرال در انتخاب صفحه سمت چپ انتخاب شده است، "دستگاه" را از "منبع" در سمت راست انتخاب کنید، و روی دکمه مرور در سمت راست کلیک کنید.
روی دکمه افزودن کلیک کنید.
پرونده ای که آورده بودی را انتخاب کنید.
"گزینه ها" را از انتخاب صفحه سمت چپ انتخاب کنید و دو مورد زیر را بررسی کنید. اگر شما این دو را بررسی کنید، شما می توانید برخی از سیستم های دیگر را مجبور به مبادله در حالی که به پایگاه داده متصل است.
- بازنویسی یک پایگاه داده موجود
- بستن اتصال موجود به پایگاه داده مقصد
با این حال، لطفا توجه داشته باشید که اگر بازگرداندن با شکست مواجه "بستن اتصال موجود به پایگاه داده مقصد" بررسی شده است، پایگاه داده اصلی ممکن است در دسترس نباشد.
هنگامی که بررسی می کنید، روی دکمه OK کلیک کنید.
شما می توانید تایید کنید که پیکربندی جدول و سوابق به طور کامل مهاجرت کرده اند.
اتفاقا اگر سعی کنید نسخه جدیدتر یک پایگاه داده SQL Server را به نسخه قدیمی تر SQL Server بازگرداند، خطای زیر را خواهید دید: این روش مهاجرت داده ها بر اساس همان نسخه به یکدیگر یا به نسخه جدیدتر است.
چگونه به: داده های خروجی به عنوان SQL (اسکریپت) و اجرای آن را در پایگاه داده مقصد
این است که چگونه به خروجی تمام سوابق در یک جدول به عنوان اظهارات درج. از آنجا که اظهارات SQL تقریبا مشابه هستند ، آنها را می توان به انواع دیگر از پایگاه داده ها در برخی موارد ، بدون در نظر گرفتن نسخه SQL سرور اعمال می شود.
با این حال، از آنجا که رکوردها برای درج جملات یک به یک نوشته می شوند، اندازه فایل افزایش می یابد. بنابراین با افزایش تعداد رکوردها، بی فایده است، بنابراین روشی است که زمانی می توان از آن استفاده کرد که عدد کوچک باشد.
همچنین SQL را برای جدولی که از آن مهاجرت کرده بود تولید می کند، بنابراین اگر با پیکربندی جدولی که به آن مهاجرت می کند متفاوت باشد، در دسترس نیست. شما همچنین می توانید شامل ایجاد یک جدول در SQL, اما شما باید یک بار حذف جدول در مقصد.
روش
شروع SQL سرور مدیریت استودیو از منبع. پوشه ای را انتخاب کنید که با نسخه SQL Server شما مطابقت داشته باشد.
وارد سرور هدف شوید. رایانه های شخصی با استفاده از SQL سرور مدیریت استودیو خوب در رایانه های شخصی دیگر هستند ، اما این نکات اجازه می دهد تا همه شما را بر روی سرورهای خود عمل می کنند.
راست کلیک بر روی پایگاه داده هدف و انتخاب "وظیفه" و "تولید اسکریپت".
روی بعدی کلیک کنید.
شما می توانید انتخاب کنید که جداول برای مهاجرت داده ها. همه را انتخاب کنید و یا یک جدول خاص در اینجا انتخاب کنید.
از آنجا که خروجی SQL است، شما می توانید "پرونده"، "Clipboard"، یا "نمایش در پنجره" را انتخاب کنید. پس از انتخاب، روی دکمه "پیشرفته" در سمت راست بالا کلیک کنید.
انتخاب داده ها تنها از "انواع داده ها برای تولید اسکریپت" در گروه عمومی.
پس از آن، "بعدی" را برای تأیید انتخاب کنید. شما می توانید ببینید که SQL تولید شده است. تنها چيزي که باقي مونده اينه که اين SQL رو روي مقصد اجرا کنيم
از آنجا که آن را فقط یک بیانیه درج است، اگر شما می خواهید داده ها به همان، شما نیاز به حذف تمام سوابق در مقصد در پیش.
پیکربندی جدول مهاجرت نیز هست
اگر همچنین می خواهید پیکربندی های جدول را مهاجرت دهید، انتخاب قبلی "نوع داده ها برای تولید اسکریپت ها" را به طرح کلی و داده ها تنظیم کنید.
یک اسکریپت ایجاد جدول نیز به صورت زیر تولید می شود: اگر می خواهید از این کار استفاده کنید، پس از حذف جدول اجرا می شود تا مهاجرت شود.
همچنین تولید یک اسکریپت ایجاد پایگاه داده اگر آن را نیز گنجانده شده است.
نحوه مهاجرت داده ها با استفاده از داده های واردات و صادرات
همانطور که شما نصب SQL سرور, شما همچنین نصب یک ابزار به نام واردات و صادرات داده ها. شما می توانید از آن برای انتقال داده ها از یک جدول به سرور دیگر استفاده کنید.
مزیت این انتقال ابزار این است که داده ها را می توان به نسخه های قدیمی تر SQL Server نیز انتقال داد. استفاده از آن کمی دشوار است، اما می توان آن را در سطح چند دقیقه حتی با حدود ۱ میلیون داده مهاجرت کرد، بنابراین برای مهاجرت داده های بزرگ نیز مناسب است. اما توجه داشته باشید که سرورهای منبع و مقصد باید در یک شبکه خصوصی به هم متصل شوند و نمی توانند بین سرورهایی با شبکه های کاملاً متفاوت مورد استفاده قرار گیرند.
پیش شرط
ساخت SQL سرور احراز هویت و یا احراز هویت ویندوز به طوری که شما می توانید هر SQL سرور از یک کامپیوتر است که با استفاده از این ابزار دسترسی داشته باشد.
این نکته از این ابزار از سروری که از آن مهاجرت کرده استفاده می کند.
روش
داده های واردات و صادرات را از منوی Start انتخاب کنید. این است که در یک پوشه در SQL سرور گنجانده شده است، اما نام پوشه بسته به نسخه SQL سرور متفاوت است، بنابراین به موقع به دنبال آن.
روی بعدی کلیک کنید.
پایگاه داده ای که می خواهید از آن مهاجرت کنید را انتخاب کنید. این بار آن را در حال اجرا بر روی سرور منبع, بنابراین شما می توانید از طریق احراز هویت ویندوز عبور.
نامپارامتر | تنظیم اظهارات | ارزش |
---|---|---|
منابع داده | SQL سرور مشتری بومی 11.0 | |
نام سرور | (محلی) | اگر یک سرور متفاوت است یا یک نام مثال مشخص شده است، لطفا ارزش آن را قرار دهید |
تأیید اعتبار | احراز هویت Windows | |
پایگاه داده | SampleDatabase | نام پایگاه داده ای را وارد کنید که در واقع می خواهید از آن مهاجرت کنید |
بعد، تنظیمات اتصال را برای پایگاه داده مقصد تنظیم کنید. تأیید هویت Sql Server در حال استفاده است زیرا بر روی یک سرور متفاوت است.
نامپارامتر | تنظیم اظهارات | ارزش |
---|---|---|
منابع داده | SQL سرور مشتری بومی 11.0 | |
نام سرور | نام سرور هدف (+ \instance name)] | |
تأیید اعتبار | احراز هویت SQL Server | |
پایگاه داده | SampleDatabase | نام پایگاه داده را وارد کنید تا در واقع مهاجرت به |
"کپی کردن داده ها از یک یا چند جدول یا نمایش" را بررسی کنید و روی دکمه بعدی کلیک کنید.
جدولی را که می خواهید مهاجرت کنید انتخاب کنید. این لیست نمایش را نیز نشان می دهد، بنابراین آن را بررسی نکنید.
اگر نام های جدول منبع و مقصد یکسان باشد، جدولی که باید مهاجرت شود به طور خودکار انتخاب می شود. همچنین در صورتی که نام های ستون یکسان باشد، نقشه برداری از نام های ستون را به طور خودکار تنظیم می کند.
در اینجا برخی از چیزهایی که باید به خاطر داشته باشید:
- اگر کلید اولیه خودکار باشد، اگر "اجازه درج شناسه" را از "نقشه برداری ویرایش" بررسی کنید، انتقال شکست خواهد خورد
- اگر جدولی برای مهاجرت به آن وجود ندارد، جدولی ایجاد می شود
- اگر جدول مقصد نام ستون یکسانی ندارد، مهاجرت نخواهد کرد. به مهاجرت یا تغییر ستون مقصد ادامه دهید.
- رکوردها به صورت پیش فرض اضافه می شوند. اگر می خواهید آن را جایگزین کنید، رکورد در مقصد را از قبل حذف کنید، یا "حذف ردیف ها در جدول مقصد" را از "ویرایش نقشه برداری" بررسی کنید
در واقع، شما باید موارد بالا را در نظر بگیرید، اما در این نکته، هیچ داده ای در مقصد وجود ندارد و شماره گذاری خودکار وجود ندارد، بنابراین شما می توانید بدون تنظیم چیزی ادامه دهید.
اطمینان حاصل کنید "اجرا در حال حاضر" بررسی شده و کلیک کنید "بعدی".
کلیک کنید انجام شده است.
مهاجرت داده ها آغاز می شود. زمانی که تمام مهاجرت ها کامل می شوند بسته می شوند.
اگر به پایگاه داده هدف نگاه کنید، می توانید تأیید کنید که جدولی که وجود نداشت ایجاد شده است. همچنین می بینید که دیگر ستون هایی برای جداول موجود وجود ندارد.
شما می توانید تایید کنید که داده ها در حال مهاجرت هستند. ستون های یادداشت در جدول ۲ نقشه برداری نشده اند و مهاجرت نشده اند.