SQL सर्वर में सर्वर के बीच सभी डेटा माइग्रेट करने के लिए चरण
पर्यावरण
- SQL सर्वर
-
- SQL सर्वर 2019
- SQL सर्वर 2012
डेटा माइग्रेशन कैसे माइग्रेट किया जाता है और प्रत्येक के फायदे और नुकसान
SQL Server डेटाबेस डेटा को SQL Server पर अन्य सर्वरों पर बल्क में माइग्रेट करने के कई तरीके हैं: माइग्रेशन के दौरान प्रत्येक के अपने फायदे और नुकसान हैं, इसलिए उस विधि का चयन करें जो आपके पर्यावरण के लिए सबसे अच्छा है।
सर्वर के बीच में माइग्रेशन केमाइग्रेशन विधि | नेटवर्क कनेक्टिविटी | पिछले संस्करणों | दौरान फ़ाइल आकार तालिका लेआउट का | पूर्व-तुल्यकालिक | प्रमाणीकरण |
---|---|---|---|---|---|
बैकअप लेना और डेटाबेस पुनर्स्थापित करना | आवश्यक नहीं है (फ़ाइलें ले जाएँ) | ख़राब | साधारण | आवश्यक नहीं है (स्वचालित पूर्ण प्रतिस्थापन) | अनावश्यक |
आउटपुट डेटा SQL के रूप में | आवश्यक नहीं है (फ़ाइलें ले जाएँ) | गम्य | बडा | आवश्यक या तालिका में हटाया गया | अनावश्यक |
उपकरण आयात और निर्यात डेटा का उपयोग करें | जरुरत | गम्य | के बिना | आपकी माइग्रेशन सेटिंग्स के आधार पर | आवश्यकता |
पूर्व शर्त
- मान लें कि SQL सर्वर और SQL सर्वर प्रबंधन स्टूडियो प्रत्येक सर्वर पर स्थापित हैं।
- यह युक्तियाँ SQL सर्वर संस्करणों को अलग बनाने की हिम्मत करती हैं।
नमूना डेटा बनाएँ
डेटा माइग्रेशन पर चर्चा करते समय, आप निम्न तालिका कॉन्फ़िगरेशन के साथ डेटाबेस में ऐसा करते हैं:
डेटा माइग्रेशन स्रोत
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 Server Management Studio का उपयोग करने वाले PC अन्य PC पर ठीक हैं, लेकिन यह युक्तियाँ आप सभी को अपने स्वयं के सर्वर पर काम करने देती हैं।
ऑब्जेक्ट Explorer से, डेटाबेस राइट-क्लिक करें और कार्यों के लिए बैकअप का चयन करें।
निचले दाएँ कोने में बैकअप गंतव्यों की सूची में प्रारंभिक बैकअप पथ हटाएँ।
जब आप इसे हटाते हैं, तो जोड़ें बटन क्लिक करें.
पथ परिवर्तित करें बटन क्लिक करें.
मुझे लगता है कि "बैकअप" फ़ोल्डर डिफ़ॉल्ट रूप से चुना गया है, इसलिए नीचे दिए गए फ़ाइल नाम में बैकअप लेने के लिए फ़ाइल नाम दर्ज करें और ठीक बटन पर क्लिक करें। फ़ाइल का नाम वैकल्पिक है, इसलिए इसे समझना आसान बनाएं।
ठीक बटन क्लिक करें।
सत्यापित करें कि इसे सूची में जोड़ा गया है, और उसके बाद ठीक बटन क्लिक करें।
चूंकि बैकअप फ़ाइल निम्न फ़ोल्डर में बनाई गई है, इसलिए मैं इस फ़ाइल को उस सर्वर पर ले जाऊंगा जिस पर मैं इसे माइग्रेट करना चाहता हूं। फ़ोल्डर पथ SQL सर्वर के संस्करण और आवृत्ति के नाम पर निर्भर करता है, इसलिए इसे समय पर तरीके से जाँचें।
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup
गंतव्य सर्वर पर प्रतिलिपि बनाने के बाद स्थिति. यदि आप इसे SQL Server के बैकअप फ़ोल्डर में रखते हैं, तो इसे लोड करना आसान है, क्योंकि इसे निम्न फ़ोल्डर में रखा गया है। यह SQL सर्वर के संस्करण और आवृत्ति नाम पर भी निर्भर करता है, इसलिए कृपया इसे समय पर तरीके से जांचें।
C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\Backup
SQL Server प्रबंधन स्टूडियो उस सर्वर पर प्रारंभ करें जिस पर आप माइग्रेट कर रहे हैं. आप यहाँ अपने सर्वर पर लॉग इन हैं.
ऑब्जेक्ट Explorer से, गंतव्य डेटाबेस राइट-क्लिक करें, और उसके बाद कार्य, पुनर्स्थापना, और डेटाबेसका चयन करें।
सुनिश्चित करें कि सामान्य बाएँ पृष्ठ चयन में चयनित है, दाईं ओर "स्रोत" से "डिवाइस" का चयन करें, और दाईं ओर ब्राउज़ बटन पर क्लिक करें।
जोड़ें बटन क्लिक करें.
उस फ़ाइल का चयन करें जिसे आप लाए हैं.
बाएँ पृष्ठ के चयन से "विकल्प" का चयन करें और निम्न दो की जाँच करें। यदि आप इन दोनों की जाँच करते हैं, तो आप डेटाबेस से कनेक्ट होने के दौरान किसी अन्य सिस्टम को स्वैप करने के लिए बाध्य कर सकते हैं.
- किसी मौजूदा डेटाबेस को अधिलेखित करें
- गंतव्य डेटाबेस के लिए कोई मौजूदा कनेक्शन बंद करें
हालाँकि, कृपया ध्यान दें कि "गंतव्य डेटाबेस के लिए मौजूदा कनेक्शन बंद करें" के साथ पुनर्स्थापना विफल रहता है, तो मूल डेटाबेस उपलब्ध नहीं हो सकता है।
जब आप जाँचकरें, तो ठीक बटन क्लिक करें.
आप सत्यापित कर सकते हैं कि तालिका कॉन्फ़िगरेशन और रिकॉर्ड ्स पूरी तरह माइग्रेट किए गए हैं.
संयोग से, यदि आप SQL Server डेटाबेस के किसी नए संस्करण को SQL Server के पुराने संस्करण में पुनर्स्थापित करने का प्रयास करते हैं, तो आपको निम्न त्रुटि दिखाई देगी: डेटा माइग्रेशन की यह विधि एक दूसरे के लिए या एक नए संस्करण के लिए एक ही संस्करण पर आधारित है।
करने के लिए कैसे: आउटपुट डेटा SQL (स्क्रिप्ट) के रूप में और गंतव्य डेटाबेस पर चलाएँ
यह है कि किसी तालिका में सभी रिकॉर्ड्स को सम्मिलित कथनों के रूप में आउटपुट कैसे करें. SQL कथन लगभग समान हैं, क्योंकि वे SQL Server के संस्करण की परवाह किए बिना, कुछ मामलों में डेटाबेस के अन्य प्रकार के लिए लागू किया जा सकता है।
हालांकि, चूंकि रिकॉर्ड एक-एक करके वाक्यों को सम्मिलित करने के लिए लिखे जाते हैं, इसलिए फ़ाइल का आकार बढ़ जाता है। इसलिए, जैसे-जैसे रिकॉर्ड की संख्या बढ़ती है, यह बेकार है, इसलिए यह एक ऐसी विधि है जिसका उपयोग संख्या कम होने पर किया जा सकता है।
यह उस तालिका के लिए SQL भी उत्पन्न करता है जिसमें से इसे माइग्रेट किया गया था, इसलिए यह उपलब्ध नहीं है यदि यह उस तालिका कॉन्फ़िगरेशन से भिन्न है जिसमें यह माइग्रेट किया गया है। आप SQL में किसी तालिका का निर्माण भी शामिल कर सकते हैं, लेकिन आपको गंतव्य पर एक बार तालिका को हटाना होगा.
प्रक्रिया
स्रोत से SQL सर्वर प्रबंधन स्टूडियो प्रारंभ करें। अपने SQL Server संस्करण से मेल खाता है जो किसी फ़ोल्डर का चयन करें।
लक्ष्य सर्वर पर लॉग इन करें। SQL Server Management Studio का उपयोग करने वाले PC अन्य PC पर ठीक हैं, लेकिन यह युक्तियाँ आप सभी को अपने स्वयं के सर्वर पर काम करने देती हैं।
लक्ष्य डेटाबेस पर राइट-क्लिक करें और "कार्य" और "स्क्रिप्ट जनरेट करें" का चयन करें।
अगलाक्लिक करें।
आप चुन सकते हैं कि किन तालिकाओं के लिए डेटा माइग्रेट करना है. सभी का चयन करें या यहाँ एक विशिष्ट तालिका का चयन करें।
चूंकि आउटपुट SQL है, इसलिए आप "फ़ाइल", "क्लिपबोर्ड", या "विंडो में दिखाएँ" का चयन कर सकते हैं. एक बार चुने जाने के बाद, शीर्ष दाईं ओर "उन्नत" बटन पर क्लिक करें।
सामान्य समूह में केवल "स्क्रिप्ट जनरेट करने के लिए डेटा के प्रकार" से डेटा का चयन करें.
उसके बाद, पुष्टि करने के लिए "अगला" चुनें। आप देख सकते हैं कि SQL जनरेट किया गया है। जो कुछ भी बचा है वह गंतव्य पर इस SQL को चलाने के लिए है।
चूंकि यह सिर्फ एक सम्मिलित कथन है, यदि आप डेटा को समान बनाना चाहते हैं, तो आपको गंतव्य पर सभी रिकॉर्ड को पहले से हटाने की आवश्यकता है।
तालिका कॉन्फ़िगरेशन भी माइग्रेट करें
यदि आप भी तालिका कॉन्फ़िगरेशन माइग्रेट करना चाहते हैं, तो स्कीमा और डेटा पर पिछला "स्क्रिप्ट जनरेट करने के लिए डेटा का प्रकार" चयन सेट करें.
एक तालिका निर्माण स्क्रिप्ट भी निम्नानुसार जनरेट किया गया है: यदि आप इसका उपयोग करना चाहते हैं, तो माइग्रेट की जाने वाली तालिका को हटाने के बाद इसे निष्पादित किया जाएगा।
यह एक डेटाबेस निर्माण स्क्रिप्ट भी उत्पन्न करता है यदि यह भी शामिल है।
आयात और निर्यात डेटा का उपयोग करके डेटा माइग्रेट करने के लिए कैसे करें
जैसे ही आप SQL Server स्थापित करते हैं, आप आयात और निर्यात डेटा नामक उपकरण भी स्थापित करते हैं. आप इसका उपयोग किसी तालिका से किसी अन्य सर्वर पर डेटा माइग्रेट करने के लिए कर सकते हैं.
इस उपकरण माइग्रेशन का लाभ यह है कि डेटा को SQL Server के पुराने संस्करणों में माइग्रेट भी किया जा सकता है. इसका उपयोग करना थोड़ा मुश्किल है, लेकिन इसे लगभग 1 मिलियन डेटा के साथ भी कई मिनटों के स्तर पर माइग्रेट किया जा सकता है, इसलिए यह बड़े डेटा माइग्रेशन के लिए भी उपयुक्त है। हालांकि, ध्यान दें कि स्रोत और गंतव्य सर्वर एक निजी नेटवर्क पर कनेक्ट होना चाहिए और पूरी तरह से अलग नेटवर्क वाले सर्वरों के बीच उपयोग नहीं किया जा सकता है।
पूर्व शर्त
SQL सर्वर प्रमाणीकरण या Windows प्रमाणीकरण बनाएँ ताकि आप इस उपकरण का उपयोग करता है जो किसी PC से प्रत्येक SQL सर्वर तक पहुँच सकते हैं।
यह युक्तियाँ उस सर्वर से इस उपकरण का उपयोग करती हैं जिससे इसे माइग्रेट किया गया था.
प्रक्रिया
प्रारंभ मेनू से डेटा आयात और निर्यात करें का चयन करें. यह SQL Server में किसी फ़ोल्डर में शामिल है, लेकिन फ़ोल्डर का नाम SQL Server के संस्करण के आधार पर भिन्न होता है, इसलिए इसे समय पर तरीके से देखें।
अगलाक्लिक करें।
उस डेटाबेस का चयन करें जिसमें से आप माइग्रेट करना चाहते हैं. इस बार यह स्रोत सर्वर पर चल रहा है, इसलिए आप विंडोज प्रमाणीकरण के माध्यम से पारित कर सकते हैं।
पैरामीटर नाम | सेटिंग मान | टिप्पणियाँ |
---|---|---|
डेटा स्रोत | SQL सर्वर मूल क्लाइंट 11.0 | |
सर्वर नाम | (स्थानीय) | यदि यह एक भिन्न सर्वर है या कोई आवृत्ति नाम निर्दिष्ट किया गया है, तो कृपया इसका मान रखें |
प्रमाणीकरण | Windows प्रमाणीकरण | |
डेटाबेस | SampleDatabase | उस डेटाबेस का नाम दर्ज करें जिसमें से आप वास्तव में माइग्रेट करना चाहते हैं |
अगला, गंतव्य डेटाबेस के लिए कनेक्शन सेटिंग्स सेट करें। Sql Server प्रमाणीकरण का उपयोग किया जा रहा है क्योंकि यह किसी भिन्न सर्वर पर है.
पैरामीटर नाम | सेटिंग मान | टिप्पणियाँ |
---|---|---|
डेटा स्रोत | SQL सर्वर मूल क्लाइंट 11.0 | |
सर्वर नाम | लक्ष्य सर्वर नाम (+ \आवृत्ति नाम)] | |
प्रमाणीकरण | SQL सर्वर प्रमाणन | |
डेटाबेस | SampleDatabase | वास्तव में माइग्रेट करने के लिए डेटाबेस का नाम दर्ज करें |
"एक या अधिक तालिकाओं या दृश्यों से डेटा की प्रतिलिपि बनाएँ" की जाँच करें और अगले बटन पर क्लिक करें.
उस तालिका का चयन करें जिसे आप माइग्रेट करना चाहते हैं. यह सूची दृश्य भी दिखाती है, इसलिए इसकी जाँच न करें.
यदि स्रोत और गंतव्य तालिका नाम समान हैं, तो माइग्रेट की जाने वाली तालिका स्वचालित रूप से चयनित होती है. यदि स्तंभ नाम समान हैं, तो यह स्वचालित रूप से स्तंभ नामों की मैपिंग भी सेट करता है.
यहां ध्यान में रखने के लिए कुछ चीजें दी गई हैं:
- यदि प्राथमिक कुंजी स्वत: क्रमांकित है, तो यदि आप "मैपिंग संपादित करें" से "ID सम्मिलन की अनुमति दें" की जाँच नहीं करते हैं, तो माइग्रेशन विफल हो जाएगा
- यदि माइग्रेट करने के लिए कोई तालिकाएँ नहीं हैं, तो कोई तालिका बनाई जाती है
- यदि गंतव्य तालिका में समान स्तंभ नाम नहीं है, तो इसे माइग्रेट नहीं किया जाएगा. गंतव्य स्तंभ को माइग्रेट या परिवर्तित करना जारी न रखें.
- रिकॉर्ड डिफ़ॉल्ट रूप से जोड़े जाते हैं. यदि आप इसे बदलना चाहते हैं, तो पहले से गंतव्य पर रिकॉर्ड हटाएँ, या "मैपिंग संपादित करें" से "गंतव्य तालिका में पंक्तियाँ हटाएँ" की जाँच करें
वास्तव में, आपको उपरोक्त पर विचार करना होगा, लेकिन इस युक्तियों में, गंतव्य पर कोई डेटा नहीं है और कोई स्वचालित नंबरिंग नहीं है, इसलिए आप कुछ भी सेट किए बिना आगे बढ़ सकते हैं।
सुनिश्चित करें कि "अभी चलाएँ" की जाँच की गई है और "अगला" पर क्लिक करें।
पूर्ण क्लिक करें.
डेटा माइग्रेशन प्रारंभ होता है। सभी माइग्रेशन पूर्ण होने पर बंद करें.
यदि आप लक्ष्य डेटाबेस को देखते हैं, तो आप सत्यापित कर सकते हैं कि कोई तालिका जो मौजूद नहीं थी वह बनाई गई है. आप यह भी देख सकते हैं कि मौजूदा तालिकाओं के लिए कोई और स्तंभ नहीं हैं.
आप सत्यापित कर सकते हैं कि डेटा माइग्रेट किया जा रहा है. नोट तालिका 2 में स्तंभ मैप नहीं किए गए हैं और माइग्रेट नहीं किए गए हैं.