שלבים להעברת כל הנתונים בין שרתים ב- SQL Server

תאריך יצירת דף :

סביבה

שרת SQL
  • SQL Server 2019
  • SQL Server 2012

אופן ההעברה של העברת נתונים והיתרונות והחסרונות של כל אחד מהם

קיימות מספר דרכים להעברת נתוני מסד נתונים של שרת SQL לשרת SQL בשרתים אחרים בצובר: לכל אחד מהם יש את היתרונות והחסרונות שלו במהלך ההעברה, לכן בחר את השיטה המתאימה ביותר לסביבה שלך.

של
קישוריות רשת בשיטת העברה בין שרתיםאימות סינכרונית פריסות טבלה בגודל קובץ במהלך העברה לגירסאות קודמות
גיבוי ושחזור של מסדי נתונים לא נדרש (העבר קבצים) רע רגילים לא נדרש (החלפה מלאה אוטומטית) מיותרים
פלט נתונים כ- SQL לא נדרש (העבר קבצים) סביר גדול נדרש או נמחק לטבלה מיותרים
שימוש בכלי ייבוא וייצוא של נתונים חיוניות סביר בלי בהתאם להגדרות ההעברה שלך הצורך

תנאי מוקדם

  • נניח ששרת SQL ו- SQL Server Management Studio מותקנים בכל שרת.
  • עצה זו מעזה להפוך את גירסאות שרת SQL לשונה.

יצירת נתונים לדוגמה

בעת דיון בהעברת נתונים, אתה עושה זאת במסד הנתונים עם תצורת הטבלה הבאה:

מקור העברת נתונים

SQL Server 2012

  • טבלה 1 (עמודה:מפתח, ערך)
  • טבלה 2 (עמודה:מפתח, ערך, הערות)
  • טבלה 3 (עמודה:מפתח, ערך)

להלן קובץ Script של יצירת מסד נתונים. שנה את הנתיב בזמן.

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

להלן קובץ Script של יצירת טבלה.

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

להלן קובץ Script נוסף של רשומה:

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 (עמודה:מפתח, ערך)

הרשומות בכל טבלה ריקות.

להלן קובץ Script של יצירת מסד נתונים. שנה את הנתיב בזמן.

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

להלן קובץ Script של יצירת טבלה.

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 Management Studio מהמקור. בחר תיקיה התואמת לגירסת SQL Server שלך.

היכנס לשרת היעד. מחשבים המשתמשים ב- SQL Server Management Studio הם בסדר במחשבים אחרים, אך עצות אלה מאפשרות לכולכם לפעול בשרתים שלכם.

מסייר האובייקטים, לחץ באמצעות לחצן העכבר הימני על מסד הנתונים ובחר גיבוי עבור משימות.

מחק את נתיב הגיבוי ההתחלתי ברשימת יעדי הגיבוי בפינה השמאלית התחתונה.

בעת מחיקתו, לחץ על לחצן הוסף.

לחץ על לחצן שנה נתיב.

אני חושב שהתיקיה "גיבוי" נבחרה כברירת מחדל, אז הזן את שם הקובץ כדי לגבות את שם הקובץ שלהלן ולחץ על לחצן אישור. שם הקובץ הוא אופציונלי, לכן הפוך אותו לקל להבנה.

לחץ על לחצן אישור.

ודא שהוא נוסף לרשימה ולאחר מכן לחץ על לחצן אישור.

מאחר שקובץ הגיבוי נוצר בתיקיה הבאה, אעביר קובץ זה לשרת שאליו ברצוני להעביר אותו. נתיב התיקיה תלוי בגירסת 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 Management Studio בשרת שאליו אתה עובר. אתה מחובר לשרת שלך כאן.

מתוך סייר האובייקטים, לחץ באמצעות לחצן העכבר הימני על מסד הנתונים המשמש כיעד ולאחר מכן בחר משימות, שחזור ומסד נתונים.

ודא שהאפשרות כללי נבחרה בבחירת העמוד הימני, בחר "התקן" מתוך "המקור" מימין ולחץ על לחצן עיון מימין.

לחץ על לחצן הוסף.

בחר את הקובץ שהבאת.

