העברת מידע בין שרתים

Transfer Packages between Servers

Darren Green
dgreen@swynk.com


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

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

להלן מדריך פשוט להעברת חבילות בצורה ישירה בין שרתים:

  1. צור חבילה חדשה
  2. הוסף קישורי  SQL Server עבור שרצי המקור והיעד תוך וידוא שאתה קובע את מסד הנתונים ל- msdb.
  3. קשר את השניים ע"י משימת טרנספורמציה (Data Pump) כמתואר למטה.

Connections with Transformation Task

מקור




משאבת נתונים



יעד

 

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

 

מקור:

עבור העברה פשוטה קבע את מאפיין ה Table/View ל- msdb].[dbo].[sysdtspackages]] . טבלאות מערכת אינן נגישות בקופסא הנפתחת, לכן עליך להקליד זאת ידנית, כמתואר למטה:

Source     for Transformation

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

בחר את הגירסה האחרונה בלבד:

SELECT T1.* FROM dbo.sysdtspackages AS T1
INNER JOIN (
	SELECT [name], [id], MAX([createdate]) AS [createdate]
	FROM dbo.sysdtspackages GROUP BY [name], [id]) AS T2
ON T1.[id]  =   T 2.[id] AND  T1.[createdate]  =     T2.[createdate]


בחר את X הגירסאות האחרונות כאשר X הוא מספר הגירסאות להעברה:

SELECT T1.* FROM dbo.sysdtspackages AS T1
INNER JOIN (
	SELECT T2.[name] , T2.[id], T2.[createdate] FROM dbo.sysdtspackages T2
	GROUP BY T2.[name], T2.[id], T2.[createdate]
	HAVING T2.[createdate] IN (SELECT TOP X T3.[createdate]
		FROM dbo.sysdtspackages T3
		WHERE T2.[id] = T3.[id]
		ORDER BY T3.[createdate] DESC) ) AS T2 
ON T1.[id] =  T2.[id] AND  T1.[createdate] =   T2.[createdate]

 

יעד:

טבלת היעד היא תמיד msdb].[dbo].[sysdtspackages]] . בדומה לטבלת המקור טבלאות מערכת אינן נגישות בקופסא הנפתחת, לכן עליך להקליד זאת ידנית.

 

טרנספורמציה:

השתמש ב-DTS כדי לקל באופן אוטומטי את ההעברות הקבועות כברירות מחדל – פשוט העתר עמודות טרנספורמציה בין העמודות המתאימות.

 

  חזרה למאמרים נבחרים


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