אפשר שכפול טרנזקציות של מנויים מתחדשים ב- SQL Server 2019

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

מבוא ואמצעי זהירות

מאמר זה מיועד לשכפול ב- SQL Server 2019. אחד הפונקציות בו הוא "מנוי מתחדש" מופעל.

תכונה זו הופעלה כברירת מחדל בגירסאות קודמות של SQL Server, אך הושבתה מאז (כנראה) 2017.

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

הפניה

סביבה

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

יחידה ראשונה (צד הפרסום)
  • Windows Server 2019 מהדורה סטנדרטית
  • SQL Server 2019 מהדורת מפתחים (נדרש מהדורה רגילה ומעלה)
  • SQL Server Management Studio 18.9.1
יחידה שנייה (צד המנוי)
  • Windows Server 2019 מהדורה סטנדרטית
  • SQL Server 2019 מהדורה אקספרס
  • SQL Server Management Studio 18.9.1

תכלית

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

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

התקנת שרת SQL

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

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

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

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

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

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

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

הפוך הגדרה זו לאותה פעולה בשני השרתים.

התקנת SQL Server Management Studio

התקן את ה-SQL Server Management Studio שהורדת. מכיוון שמסך ההתקנה הוא רק להתקנה, ההסבר הושמט.

הפעל מחדש את Windows אם תתבקש להפעיל מחדש לאחר ההתקנה. כמו כן, התקן את כל התיקונים ב- Windows Update.

יצירת מסד נתונים וטבלאות בצד הפרסום

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

שיטת היצירה זהה להליך הרגיל, ולכן אשמיט את הפרטים.

אתה יוצר מסד נתונים בשם DB פרסום ב- SQL Server Management Studio.

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

הוסף כמה רשומות כדי לוודא שהרשומות מסונכרנות לאחר יצירת השכפול.

קביעת תצורה של חיבורים מרוחקים

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

הגדרת הרשאות תיקיה

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

  • C:\Program Files\Microsoft SQL Server\MSSQL15. MSSQLSERVER\MSSQL\ReplData

מהכרטיסיה אבטחה, הוסף את חשבון "SERVICE" והגדר אותו לשליטה מלאה.

קביעת תצורה של ההפצה

הפעם, ההפצה נוצרת על אותו שרת כמו הפרסום.

הפעל את SQL Server Management Studio, לחץ באמצעות לחצן העכבר הימני על שכפול ובחר הגדר הפצה.

לחץ על הבא.

בדוק את "הפוך שרת משלך > מפיץ משלך" <.

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

יצירת פרסום

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

לכן, אנו משתמשים ב- T-SQL כדי ליצור את הפרסום כאן.

להלן SQL ליצירת פרסום עם אימות SQL Server: אנא שנה את הסיסמה בהתאם להגדרות שלך.

-- トランザクションパブリケーションを追加するための宣言
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'パブリケーションDB'; 
SET @publication = N'パブリケーション'; 
SET @login = 'sa'; 
SET @password = 'saパスワード'; 

USE [パブリケーションDB]

-- パブリケーションデータベースでトランザクションレプリケーションを有効にする。
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- sp_addlogreader_agent を実行して、エージェントジョブを作成します。
EXEC sp_addlogreader_agent 
    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;

-- 即時更新、キュー更新、およびプルサブスクリプションをサポートするトランザクションパブリケーションを作成します。
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_sync_tran = N'true', 
    @allow_queued_tran = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true',
    -- 関連するデフォルトのプロパティを明示的に宣言する
    @conflict_policy = N'pub wins';

-- デフォルトのスケジュールを使用して、パブリケーションの新しいスナップショットジョブを作成します。
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;
GO

בעת שימוש באימות Windows, שנה את החלקים "sp_addlogreader_agent" ו- "sp_addpublication_snapshot" באופן הבא.

אימות שרת SQL

    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;

אימות Windows

    @job_login = @login, 
    @job_password = @password,
    @publisher_security_mode = 1;

אם הוא נוצר בהצלחה, תראה את הדברים הבאים:

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

ציון מאמרים

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

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

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

יצירת מנוי

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

לחץ על הבא.

בחר את הפרסום שיצרת.

בדוק הפעל את כל הסוכנים ב- Distributor <שם שרת>.

לחץ על לחצן הוסף מנוי לשרת SQL.

מציין את השרת (+ שם המופע) כדי להירשם כמנוי.

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

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

אם יש לך יותר ממנוי אחד, אתה יכול לרשום כמה שאתה צריך כאן.

לחץ על כפתור "..."

כאן, הסוכן פועל תחת חשבון sa, אך אנא הגדר אותו בהתאם לסביבה שלך.

בחר הפעל ברציפות.

ההגדרה "מנוי מתחדש" צריכה להיות מבצעית.

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

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

בדוק השתמש בשרת מקושר או מרוחק מוגדר מראש.

בחר עכשיו.

לחץ על הבא.

לחץ על לחצן סיום.

סגור אם אין שגיאות.

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

באפשרותך לוודא שגם הרשומות מסונכרנות.

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

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

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

אם מתרחשת שגיאה, נסה שוב.

בדיקת מבצע

נסה להוסיף או לשנות טבלאות בצד הפרסום.

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

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

באפשרותך לוודא שהוא מסונכרן לצד הפרסום.

אם רשומים מספר מנויים, ודא שהם מסונכרנים בין המנויים.