בחר "אפשרויות" מבחירת העמוד הימני ובדוק את השניים הבאים. אם תבדוק את שני אלה, באפשרותך לכפות על מערכת אחרת להחליף בעת חיבור למסד הנתונים.

  • החלפת מסד נתונים קיים
  • סגירת חיבור קיים למסד הנתונים המשמש כיעד

עם זאת, שים לב שאם השחזור נכשל עם "סגור חיבור קיים למסד הנתונים המשמש כיעד" מסומן, ייתכן שמסד הנתונים המקורי לא יהיה זמין.

בעת הבדיקה, לחץ על לחצן אישור.

באפשרותך לוודא שתצורת הטבלה והרשומות הועברו במלואן.

אגב, אם תנסה לשחזר גירסה חדשה יותר של מסד נתונים של SQL Server לגירסה ישנה יותר של SQL Server, תראה את השגיאה הבאה: שיטה זו של העברת נתונים מבוססת על אותה גירסה זה לזה או על גירסה חדשה יותר.

כיצד לבצע: פלט נתונים כ- SQL (Script) והפעל אותם במסד הנתונים המשמש כיעד

כך ניתן ליצור פלט של כל הרשומות בטבלה כהצעות הוספה. מאחר משפטי SQL הם כמעט זהים, ניתן להחיל אותם על סוגים אחרים של מסדי נתונים במקרים מסוימים, ללא קשר לגירסה של SQL Server.

עם זאת, מאחר שרשומות נכתבות כדי להוסיף משפטים בזה אחר זה, גודל הקובץ גדל. לכן, ככל שמספר הרשומות גדל, הוא חסר תועלת, ולכן זוהי שיטה שניתן להשתמש בה כאשר המספר קטן.

הוא גם יוצר SQL עבור הטבלה שממנה הוא הועבר, כך שהוא אינו זמין אם הוא שונה מתצורת הטבלה שאליה הוא מועבר. באפשרותך גם לכלול את יצירת הטבלה ב- SQL, אך עליך למחוק את הטבלה פעם אחת ביעד.

פרוצדורה

הפעל את SQL Server Management Studio מהמקור. בחר תיקיה התואמת לגירסת SQL Server שלך.

היכנס לשרת היעד. מחשבים המשתמשים ב- SQL Server Management Studio הם בסדר במחשבים אחרים, אך עצות אלה מאפשרות לכולכם לפעול בשרתים שלכם.

לחץ באמצעות לחצן העכבר הימני על מסד הנתונים המשמש כיעד ובחר "משימה" ו"צור סקריפט".

לחץ על הבא.

באפשרותך לבחור עבור אילו טבלאות להעביר נתונים. בחר הכל או בחר טבלה ספציפית כאן.

מאז הפלט הוא SQL, אתה יכול לבחור "קובץ", "לוח", או "הצג בחלון". לאחר הבחירה, לחץ על לחצן "מתקדם" בפינה השמאלית העליונה.

בחר נתונים רק מתוך "סוגי נתונים ליצירת קבצי Script" בקבוצה כללי.

לאחר מכן, בחר "הבא" כדי לאשר. באפשרותך לראות ש- SQL נוצר. כל מה שנשאר הוא להפעיל SQL זה על היעד.

מכיוון שמדובר במשפט הוספה בלבד, אם ברצונך שהנתונים יהיו זהים, עליך למחוק מראש את כל הרשומות ביעד.

העברת תצורות טבלה גם כן

אם ברצונך גם להעביר תצורות טבלה, הגדר את הבחירה הקודמת "סוג נתונים ליצירת קבצי Script" לסכימה ונתונים.

קובץ Script של יצירת טבלה נוצר גם הוא באופן הבא: אם ברצונך להשתמש באפשרות זו, היא תבוצע לאחר מחיקת הטבלה להעברה.

הוא גם יוצר קובץ Script של יצירת מסד נתונים אם הוא כלול גם הוא.

כיצד להעביר נתונים באמצעות ייבוא וייצוא של נתונים

בעת התקנת SQL Server, אתה מתקין גם כלי הנקרא ייבוא וייצוא של נתונים. באפשרותך להשתמש בו כדי להעביר נתונים מטבלה לשרת אחר.

היתרון של העברת כלים זו הוא שניתן להעביר נתונים גם לגירסאות ישנות יותר של SQL Server. זה קצת קשה לשימוש, אבל זה יכול להיות מועבר ברמה של כמה דקות אפילו עם כ 1 מיליון נתונים, ולכן זה מתאים גם להעברת נתונים גדולים. עם זאת, שים לב ששרתי המקור והיעד חייבים להיות מחוברים ברשת פרטית ואין אפשרות להשתמש בהם בין שרתים עם רשתות שונות לחלוטין.

תנאי מוקדם

בנה אימות SQL Server או אימות Windows כך שתוכל לגשת לכל שרת SQL ממחשב המשתמש בכלי זה.

עצה זו משתמשת בכלי זה מהשרת שממנו הוא הועבר.

פרוצדורה

בחר ייבוא וייצוא של נתונים מתפריט התחלה. הוא כלול בתיקיה ב- SQL Server, אך שם התיקיה משתנה בהתאם לגירסת SQL Server, לכן חפש אותו במועד.

לחץ על הבא.

בחר את מסד הנתונים שממנו ברצונך להעביר. הפעם הוא פועל בשרת המקור, כך שבאפשרותך לעבור דרך אימות Windows.

הערות ערך של הגדרת שם פרמטר
מקורות נתונים לקוח מקורי של שרת SQL 11.0
שם שרת (מקומי) אם זהו שרת אחר או אם צוין שם מופע, נא מקם את הערך שלו
אימות אימות של Windows
מסד נתונים SampleDatabase הזן את שם מסד הנתונים שממנו ברצונך להעביר בפועל

לאחר מכן, הגדר את הגדרות החיבור עבור מסד הנתונים המשמש כיעד. מתבצעת שימוש באימות שרת Sql מאחר שהוא נמצא בשרת אחר.

הערות ערך של הגדרת שם פרמטר
מקורות נתונים לקוח מקורי של שרת SQL 11.0
שם שרת שם שרת יעד (+ \שם מופע)]
אימות אימות שרת SQL
מסד נתונים SampleDatabase הזן את שם מסד הנתונים שאליו יש להעביר בפועל

סמן את "העתק נתונים מטבלה או מתצוגה אחת או יותר" ולחץ על לחצן הבא.

בחר את הטבלה שברצונך להעביר. רשימה זו מציגה גם את התצוגה, לכן אל תבדוק אותה.

אם שמות טבלאות המקור והיעד זהים, הטבלה שיש להעביר נבחרת באופן אוטומטי. הוא גם מגדיר באופן אוטומטי את מיפוי שמות העמודות אם שמות העמודות זהים.

הנה כמה דברים שכדאי לזכור:

  • אם המפתח הראשי הוא autonumered, ההעברה תיכשל אם לא תסמן "אפשר הכנסת מזהה" מתוך "עריכת מיפוי"
  • אם אין טבלאות שאליהן יש להעביר, נוצרת טבלה
  • אם לטבלת היעד אין שם עמודה זהה, היא לא תועבר. אל תמשיך להעביר או לשנות את עמודת היעד.
  • רשומות מתווספות כברירת מחדל. אם ברצונך להחליף אותה, מחק את הרשומה ביעד מראש, או סמן את "מחק שורות בטבלת היעד" מתוך "עריכת מיפוי"

למעשה, אתה צריך לשקול את האמור לעיל, אבל טיפים אלה, אין נתונים ביעד ואין מספור אוטומטי, כך שאתה יכול להמשיך מבלי להגדיר שום דבר.

ודא כי האפשרות "הפעל כעת" מסומנת ולחץ על "הבא".

לחץ על סיום.

העברת נתונים מתחילה. סגור לאחר השלמת כל ההעברות.

אם תסתכל על מסד הנתונים המשמש כיעד, באפשרותך לוודא שנוצרה טבלה שלא הייתה קיימת. באפשרותך גם לראות שאין עמודות נוספות עבור טבלאות קיימות.

באפשרותך לוודא שהנתונים מועברים. עמודות הערה בטבלה 2 אינן ממופות ולא הועברו.